SlideShare a Scribd company logo
Castle in the Clouds: SaaS-Enabling Oracle ADF Faces ApplicationsOracle Open World 2009Wednesday, 14thOctoberLucas Jellema AMIS, The Netherlands
OverviewWhat makes an application ‘SaaS’?And why provide an application as SaaSRequirements of SaaS applicationsFocus on CustomizationIntegration & SOA across the cloudDeep Linking, Mash Up and UI ServicesServices APIRemote Events ListenersSummary and Road Ahead
Software as a Servicecommon characteristicsSingle instance of standard application & databaseRunning in a shared infrastructure, 24/7Managed by central administration teamDelivered over the internet to web browsersUsed by individuals from many organizationsMulti-tenant with multiple users eachGlobally distributed & multi-lingual user communityLicence model based on usage metricsService Level Agreement to specify quality of service
Castle in the Clouds: SaaS-Enabling Oracle ADF Faces Applications
Software as a Service(perceived) benefitsSmall up-front investmentQuick startup – ‘turn on the software tap’ Professional administration with guaranteed performance and application availabilityLow TCO through ‘economies of scale’Dynamic ScalabilityRapid evolution of new features and bug resolution – quick deploymentQuick adoption of new technologyCommunity to create, foster & share best practices
Software as a Serviceconcerns & potential disadvantagesDependence on 3rd party forSecurity, Availability & Performance, ScalabilityData outside the own infrastructureStandard application – not at all tailor-madeOur own terminology, fields, default values, validation rules, workflowHow does SaaS application integrate withOur SOA & EDA, Mash Up/Portal and WorkflowIdentity Management and Single Sign On How to prevent lock-in with the SaaS provider
SaaSRequirements: Integration across the cloudMake SaaS application integrate with IT backbone of the organization using the SaaSSOA & EDA, workflow management, identity management, email server and other shared central facilitiesTwo-way, based on open standards, geared towards both programmatic and UI integration
SaaS RequirementsCustomizationAllow organizations and individuals to tailor the ‘standard’ application for better fitWithin the single instance of the SaaS applicationEasy, dynamic, run-time, self-service in browserMulti-version on single ‘url and database’SaaS customers can upgrade to new versions of the SaaS application when they want to
Application ‘levels of reality’FactoryCustomerCustomerOrganization BOrganization AEnd UserEnd User
Application Mode SwitcherApplication Managers can switch between Application ModesTo view and manipulate the application at the selected level
Application Rollout process…Development in the FactoryProduction-time refiningCustomer (organization) specific implementationBy SaaS Helpdesk, on site consultant, Application AdminEnd User (dynamic, run-time) Personalization
ProposalLet’s approach every end user application as a SaaS application!Both standard and custom applications
Desirable SaaS features & facilitiesDynamic, Wiki-like, context-sensitive helpIntegration with incident registrationAutomatic passing of page, context data & logging‘Simulate user’ option for the service deskSLA metrics and application usage monitoringSelf Service style application management‘Toggle’ between factory, organization and userIntegrated workflow & collaborationCommunication (email, chat), task list, tagging, …“Register interest in” – notification of events
CustomizationAllow tailoring of terminology to organizationDynamic, run-time resource bundle managementResource Bundles per organization (and individual)Support for adding/hiding fieldsConfiguration of application behavior through organization and user level preferencesPersonalization (my…) features for fine tuningWorkflow and task configurationConfigure menus and add new itemsFine tune look & feel – e.g. skins, styles, logos
Customizing terminology Boilerplate text – prompt, title, button label, messages, help,… - come from resource bundlesBuilt in support for i18n – language & countryTypically held in property files deployed in WARWe need to implement resource bundlesthat can be updated and refreshed at run timeOr at least extended with any overrides of default valueskeys that support the notion of organization specific versions of bundle entries in addition to factory onesmaintenance facilities with self service supportThat presents bundle entries in understandable format
Implementing Self Service Customization of Resource BundlesResource Bundle implemented as class (extend ListResourceBundle) that read from databaseKeys are constructed as: <base_key>_<org_id>And even <base_key>_<org_id>_<user_id>JSF page refers to resources through intermediate bean: #{bundleHandler[‘baseKey’]}The bundleHandler bean first tries user specific key; if not found then org key and then base keyIt can also access several resource bundles – first the dynamic, database based one with overrides
Custom(izing) fieldsSome fields are never used by some organizations and are therefore ‘in the way’or they may even be legally forbidden in a country!Every organization finds the application lacking with one or more fieldsbut no two organizations ahree on which fields…To allow optimal customization, a SaaS application ideally allowsCustomization of standard itemsAddition of custom items embedded in pagesAnd associated with data records like ‘regular’ items
Application Settings for customizing application behaviorSome Application Behavior is developed as dynamically configurableThrough Preferences or Application SettingsDisplay: Locale, Format, Units for Height and Weight (converter parameters), feature on/offBusiness logic: Default Values for new records, Validation parameters, Field & Button AuthorizationStyling: Images, Fonts, Colors, Skins/ThemesSettings can be configured at Factory (default), Organization and User levelAt run-time through self service pages
Integrating Application Settings during development#{user.settings['NAME']}
Application Settings Data ModelApplication SettingsCustomized Settings*  Nameo Factory Valueo Allowable Valueso Descriptiono Data Typeo Level Updatableo Updatable By*  OrgIdo Valueo UserIdo Commentmm/dd/yyyyDate Formatdd-mm-yyyydd-mm-yyUsePhotoNYYMetric/ImperialmN…i
Application PersonalizationWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsI’m not…
Personalization Features – My… optionsMy Navigation HistoryMy Favorites (quick links, bookmarks)My own custom properties (‘flex fields’)My Date Format, Weight/Height units, Currency, Default ValuesMy lingo in titles, labels, prompts & messagesPersonalized Menu-structure… (my logo!)
Demo SaaS style Customization in JSFRun Time Management of Organization specific Resource BundlesChange the boilerplate text defined in the factoryCreate organization and user specific resourcesInfluencing application behavior through application settings at organization levelConfigure date format patternSpecify customized highlight definitionsToggle between user/organisation/factory scope
Castle in the Clouds: SaaS-Enabling Oracle ADF Faces Applications
Castle in the Clouds: SaaS-Enabling Oracle ADF Faces Applications
Run Time form-customizationOne application, multiple marketing labelsEach label requires a slightly different set of items – in a potentially different sequenceTo be defined and applied at run-timeSolution:After the JSF component tree is built in memory, let a JSF PhaseListener traverse it andSet rendered to falseChange the order of panelFormLayout childrenbased on the current context and the meta data
Run Time form-customizationDesign time base editionApply Marketing Label XApply Marketing Label Y
Run Time form-customizationDefine label specific settings
ADF Customization facilitiesRun Time ‘Change Persistence’ADF Change Persistence: built-in run-time customizations for several componentsTable, Collapsible/Disclosable Panels, Panel SplitterChange persistence can also be leveraged programmatically for custom run-time changeschanging an attribute value, adding or removing a facet, adding or removing a child component, reordering child components, moving a child component to a different parent
ADF Customization facilitiesDesign time ADF CustomizationDeveloper uses declarative customizationStart with the base applicationCreate specialized versions of XML based application artefacts like JSF page definitionFor every possible context in one or more dimensionsAt run time: users work with an application specially  customized based on the actual contextMultiple versions of artefactsare managed in the MDS repository
ADF Customization facilitiesRun time WebCenter ComposerApplication manager or content editor can ‘edit’ the application at run timeAdd or remove items in customizable regionsRich content elements, portletsand registered taskflowsEdit content, configure portlets, rearrange itemsCreate new pages with dynamic content items
Multi-version SaaS ApplicationPre Oracle Database 11gR2: tough!separate database schemas and dynamic data source selectionWith Oracle Database 11gR2: easy!Using Edition Based RedefinitionMultiple versions of database objects in the same schema – on a common set of tablesThe application (version) specifies at connect time which ‘edition’  of the database to useCome to my session S310492 Monday 17:30 - 18:30, Moscone South, Room 305
Parallel Application VersionsApplication XVERSION 1Application XVERSION 2Release 2Release 3Base Release
SOA across the cloudSaaS ASaaS BCMSSocial APIinternetinternalLDAPWorkflowEngineApp DApp CValidationServiceService APIService APICMSEmailIMFax34
Integration and SOA across the cloudService API as programmatic alternative to UIRSS, SOAP, RESTEvent Listener registration to be notified by SaaSService Registration (Dependency Injection)  Authentication/Authorization, Translation, Validation, Workflow, CommunicationIdentity cross referencing (SaaS & local identifier)Deep Link API for context sensitive navigationUI Services (Portlets) to fit into Mashups & PortalsData Export, Synch & Import – bulk facilities“internet service bus” – integrating multiple SaaSs35
SOA across the cloud: data & operations36SaaS Aservice dependencyinjectionSaaS BCMSSocial APIExportService APIService APIRSSlistenerregistrationinternetinternalLDAPWorkflowEngineApp DApp CValidationServiceService APIService APICMSEmailIMFax
SOA across the cloud: UI / Navigation / Process/Presentation37SaaS BSaaS ADeep linkInterfaceCMSDeep linkInterfaceSocial APIPortlet APIHTMLPagesPortlet APIRSSRSSinternetinternalToDoNewsWorkflowEngineApp DApp CPortlet APIPortlet APIRSSCMSEmailIMFax
SaaS ASaaS Aservice dependencyinjectionSaaS BSaaS BDeep linkInterfaceCMSCMSDeep linkInterfacePortlet APIHTMLPagesPortlet APIExportRSSService APIService APIRSSRSSlistenerregistrationinternetinternetinternalinternalToDoNewsLDAPWorkflowEngineWorkflowEngineApp DApp CApp DApp CPortlet APIPortlet APIValidationServiceService APIService APIRSSCMSCMSEmailIMFaxEmailIMFax38
Publishing ADF Application as (remotely embeddable) Portlet
Publishing ADF Application as (remotely embeddable) PortletAny ADF Task Flow can be published as a standard (WSRP) PortletUsing WebCenter FrameworkWithout development restrictionsWell, … almost that isNote that ADF applicationscan consume remoteportlets as wellUsing WebCenterWebCenter(Remote Portlet Provider)
Demonstrating Deep Link Navigation41SaaS AHTMLPagesPortlet APITo Do list shows task “Handle promotion for Employee Scott”
Selecting this task will bring up a popup loaded through a deep link into SaaS A
Presenting the ‘Update Job’ page with the details of Scott loadedService APIRSSToDoNewsWorkflowEngine
Implementing Deep Linking in JSFURL like http://host/SaaSApp/UpdateJob/ScottCookie provides hook for Single Sign On ServletFilter intercepts and redirects to proper JSF page – after storing parameters in the requestJSF PhaseListener intercepts the request to the page and prepares the backing beansUsing the request parametersJSF page is rendered with proper data contextWhen the user is done, the JSF application could update the task by calling the workflow engine SAPIpublish a SaaS event42
Demonstrating the SaaS Service APISaaS AHTMLPagesCreate a new Employee Call the SaaS API to propagate the new employee recordRight after succesful transaction commitInspect the new record in the SaaS UIPortlet APIService APIRSSApp D
Demonstrating cross-cloud event listeners44SaaS APortlet APIRegister App D’s  Update Employee service as Event Listener for SaaS event
Update a salary in the SaaS UI
Event is routed to the remote listener that calls the App D Service API that “does something with it”Service APIRSSlistenerregistrationApp DService APIDB
45
46Register Event Listener by calling the WebService
Castle in the Clouds: SaaS-Enabling Oracle ADF Faces Applications

