Experiences with Oracle WebCenter 11g: Implementing SOA with a User InterfacePeter EbellLucas Jellema AMIS, The Netherlands
AgendaSOA - what and whyWebServices with a face – PortletsUI Services with ADF Task FlowsIntroducing WebCenterPortlet infrastructurePre-packaged task flow servicesPutting a User Interface on the SOA SuiteSummary
SOA = BAD
BusinessAgility throughDecouplingSOA =
SOA ConceptsServices with standardized ContractsProducers and ConsumersCross-platform/technologyIndependent development/management of ComponentsDecouplingEvents
Potential SOA BenefitsReduce ComplexityFlexibility – capacity to change and adaptQuickly (time to market, prototype)With lower impact and riskThrough (re-)composition and (re-)organizationBest of breed solutionsReuseIntegration (!)
Traditional SOA: Programmatic ServicesTypical Components:Application ( = Consumer)Webservices and WSDL ( = Service + Contract)Enterprise Service Bus ( = Service Provider)Queues (= Events and Event Listeners)
A2A oriented SOAApp AApp BCMSSocial APILDAPWorkflowEngineApp DApp CValidationServiceService APIService APICMSEmailIMFax8
SOA and UI – Different Worlds?Some services require or interact with a user interface. For instance: BPEL process containing Human Tasks.Taking it one step further: some user interfaces can be treated/offered/used like services!
UI Application can be a Service tooApplications can be exposed as a collection of UI services -  user interface components based on data and (data)servicesFor example in the form of "portlets" that can be consumed by a Portal product in a mash upData
Remember the SOA Concepts?Services with standardized ContractsProducers and ConsumersCross-platform/technologyIndependent development/management of componentsDecouplingEvents
Applying SOA Concepts to UI:WSRP PortletsWSRP Standard: WebService for Remote PortletExposed by Portlet Container (or Provider) Portlet renders its own UI/the content (HTML)Contract includes (input) parameters (String or String[]) and events (out, simple payload)Called by Portal/Portlet consumerPortlets can deal with data manipulation, events, navigation, AJAX and partial refresh
Portlet and DecouplingJust like normal web servicesPortlets can be located anywhere(we only need URL for endpoint)Portlets can be implemented in any technology – as long as the standards are followedThe implementation of Portlets can changeas long as the contract (parameters/events) is safeIdeally the Portlet uses (style) classes and allows the consumer to apply the stylesheet
Drawing the AnalogyTraditional SOA Components:Application ( = Consumer)Webservices ( = Service + Contract)Enterprise Service Bus ( = Service Provider)Queues (= Events and Event Listeners)WSRP Portlet Components:Portal ( = Consumer)WRSP Portlets ( = Service + Contract)Portlet Providers ( = Service Provider) Produces events for Portal (= Events and Event Listeners)
SOA and SaaS ProvidersSaaS (Software as a Service) providers are facing a double SOA challenge:Provide a (normal SOA) Web Service interfaceallows SaaS customers to integrate their functionality in their  local ESBProvide a UI Service interface that exposes pluggable application componentsallow SaaS customers to embed UI ‘services’ in their   applications/portal
SaaS providers need to open up their application – also the UISaaS BSaaS ADeep linkInterfaceCMSDeep linkInterfaceSocial APIPortlet APIHTMLPagesPortlet APIRSSRSSinternetinternalToDoNewsWorkflowEngineApp DApp CPortlet APIPortlet APIRSSCMSEmailIMFax16
Demonstration of Portletsshow a web application consuming several portletscreate a new web application that consumes two portletschange one of the portlets and redeploy it; refresh the 'portals' - the consuming webapps in the browser
Remote.NET  basedLocal (in container)Generic, resuableRun Time editingLocal and Remote Remote Service adaptation (WebClipping)Run Time editingParameter based synchronizationLocalReusableParameter based synchronizationPublishes Events
Consuming Portlets
Consuming Portlets (2)todoUpdateEvent
Portlet consumer interacting with Portlets and ProvidersRemote .NET based Portlet ProviderPortal-in-a-BoxWebCenterPortlet Container & ProvidertigerMedHighLowPrepackaged PortletsCustomPortlets
Conclusions PortletsWhat it doesInteroperability, Cross technologyContract (params & events) supports interactionIndependent development and deploymentWhere it fails/falls shortEverything stays inside portal regionNo styling/skinning adoptedNo shared transaction context Consumer depends on portlet (availability)Requires Portlet infrastructure (e.g. Portal)
Alternative: ADF Task FlowsWith Oracle ADF (underlying UI technology of WebCenter) comes an alternative way to develop UI Services: ADF Task Flows ADF Task flows are Portlet-like in many respects: stand alone, independently developable, reusable UI componentTask Flow = one or multistep view, internal business logic, navigation flow, beans, …
Task Flow ContractLike Portlets, ADF Task Flows adhere to a Contract (native ADF).Input:Parameters (initial)EventsNavigation commandsOutput(Changed) ParametersEventsNavigation events
ADF Task Flow CapabilitiesADF does not require Portlets in order to work with service-like reusable componentsTask Flows are published via ADF Libraries and can be consumed more natively than PortletsLess overhead (saves 300 ms per request)Consumer and Task Flow can share Objects and ADF DataBindingSupports complex parameters & ADF eventsCan be customizedNo WebCenter license required…
Example: Human Task UI in SOA Suite
Demo Task FlowsShow how a existing task flow (TODO) can be published as ADF library and incorporated in other applicationShow how far the integration can go:ParametersEvents (in and out)JavaScript sharingSkinningClient side – detach table uses full screen
Deploy and Reuse ADF Library
Add reusable task flow to page
Meanwhile…
Task Flow contract elementsparameterseventNav commandJS custom eventSave Task EventNavigationEventJS custom event
(server side) Event handlingTodo Task FlowTask Flow Consumer
Conclusions on ADF Task FlowsStand alone, reusable componentsInterface with Parameters and EventsThough not a very clear contract documentComplex parameters and event payloadFully Integrated in consuming ADF applicationSkin, Data Controls, Transactions, JavaScript scopeDeployed as part of the consuming applicationPotentially multiple copies of the task flow – for every application using it‘native/standard’ ADF mechanism
Comparing UI Service technologiesPortletTask FlowRemoteCross TechnologyStandards basedProcessing overheadSlower page renderingDesign Time and Run Time decouplingRemote provider has to be upNeeds portlet consumption framework, e.g. WebCenterAnd portlet publicationLocal, native, ADF onlySharedData ControlsTransaction contextSkin/StyleClient side JavaScript & UIRich ContractComplex parametersEvents out and inWith complex payloadNavigation influenceSupport for customization
Development with Portlets & Task FlowsThe use of Portlets and Task Flows allows for a decoupled way of developing applicationsTeams agree on a contractAnd both work their merry way based on the contract – in fairly insulated mannerReuse is possible based on that contractMaintenance of Portlet and Task Flow can be independent of consuming applicationsNote: task flow is integrated at design time
Real life exampleHealth Insurance companyWants to expose Web Application in its PortalFor filing expenses and checking on the progress of claim processingPortal not yet pickedWebApp Integration should be decoupledSolution: expose parts of the WebApp as Portlet that can be integrated in PortalWeb app developers are insulated from PortalContract specifies parameters and events
Decouple pointsPortlet Container & ProviderDatabasePortalESBDatabaseWebServiceCMS
Some questionsHow does one create and publish a Portlet?How does one simply consume a Portlet in her or his application?Can an application manager or content editor add/remove portlets/taskflows– at run time?Where does one get those pre-built portlets/task flows for generic functionality?
Introduction WebCenterWebCenter == ADF++
WebCenter 11gWebCenter FrameworkPublish ADF TaskFlows as PortletConsume any Portlet in ADF pages (drag & drop)Content integrationWebCenter ComposerRun time applicationeditingRun time task flow inclusionWC Spaces: pre builtapplication for E2.0
WebCenter Services100+ pre-packaged task flowsADF 11g task flowsBacked by  database & MDSMutually integratedSupport for Content, Collaboration, CommunicationWeb 2.0 style
WebCenter ServicesAfter installing the WebCenter extension in JDeveloper– the catalog of services (task flows) is availableTo use a service:* drag it* drop it * set the values   for the params* (optional)   customize the   task flow
DemoLeveraging WebCenter ServicesReuse RSS ViewerReuse Document LibraryBased on WebCenterContent Repository Connection
Create Content Repository connection – File System based
Consume WC Services in page
Consume WC Services (2)
RSS Feed Viewer live
DocumentLibrary Service Live

