Software as a service (SaaS) applications serve users in many organizations from a single application instance running in a cloud. Common SaaS requirements are customization such as hiding and adding fields, managing boilerplate text, and influencing look and feel and a service API for retrieving and manipulating data and enabling registration of listeners (applications outside the cloud that are notified by the SaaS application of events). Deep-link navigation into the SaaS application enables visual integration with local apps. This session’s speakers share their best practices, having developed three rich Oracle ADF Faces RC SaaS apps, with demos of the customization, using Meta Data Services (MDS) and the SOA interface across the cloud.
Boost PC performance: How more available memory can improve productivity
Castle in the Clouds: SaaS-Enabling Oracle ADF Faces Applications
1. Castle in the Clouds: SaaS-Enabling Oracle ADF Faces Applications Oracle Open World 2009 Wednesday, 14thOctober Lucas Jellema AMIS, The Netherlands
2. Overview What makes an application ‘SaaS’? And why provide an application as SaaS Requirements of SaaS applications Focus on Customization Integration & SOA across the cloud Deep Linking, Mash Up and UI Services Services API Remote Events Listeners Summary and Road Ahead
3. Software as a Servicecommon characteristics Single instance of standard application & database Running in a shared infrastructure, 24/7 Managed by central administration team Delivered over the internet to web browsers Used by individuals from many organizations Multi-tenant with multiple users each Globally distributed & multi-lingual user community Licence model based on usage metrics Service Level Agreement to specify quality of service
4.
5. Software as a Service(perceived) benefits Small up-front investment Quick startup – ‘turn on the software tap’ Professional administration with guaranteed performance and application availability Low TCO through ‘economies of scale’ Dynamic Scalability Rapid evolution of new features and bug resolution – quick deployment Quick adoption of new technology Community to create, foster & share best practices
6. Software as a Serviceconcerns & potential disadvantages Dependence on 3rd party for Security, Availability & Performance, Scalability Data outside the own infrastructure Standard application – not at all tailor-made Our own terminology, fields, default values, validation rules, workflow How does SaaS application integrate with Our SOA & EDA, Mash Up/Portal and Workflow Identity Management and Single Sign On How to prevent lock-in with the SaaS provider
7. SaaSRequirements: Integration across the cloud Make SaaS application integrate with IT backbone of the organization using the SaaS SOA & EDA, workflow management, identity management, email server and other shared central facilities Two-way, based on open standards, geared towards both programmatic and UI integration
8. SaaS Requirements Customization Allow organizations and individuals to tailor the ‘standard’ application for better fit Within the single instance of the SaaS application Easy, dynamic, run-time, self-service in browser Multi-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’ Factory Customer Customer Organization B Organization A End User End User
10. Application Mode Switcher Application Managers can switch between Application Modes To view and manipulate the application at the selected level
11. Application Rollout process… Development in the Factory Production-time refining Customer (organization) specific implementation By SaaS Helpdesk, on site consultant, Application Admin End User (dynamic, run-time) Personalization
12. Proposal Let’s approach every end user application as a SaaS application! Both standard and custom applications
13. Desirable SaaS features & facilities Dynamic, Wiki-like, context-sensitive help Integration with incident registration Automatic passing of page, context data & logging ‘Simulate user’ option for the service desk SLA metrics and application usage monitoring Self Service style application management ‘Toggle’ between factory, organization and user Integrated workflow & collaboration Communication (email, chat), task list, tagging, … “Register interest in” – notification of events
14. Customization Allow tailoring of terminology to organization Dynamic, run-time resource bundle management Resource Bundles per organization (and individual) Support for adding/hiding fields Configuration of application behavior through organization and user level preferences Personalization (my…) features for fine tuning Workflow and task configuration Configure menus and add new items Fine tune look & feel – e.g. skins, styles, logos
15. Customizing terminology Boilerplate text – prompt, title, button label, messages, help,… - come from resource bundles Built in support for i18n – language & country Typically held in property files deployed in WAR We need to implement resource bundles that can be updated and refreshed at run time Or at least extended with any overrides of default values keys that support the notion of organization specific versions of bundle entries in addition to factory ones maintenance facilities with self service support That presents bundle entries in understandable format
16. Implementing Self Service Customization of Resource Bundles Resource Bundle implemented as class (extend ListResourceBundle) that read from database Keys 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 key It can also access several resource bundles – first the dynamic, database based one with overrides
17. Custom(izing) fields Some 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 fields but no two organizations ahree on which fields… To allow optimal customization, a SaaS application ideally allows Customization of standard items Addition of custom items embedded in pages And associated with data records like ‘regular’ items
18. Application Settings for customizing application behavior Some Application Behavior is developed as dynamically configurable Through Preferences or Application Settings Display: Locale, Format, Units for Height and Weight (converter parameters), feature on/off Business logic: Default Values for new records, Validation parameters, Field & Button Authorization Styling: Images, Fonts, Colors, Skins/Themes Settings can be configured at Factory (default), Organization and User level At run-time through self service pages
20. Application Settings Data Model Application Settings Customized Settings * Name o Factory Value o Allowable Values o Description o Data Type o Level Updatable o Updatable By * OrgId o Value o UserId o Comment mm/dd/yyyy Date Format dd-mm-yyyy dd-mm-yy Use Photo N Y Y Metric/Imperial m N … i
21. Application Personalization We are all individuals We are all individuals We are all individuals We are all individuals We are all individuals We are all individuals We are all individuals We are all individuals We are all individuals We are all individuals We are all individuals I’m not…
22. Personalization Features – My… options My Navigation History My Favorites (quick links, bookmarks) My own custom properties (‘flex fields’) My Date Format, Weight/Height units, Currency, Default Values My lingo in titles, labels, prompts & messages Personalized Menu-structure … (my logo!)
23. Demo SaaS style Customization in JSF Run Time Management of Organization specific Resource Bundles Change the boilerplate text defined in the factory Create organization and user specific resources Influencing application behavior through application settings at organization level Configure date format pattern Specify customized highlight definitions Toggle between user/organisation/factory scope
24.
25.
26. Run Time form-customization One application, multiple marketing labels Each label requires a slightly different set of items – in a potentially different sequence To be defined and applied at run-time Solution: After the JSF component tree is built in memory, let a JSF PhaseListener traverse it and Set rendered to false Change the order of panelFormLayout children based on the current context and the meta data
29. ADF Customization facilitiesRun Time ‘Change Persistence’ ADF Change Persistence: built-in run-time customizations for several components Table, Collapsible/Disclosable Panels, Panel Splitter Change persistence can also be leveraged programmatically for custom run-time changes changing 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 Customization Developer uses declarative customization Start with the base application Create specialized versions of XML based application artefacts like JSF page definition For every possible context in one or more dimensions At run time: users work with an application specially customized based on the actual context Multiple versions of artefactsare managed in the MDS repository
31. ADF Customization facilitiesRun time WebCenter Composer Application manager or content editor can ‘edit’ the application at run time Add or remove items in customizable regions Rich content elements, portletsand registered taskflows Edit content, configure portlets, rearrange items Create new pages with dynamic content items
32. Multi-version SaaS Application Pre Oracle Database 11gR2: tough! separate database schemas and dynamic data source selection With Oracle Database 11gR2: easy! Using Edition Based Redefinition Multiple versions of database objects in the same schema – on a common set of tables The application (version) specifies at connect time which ‘edition’ of the database to use Come to my session S310492 Monday 17:30 - 18:30, Moscone South, Room 305
34. SOA across the cloud SaaS A SaaS B CMS Social API internet internal LDAP WorkflowEngine App D App C Validation Service Service API Service API CMS Email IM Fax 34
35. Integration and SOA across the cloud Service API as programmatic alternative to UI RSS, SOAP, REST Event Listener registration to be notified by SaaS Service Registration (Dependency Injection) Authentication/Authorization, Translation, Validation, Workflow, Communication Identity cross referencing (SaaS & local identifier) Deep Link API for context sensitive navigation UI Services (Portlets) to fit into Mashups & Portals Data Export, Synch & Import – bulk facilities “internet service bus” – integrating multiple SaaSs 35
36. SOA across the cloud: data & operations 36 SaaS A service dependency injection SaaS B CMS Social API Export Service API Service API RSS listenerregistration internet internal LDAP WorkflowEngine App D App C Validation Service Service API Service API CMS Email IM Fax
37. SOA across the cloud: UI / Navigation / Process/Presentation 37 SaaS B SaaS A Deep link Interface CMS Deep link Interface Social API Portlet API HTMLPages Portlet API RSS RSS internet internal ToDo News WorkflowEngine App D App C Portlet API Portlet API RSS CMS Email IM Fax
38. SaaS A SaaS A service dependency injection SaaS B SaaS B Deep link Interface CMS CMS Deep link Interface Portlet API HTMLPages Portlet API Export RSS Service API Service API RSS RSS listenerregistration internet internet internal internal ToDo News LDAP WorkflowEngine WorkflowEngine App D App C App D App C Portlet API Portlet API Validation Service Service API Service API RSS CMS CMS Email IM Fax Email IM Fax 38
40. Publishing ADF Application as (remotely embeddable) Portlet Any ADF Task Flow can be published as a standard (WSRP) Portlet Using WebCenter Framework Without development restrictions Well, … almost that is Note that ADF applicationscan consume remoteportlets as well Using WebCenter WebCenter (Remote Portlet Provider)
41.
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 API RSS ToDo News WorkflowEngine
44. Implementing Deep Linking in JSF URL like http://host/SaaSApp/UpdateJob/Scott Cookie provides hook for Single Sign On ServletFilter intercepts and redirects to proper JSF page – after storing parameters in the request JSF PhaseListener intercepts the request to the page and prepares the backing beans Using the request parameters JSF page is rendered with proper data context When the user is done, the JSF application could update the task by calling the workflow engine SAPI publish a SaaS event 42
45. Demonstrating the SaaS Service API SaaS A HTMLPages Create a new Employee Call the SaaS API to propagate the new employee record Right after succesful transaction commit Inspect the new record in the SaaS UI Portlet API Service API RSS App D
48. Event is routed to the remote listener that calls the App D Service API that “does something with it”Service API RSS listenerregistration App D Service API DB
52. SaaS in the Multi-Org world SaaS B SaaS A br />CMS Social API Export Service API Service API RSS Portlet API Portlet API HTMLPages internet App Y App X App D Service API Service API Service API App Z WorkflowEngine 48
53. 49 Summary and ConclusionSaaS and the road ahead SaaSapplications need special facilities Customization & personalization Service API (UI and programmatic), Event support SLA management, metrics monitoring & self service Multiple parallel application versions Most applications could do with the same facilities: let’s regard all applications as SaaS!
54. 50 Summary and Conclusions Enterprise Service Bus and Portal/Mashup connect the SaaSapplications With WebServices API and Event/Listener model Through embeddable Portlets with params/events ADF Faces & EL support dynamic front ends Custom facilities like dynamic resource bundles ADF design-time customization and WebCenter Composer run-time customization Multi-version is enabled through Oracle Database 11gR2 Edition Based Redefinition
55. Resources Presentation and demos are on our blog http://technology.amis.nl/blog Contact me at:lucas.jellema@amis.nl
Notas del editor
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