More Related Content

PPT
Castle in the clouds - Building the Connexys SaaS application with Fusion Mid...
PPTX
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
PDF
Running ADF Faces on Tablets and Mobile Phones
PPTX
An Oracle ADF Introduction
PDF
Introduction to Force.com
PPTX
Oracle Alta UI Patterns for Enterprise Applications and Responsive UI Support
PPSX
Oracle ADF Overview for Beginners
PPT
Lombardi intro full
Castle in the clouds - Building the Connexys SaaS application with Fusion Mid...
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
Running ADF Faces on Tablets and Mobile Phones
An Oracle ADF Introduction
Introduction to Force.com
Oracle Alta UI Patterns for Enterprise Applications and Responsive UI Support
Oracle ADF Overview for Beginners
Lombardi intro full

What's hot (20)

PPTX
SharePoint 2010 Service Application Architecture_ Ayman El-Hattab,MVP
PDF
Intro to Force.com Webinar presentation
PPTX
Api presentation
PDF
ADF Introduction By Sandeep Sharda
PPT
Greate Introduction to Oracle Fusion Middleware and ADF
PPTX
Oracle adf
DOCX
uppada_kishore_resume (1)
PDF
37727897 Oaf Basics
PPTX
Web programming and development - Introduction
PDF
Silverlight Document Search Engine
PPTX
SharePoint and Azure - A Match Made in the Clouds
PDF
Exploring REST Purity and Pragmatism - Tuesday, November 6, 2012
PDF
Introduction to Force.com
PPT
Ibm 1 Wps Arch
PDF
Midlogic technical presentation 2005
DOCX
Oracle adf online training
PPTX
CSS Architecture: Writing Maintainable CSS
PPTX
IBM Innovate 2013: Making Rational HATS a Strategic Investment
PPT
oracle oa framework training | oracle oa framework training courses | oa fram...
PPTX
SharePoint 2013 Sneak Peek
SharePoint 2010 Service Application Architecture_ Ayman El-Hattab,MVP
Intro to Force.com Webinar presentation
Api presentation
ADF Introduction By Sandeep Sharda
Greate Introduction to Oracle Fusion Middleware and ADF
Oracle adf
uppada_kishore_resume (1)
37727897 Oaf Basics
Web programming and development - Introduction
Silverlight Document Search Engine
SharePoint and Azure - A Match Made in the Clouds
Exploring REST Purity and Pragmatism - Tuesday, November 6, 2012
Introduction to Force.com
Ibm 1 Wps Arch
Midlogic technical presentation 2005
Oracle adf online training
CSS Architecture: Writing Maintainable CSS
IBM Innovate 2013: Making Rational HATS a Strategic Investment
oracle oa framework training | oracle oa framework training courses | oa fram...
SharePoint 2013 Sneak Peek
Ad