Experiences with Oracle WebCenter 11g: Implementing SOA with a User Interface

  • 1.
    Experiences with OracleWebCenter 11g: Implementing SOA with a User InterfacePeter EbellLucas Jellema AMIS, The Netherlands
  • 2.
    AgendaSOA - whatand whyWebServices with a face – PortletsUI Services with ADF Task FlowsIntroducing WebCenterPortlet infrastructurePre-packaged task flow servicesPutting a User Interface on the SOA SuiteSummary
  • 3.
  • 4.
  • 5.
    SOA ConceptsServices withstandardized ContractsProducers and ConsumersCross-platform/technologyIndependent development/management of ComponentsDecouplingEvents
  • 6.
    Potential SOA BenefitsReduceComplexityFlexibility – capacity to change and adaptQuickly (time to market, prototype)With lower impact and riskThrough (re-)composition and (re-)organizationBest of breed solutionsReuseIntegration (!)
  • 7.
    Traditional SOA: ProgrammaticServicesTypical Components:Application ( = Consumer)Webservices and WSDL ( = Service + Contract)Enterprise Service Bus ( = Service Provider)Queues (= Events and Event Listeners)
  • 8.
    A2A oriented SOAAppAApp BCMSSocial APILDAPWorkflowEngineApp DApp CValidationServiceService APIService APICMSEmailIMFax8
  • 9.
    SOA and UI– Different Worlds?Some services require or interact with a user interface. For instance: BPEL process containing Human Tasks.Taking it one step further: some user interfaces can be treated/offered/used like services!
  • 10.
    UI Application canbe a Service tooApplications can be exposed as a collection of UI services - user interface components based on data and (data)servicesFor example in the form of "portlets" that can be consumed by a Portal product in a mash upData
  • 11.
    Remember the SOAConcepts?Services with standardized ContractsProducers and ConsumersCross-platform/technologyIndependent development/management of componentsDecouplingEvents
  • 12.
    Applying SOA Conceptsto UI:WSRP PortletsWSRP Standard: WebService for Remote PortletExposed by Portlet Container (or Provider) Portlet renders its own UI/the content (HTML)Contract includes (input) parameters (String or String[]) and events (out, simple payload)Called by Portal/Portlet consumerPortlets can deal with data manipulation, events, navigation, AJAX and partial refresh
  • 13.
    Portlet and DecouplingJustlike normal web servicesPortlets can be located anywhere(we only need URL for endpoint)Portlets can be implemented in any technology – as long as the standards are followedThe implementation of Portlets can changeas long as the contract (parameters/events) is safeIdeally the Portlet uses (style) classes and allows the consumer to apply the stylesheet
  • 14.
    Drawing the AnalogyTraditionalSOA Components:Application ( = Consumer)Webservices ( = Service + Contract)Enterprise Service Bus ( = Service Provider)Queues (= Events and Event Listeners)WSRP Portlet Components:Portal ( = Consumer)WRSP Portlets ( = Service + Contract)Portlet Providers ( = Service Provider) Produces events for Portal (= Events and Event Listeners)
  • 15.
    SOA and SaaSProvidersSaaS (Software as a Service) providers are facing a double SOA challenge:Provide a (normal SOA) Web Service interfaceallows SaaS customers to integrate their functionality in their local ESBProvide a UI Service interface that exposes pluggable application componentsallow SaaS customers to embed UI ‘services’ in their applications/portal
  • 16.
    SaaS providers needto open up their application – also the UISaaS BSaaS ADeep linkInterfaceCMSDeep linkInterfaceSocial APIPortlet APIHTMLPagesPortlet APIRSSRSSinternetinternalToDoNewsWorkflowEngineApp DApp CPortlet APIPortlet APIRSSCMSEmailIMFax16
  • 17.
    Demonstration of Portletsshowa web application consuming several portletscreate a new web application that consumes two portletschange one of the portlets and redeploy it; refresh the 'portals' - the consuming webapps in the browser
  • 18.
    Remote.NET basedLocal(in container)Generic, resuableRun Time editingLocal and Remote Remote Service adaptation (WebClipping)Run Time editingParameter based synchronizationLocalReusableParameter based synchronizationPublishes Events
  • 20.
  • 21.
  • 22.
    Portlet consumer interactingwith Portlets and ProvidersRemote .NET based Portlet ProviderPortal-in-a-BoxWebCenterPortlet Container & ProvidertigerMedHighLowPrepackaged PortletsCustomPortlets
  • 23.
    Conclusions PortletsWhat itdoesInteroperability, Cross technologyContract (params & events) supports interactionIndependent development and deploymentWhere it fails/falls shortEverything stays inside portal regionNo styling/skinning adoptedNo shared transaction context Consumer depends on portlet (availability)Requires Portlet infrastructure (e.g. Portal)
  • 24.
    Alternative: ADF TaskFlowsWith Oracle ADF (underlying UI technology of WebCenter) comes an alternative way to develop UI Services: ADF Task Flows ADF Task flows are Portlet-like in many respects: stand alone, independently developable, reusable UI componentTask Flow = one or multistep view, internal business logic, navigation flow, beans, …
  • 25.
    Task Flow ContractLikePortlets, ADF Task Flows adhere to a Contract (native ADF).Input:Parameters (initial)EventsNavigation commandsOutput(Changed) ParametersEventsNavigation events
  • 26.
    ADF Task FlowCapabilitiesADF does not require Portlets in order to work with service-like reusable componentsTask Flows are published via ADF Libraries and can be consumed more natively than PortletsLess overhead (saves 300 ms per request)Consumer and Task Flow can share Objects and ADF DataBindingSupports complex parameters & ADF eventsCan be customizedNo WebCenter license required…
  • 27.
    Example: Human TaskUI in SOA Suite
  • 28.
    Demo Task FlowsShowhow a existing task flow (TODO) can be published as ADF library and incorporated in other applicationShow how far the integration can go:ParametersEvents (in and out)JavaScript sharingSkinningClient side – detach table uses full screen
  • 29.
    Deploy and ReuseADF Library
  • 30.
    Add reusable taskflow to page
  • 31.
  • 33.
    Task Flow contractelementsparameterseventNav commandJS custom eventSave Task EventNavigationEventJS custom event
  • 34.
    (server side) EventhandlingTodo Task FlowTask Flow Consumer
  • 35.
    Conclusions on ADFTask FlowsStand alone, reusable componentsInterface with Parameters and EventsThough not a very clear contract documentComplex parameters and event payloadFully Integrated in consuming ADF applicationSkin, Data Controls, Transactions, JavaScript scopeDeployed as part of the consuming applicationPotentially multiple copies of the task flow – for every application using it‘native/standard’ ADF mechanism
  • 36.
    Comparing UI ServicetechnologiesPortletTask FlowRemoteCross TechnologyStandards basedProcessing overheadSlower page renderingDesign Time and Run Time decouplingRemote provider has to be upNeeds portlet consumption framework, e.g. WebCenterAnd portlet publicationLocal, native, ADF onlySharedData ControlsTransaction contextSkin/StyleClient side JavaScript & UIRich ContractComplex parametersEvents out and inWith complex payloadNavigation influenceSupport for customization
  • 37.
    Development with Portlets& Task FlowsThe use of Portlets and Task Flows allows for a decoupled way of developing applicationsTeams agree on a contractAnd both work their merry way based on the contract – in fairly insulated mannerReuse is possible based on that contractMaintenance of Portlet and Task Flow can be independent of consuming applicationsNote: task flow is integrated at design time
  • 38.
    Real life exampleHealthInsurance companyWants to expose Web Application in its PortalFor filing expenses and checking on the progress of claim processingPortal not yet pickedWebApp Integration should be decoupledSolution: expose parts of the WebApp as Portlet that can be integrated in PortalWeb app developers are insulated from PortalContract specifies parameters and events
  • 39.
    Decouple pointsPortlet Container& ProviderDatabasePortalESBDatabaseWebServiceCMS
  • 40.
    Some questionsHow doesone create and publish a Portlet?How does one simply consume a Portlet in her or his application?Can an application manager or content editor add/remove portlets/taskflows– at run time?Where does one get those pre-built portlets/task flows for generic functionality?
  • 41.
  • 42.
    WebCenter 11gWebCenter FrameworkPublishADF TaskFlows as PortletConsume any Portlet in ADF pages (drag & drop)Content integrationWebCenter ComposerRun time applicationeditingRun time task flow inclusionWC Spaces: pre builtapplication for E2.0
  • 43.
    WebCenter Services100+ pre-packagedtask flowsADF 11g task flowsBacked by database & MDSMutually integratedSupport for Content, Collaboration, CommunicationWeb 2.0 style
  • 44.
    WebCenter ServicesAfter installingthe WebCenter extension in JDeveloper– the catalog of services (task flows) is availableTo use a service:* drag it* drop it * set the values for the params* (optional) customize the task flow
  • 45.
    DemoLeveraging WebCenter ServicesReuseRSS ViewerReuse Document LibraryBased on WebCenterContent Repository Connection
  • 46.
    Create Content Repositoryconnection – File System based
  • 47.
  • 48.
  • 49.
  • 50.

Editor's Notes

  • #3 Taakverderling:SOA - what and why - PeterWebServices with a face – Portlets – Peter intro, Lucas demo & conclusionsUI Services with ADF Task Flows - Peter intro, Lucas demo & conclusionsIntroducing WebCenter – LucasPortlet infrastructurePre-packaged task flow servicesPutting a User Interface on the SOA Suite - PeterSummary - Lucas
  • #4 PETER
  • #5 PETER
  • #7 PETER
  • #8 PETER
  • #14 No asynchronous portlets…
  • #15 PETER