Similar to Castle in the Clouds: SaaS-Enabling Oracle ADF Faces Applications (20)

PPT
Castle in the Clouds: SaaS Enabling JavaServer™ Faces Applications (JavaOne 2...
PPT
IBM WebSphere Portal
PPTX
Andy West – Director of Technology Architecture, Pearson
PPT
Training Agenda
PPT
AD303: Building Composite Applications for IBM Workplace Collaboration Servic...
DOC
Introduction On Integrating Translation Applications, Wcm To Achieve A Common...
PPT
Cms an overview
PPTX
CCI 2019 - PowerApps for Enterprise Developers
PPTX
2014 q3-platform-update-v1.06.johnmathon
PDF
Datasheet scriptspluginforrd
DOCX
Indukuri_resume_UI5
PPTX
Dev day paris020415
PDF
WSO2 Product Release Webinar: WSO2 Dashboard Server 2.0
PPTX
Raj Wpf Controls
ODP
Drools & jBPM Info Sheet
PPSX
M.S. Dissertation in Salesforce on Force.com
PPTX
Techcello at a glance
PPT
GigaSpaces CCF 4 Xap
PPTX
“Salesforce Multi-tenant architecture”,
PPT
Dssc Intro
Castle in the Clouds: SaaS Enabling JavaServer™ Faces Applications (JavaOne 2...
IBM WebSphere Portal
Andy West – Director of Technology Architecture, Pearson
Training Agenda
AD303: Building Composite Applications for IBM Workplace Collaboration Servic...
Introduction On Integrating Translation Applications, Wcm To Achieve A Common...
Cms an overview
CCI 2019 - PowerApps for Enterprise Developers
2014 q3-platform-update-v1.06.johnmathon
Datasheet scriptspluginforrd
Indukuri_resume_UI5
Dev day paris020415
WSO2 Product Release Webinar: WSO2 Dashboard Server 2.0
Raj Wpf Controls
Drools & jBPM Info Sheet
M.S. Dissertation in Salesforce on Force.com
Techcello at a glance
GigaSpaces CCF 4 Xap
“Salesforce Multi-tenant architecture”,
Dssc Intro
Ad

More from Lucas Jellema (20)

PPTX
Introduction to web application development with Vue (for absolute beginners)...
PPTX
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
PPTX
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
PPTX
Apache Superset - open source data exploration and visualization (Conclusion ...
PPTX
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
PPTX
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
PPTX
Op je vingers tellen... tot 1000!
PPTX
IoT - from prototype to enterprise platform (DigitalXchange 2022)
PPTX
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
PPTX
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
PPTX
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
PPTX
Introducing Dapr.io - the open source personal assistant to microservices and...
PPTX
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
PPTX
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
PPTX
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
PPTX
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
PPTX
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
PPTX
Tech Talks 101 - DevOps (jan 2022)
PPTX
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
PPTX
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Introduction to web application development with Vue (for absolute beginners)...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Apache Superset - open source data exploration and visualization (Conclusion ...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Op je vingers tellen... tot 1000!
IoT - from prototype to enterprise platform (DigitalXchange 2022)
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Introducing Dapr.io - the open source personal assistant to microservices and...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Tech Talks 101 - DevOps (jan 2022)
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...

Recently uploaded (20)

PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
ai-archetype-understanding-the-personality-of-agentic-ai.pdf
PDF
Transforming Manufacturing operations through Intelligent Integrations
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
PDF
Top Generative AI Tools for Patent Drafting in 2025.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Sensors and Actuators in IoT Systems using pdf
PDF
madgavkar20181017ppt McKinsey Presentation.pdf
PDF
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
Event Presentation Google Cloud Next Extended 2025
PDF
KodekX | Application Modernization Development
PPTX
How to Build Crypto Derivative Exchanges from Scratch.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
ai-archetype-understanding-the-personality-of-agentic-ai.pdf
Transforming Manufacturing operations through Intelligent Integrations
A Day in the Life of Location Data - Turning Where into How.pdf
Top Generative AI Tools for Patent Drafting in 2025.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Sensors and Actuators in IoT Systems using pdf
madgavkar20181017ppt McKinsey Presentation.pdf
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
Event Presentation Google Cloud Next Extended 2025
KodekX | Application Modernization Development
How to Build Crypto Derivative Exchanges from Scratch.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
NewMind AI Monthly Chronicles - July 2025
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf

Castle in the Clouds: SaaS-Enabling Oracle ADF Faces Applications

  • 1. Castle in the Clouds: SaaS-Enabling Oracle ADF Faces ApplicationsOracle Open World 2009Wednesday, 14thOctoberLucas Jellema AMIS, The Netherlands
  • 2. OverviewWhat makes an application ‘SaaS’?And why provide an application as SaaSRequirements of SaaS applicationsFocus on CustomizationIntegration & SOA across the cloudDeep Linking, Mash Up and UI ServicesServices APIRemote Events ListenersSummary and Road Ahead
  • 3. Software as a Servicecommon characteristicsSingle instance of standard application & databaseRunning in a shared infrastructure, 24/7Managed by central administration teamDelivered over the internet to web browsersUsed by individuals from many organizationsMulti-tenant with multiple users eachGlobally distributed & multi-lingual user communityLicence model based on usage metricsService Level Agreement to specify quality of service
  • 5. Software as a Service(perceived) benefitsSmall up-front investmentQuick startup – ‘turn on the software tap’ Professional administration with guaranteed performance and application availabilityLow TCO through ‘economies of scale’Dynamic ScalabilityRapid evolution of new features and bug resolution – quick deploymentQuick adoption of new technologyCommunity to create, foster & share best practices
  • 6. Software as a Serviceconcerns & potential disadvantagesDependence on 3rd party forSecurity, Availability & Performance, ScalabilityData outside the own infrastructureStandard application – not at all tailor-madeOur own terminology, fields, default values, validation rules, workflowHow does SaaS application integrate withOur SOA & EDA, Mash Up/Portal and WorkflowIdentity Management and Single Sign On How to prevent lock-in with the SaaS provider
  • 7. SaaSRequirements: Integration across the cloudMake SaaS application integrate with IT backbone of the organization using the SaaSSOA & EDA, workflow management, identity management, email server and other shared central facilitiesTwo-way, based on open standards, geared towards both programmatic and UI integration
  • 8. SaaS RequirementsCustomizationAllow organizations and individuals to tailor the ‘standard’ application for better fitWithin the single instance of the SaaS applicationEasy, dynamic, run-time, self-service in browserMulti-version on single ‘url and database’SaaS customers can upgrade to new versions of the SaaS application when they want to
  • 9. Application ‘levels of reality’FactoryCustomerCustomerOrganization BOrganization AEnd UserEnd User
  • 10. Application Mode SwitcherApplication Managers can switch between Application ModesTo view and manipulate the application at the selected level
  • 11. Application Rollout process…Development in the FactoryProduction-time refiningCustomer (organization) specific implementationBy SaaS Helpdesk, on site consultant, Application AdminEnd User (dynamic, run-time) Personalization
  • 12. ProposalLet’s approach every end user application as a SaaS application!Both standard and custom applications
  • 13. Desirable SaaS features & facilitiesDynamic, Wiki-like, context-sensitive helpIntegration with incident registrationAutomatic passing of page, context data & logging‘Simulate user’ option for the service deskSLA metrics and application usage monitoringSelf Service style application management‘Toggle’ between factory, organization and userIntegrated workflow & collaborationCommunication (email, chat), task list, tagging, …“Register interest in” – notification of events
  • 14. CustomizationAllow tailoring of terminology to organizationDynamic, run-time resource bundle managementResource Bundles per organization (and individual)Support for adding/hiding fieldsConfiguration of application behavior through organization and user level preferencesPersonalization (my…) features for fine tuningWorkflow and task configurationConfigure menus and add new itemsFine tune look & feel – e.g. skins, styles, logos
  • 15. Customizing terminology Boilerplate text – prompt, title, button label, messages, help,… - come from resource bundlesBuilt in support for i18n – language & countryTypically held in property files deployed in WARWe need to implement resource bundlesthat can be updated and refreshed at run timeOr at least extended with any overrides of default valueskeys that support the notion of organization specific versions of bundle entries in addition to factory onesmaintenance facilities with self service supportThat presents bundle entries in understandable format
  • 16. Implementing Self Service Customization of Resource BundlesResource Bundle implemented as class (extend ListResourceBundle) that read from databaseKeys are constructed as: <base_key>_<org_id>And even <base_key>_<org_id>_<user_id>JSF page refers to resources through intermediate bean: #{bundleHandler[‘baseKey’]}The bundleHandler bean first tries user specific key; if not found then org key and then base keyIt can also access several resource bundles – first the dynamic, database based one with overrides
  • 17. Custom(izing) fieldsSome fields are never used by some organizations and are therefore ‘in the way’or they may even be legally forbidden in a country!Every organization finds the application lacking with one or more fieldsbut no two organizations ahree on which fields…To allow optimal customization, a SaaS application ideally allowsCustomization of standard itemsAddition of custom items embedded in pagesAnd associated with data records like ‘regular’ items
  • 18. Application Settings for customizing application behaviorSome Application Behavior is developed as dynamically configurableThrough Preferences or Application SettingsDisplay: Locale, Format, Units for Height and Weight (converter parameters), feature on/offBusiness logic: Default Values for new records, Validation parameters, Field & Button AuthorizationStyling: Images, Fonts, Colors, Skins/ThemesSettings can be configured at Factory (default), Organization and User levelAt run-time through self service pages
  • 19. Integrating Application Settings during development#{user.settings['NAME']}
  • 20. Application Settings Data ModelApplication SettingsCustomized Settings* Nameo Factory Valueo Allowable Valueso Descriptiono Data Typeo Level Updatableo Updatable By* OrgIdo Valueo UserIdo Commentmm/dd/yyyyDate Formatdd-mm-yyyydd-mm-yyUsePhotoNYYMetric/ImperialmN…i
  • 21. Application PersonalizationWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsWe are all individualsI’m not…
  • 22. Personalization Features – My… optionsMy Navigation HistoryMy Favorites (quick links, bookmarks)My own custom properties (‘flex fields’)My Date Format, Weight/Height units, Currency, Default ValuesMy lingo in titles, labels, prompts & messagesPersonalized Menu-structure… (my logo!)
  • 23. Demo SaaS style Customization in JSFRun Time Management of Organization specific Resource BundlesChange the boilerplate text defined in the factoryCreate organization and user specific resourcesInfluencing application behavior through application settings at organization levelConfigure date format patternSpecify customized highlight definitionsToggle between user/organisation/factory scope
  • 26. Run Time form-customizationOne application, multiple marketing labelsEach label requires a slightly different set of items – in a potentially different sequenceTo be defined and applied at run-timeSolution:After the JSF component tree is built in memory, let a JSF PhaseListener traverse it andSet rendered to falseChange the order of panelFormLayout childrenbased on the current context and the meta data
  • 27. Run Time form-customizationDesign time base editionApply Marketing Label XApply Marketing Label Y
  • 28. Run Time form-customizationDefine label specific settings
  • 29. ADF Customization facilitiesRun Time ‘Change Persistence’ADF Change Persistence: built-in run-time customizations for several componentsTable, Collapsible/Disclosable Panels, Panel SplitterChange persistence can also be leveraged programmatically for custom run-time changeschanging an attribute value, adding or removing a facet, adding or removing a child component, reordering child components, moving a child component to a different parent
  • 30. ADF Customization facilitiesDesign time ADF CustomizationDeveloper uses declarative customizationStart with the base applicationCreate specialized versions of XML based application artefacts like JSF page definitionFor every possible context in one or more dimensionsAt run time: users work with an application specially customized based on the actual contextMultiple versions of artefactsare managed in the MDS repository
  • 31. ADF Customization facilitiesRun time WebCenter ComposerApplication manager or content editor can ‘edit’ the application at run timeAdd or remove items in customizable regionsRich content elements, portletsand registered taskflowsEdit content, configure portlets, rearrange itemsCreate new pages with dynamic content items
  • 32. Multi-version SaaS ApplicationPre Oracle Database 11gR2: tough!separate database schemas and dynamic data source selectionWith Oracle Database 11gR2: easy!Using Edition Based RedefinitionMultiple versions of database objects in the same schema – on a common set of tablesThe application (version) specifies at connect time which ‘edition’ of the database to useCome to my session S310492 Monday 17:30 - 18:30, Moscone South, Room 305
  • 33. Parallel Application VersionsApplication XVERSION 1Application XVERSION 2Release 2Release 3Base Release
  • 34. SOA across the cloudSaaS ASaaS BCMSSocial APIinternetinternalLDAPWorkflowEngineApp DApp CValidationServiceService APIService APICMSEmailIMFax34
  • 35. Integration and SOA across the cloudService API as programmatic alternative to UIRSS, SOAP, RESTEvent Listener registration to be notified by SaaSService Registration (Dependency Injection) Authentication/Authorization, Translation, Validation, Workflow, CommunicationIdentity cross referencing (SaaS & local identifier)Deep Link API for context sensitive navigationUI Services (Portlets) to fit into Mashups & PortalsData Export, Synch & Import – bulk facilities“internet service bus” – integrating multiple SaaSs35
  • 36. SOA across the cloud: data & operations36SaaS Aservice dependencyinjectionSaaS BCMSSocial APIExportService APIService APIRSSlistenerregistrationinternetinternalLDAPWorkflowEngineApp DApp CValidationServiceService APIService APICMSEmailIMFax
  • 37. SOA across the cloud: UI / Navigation / Process/Presentation37SaaS BSaaS ADeep linkInterfaceCMSDeep linkInterfaceSocial APIPortlet APIHTMLPagesPortlet APIRSSRSSinternetinternalToDoNewsWorkflowEngineApp DApp CPortlet APIPortlet APIRSSCMSEmailIMFax
  • 38. SaaS ASaaS Aservice dependencyinjectionSaaS BSaaS BDeep linkInterfaceCMSCMSDeep linkInterfacePortlet APIHTMLPagesPortlet APIExportRSSService APIService APIRSSRSSlistenerregistrationinternetinternetinternalinternalToDoNewsLDAPWorkflowEngineWorkflowEngineApp DApp CApp DApp CPortlet APIPortlet APIValidationServiceService APIService APIRSSCMSCMSEmailIMFaxEmailIMFax38
  • 39. Publishing ADF Application as (remotely embeddable) Portlet
  • 40. Publishing ADF Application as (remotely embeddable) PortletAny ADF Task Flow can be published as a standard (WSRP) PortletUsing WebCenter FrameworkWithout development restrictionsWell, … almost that isNote that ADF applicationscan consume remoteportlets as wellUsing WebCenterWebCenter(Remote Portlet Provider)
  • 41. Demonstrating Deep Link Navigation41SaaS AHTMLPagesPortlet APITo Do list shows task “Handle promotion for Employee Scott”
  • 42. Selecting this task will bring up a popup loaded through a deep link into SaaS A
  • 43. Presenting the ‘Update Job’ page with the details of Scott loadedService APIRSSToDoNewsWorkflowEngine
  • 44. Implementing Deep Linking in JSFURL like http://host/SaaSApp/UpdateJob/ScottCookie provides hook for Single Sign On ServletFilter intercepts and redirects to proper JSF page – after storing parameters in the requestJSF PhaseListener intercepts the request to the page and prepares the backing beansUsing the request parametersJSF page is rendered with proper data contextWhen the user is done, the JSF application could update the task by calling the workflow engine SAPIpublish a SaaS event42
  • 45. Demonstrating the SaaS Service APISaaS AHTMLPagesCreate a new Employee Call the SaaS API to propagate the new employee recordRight after succesful transaction commitInspect the new record in the SaaS UIPortlet APIService APIRSSApp D
  • 46. Demonstrating cross-cloud event listeners44SaaS APortlet APIRegister App D’s Update Employee service as Event Listener for SaaS event
  • 47. Update a salary in the SaaS UI
  • 48. Event is routed to the remote listener that calls the App D Service API that “does something with it”Service APIRSSlistenerregistrationApp DService APIDB
  • 49. 45
  • 50. 46Register Event Listener by calling the WebService
  • 52. SaaS in the Multi-Org worldSaaS BSaaS A\CMSSocial APIExportService APIService APIRSSPortlet APIPortlet APIHTMLPagesinternetApp YApp XApp DService APIService APIService APIApp ZWorkflowEngine48
  • 53. 49Summary and ConclusionSaaS and the road aheadSaaSapplications need special facilitiesCustomization & personalizationService API (UI and programmatic), Event supportSLA management, metrics monitoring & self serviceMultiple parallel application versionsMost applications could do with the same facilities: let’s regard all applications as SaaS!
  • 54. 50Summary and ConclusionsEnterprise Service Bus and Portal/Mashup connect the SaaSapplicationsWith WebServices API and Event/Listener modelThrough embeddable Portlets with params/eventsADF Faces & EL support dynamic front endsCustom facilities like dynamic resource bundlesADF design-time customization and WebCenter Composer run-time customizationMulti-version is enabled through Oracle Database 11gR2 Edition Based Redefinition
  • 55. ResourcesPresentation and demos are on our bloghttp://technology.amis.nl/blogContact me at:[email protected]

Editor's Notes

  • #7: Data by 3rd party:No access from internal systems security risks foreign regulation & legislation (Patriot Act)Risk SaaS provider collapseSwitch to another SaaS providerIntegration how to programmatically interact with SaaS application how to push events from SaaS to local EDA/Enterprise Service Bus how to synchronize data between SaaS and local database how to integrate application in (local) Portal and Mashup: publish UI Services (Portlets) from SaaS
  • #30: http://download.oracle.com/docs/cd/E12839_01/web.1111/b31974/ad_persist.htm#CIHHEHCF