Castle in the clouds - Building the Connexys SaaS application with Fusion Middleware


Published on

SaaS applications serve users in many organizations from a single application instance running in a cloud. Common SaaS requirements include: customization including hiding and adding fields, managing boilerplate text & influencing the look & feel and a Service API for retrieving and manipulating data as well as allowing registration of listeners - applications outside the cloud that are notified by the SaaS application of events. Deep link navigation into the SaaS application allows visual integration with local apps.

Connexys provides a SaaS application (150+ customers) to support human resource and recruitment processes. The Connexys NextGen application is developed on Fusion Middleware using ADF. The application has an impressive number of specific SaaS enhancements (some inspired by that make it a compelling & competitive SaaS offering.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Castle in the clouds - Building the Connexys SaaS application with Fusion Middleware

  1. 1. Castle in the clouds – Building the Connexys SaaS application with Fusion Middleware OBUG 2010 Arne van der Ing, Connexys Lucas Jellema, AMIS 2001 Oracle Classic 2010 SaaS, Web 2.0 ADF
  2. 2. Who is Connexys <ul><li>1st SaaS provider for recruitment-applications in Netherlands </li></ul><ul><ul><li>streamline recruitment and development of employees using a web-based application. </li></ul></ul><ul><li>Founded in 1999 </li></ul><ul><li>Marketleader in Netherlands, internationalyl active. </li></ul><ul><li>Highly skilled organization with 35 staff members. </li></ul><ul><li>150 customers, including: </li></ul>
  3. 3. Some years ago… <ul><li>Application losing its appeal (not Web 2.0) </li></ul><ul><li>Implementations and custom add-ons too expensive </li></ul><ul><li>One size did not necessarily fit all </li></ul>
  4. 4. The Dog-Star dilemma ?
  5. 5. Plotted course to NextGen
  6. 6. Technology-selection <ul><li>Starting point: Oracle Classic </li></ul><ul><ul><li>environment, application, development & admin team </li></ul></ul><ul><li>Considerations and Criteria: </li></ul><ul><ul><li>functionality, productivity, license fees training team (costs, duration, viability) </li></ul></ul>Data Web PLSQL Toolkit Oracle Designer before after Data Oracle Designer Oracle JDeveloper Application Server ADF JHeadstart
  7. 7. Database is foundation <ul><li>Business Logic from application to database </li></ul><ul><li>Fix data model </li></ul><ul><ul><li>have NextGen use same tables as oldGen </li></ul></ul><ul><ul><li>Views with Instead Of Trg… </li></ul></ul>Application Data NextGen Application Web PLSQL Toolkit
  8. 8. Objectives with application and architecture: Functionality <ul><li>Visually appealing, modern, Web 2.0 </li></ul><ul><ul><li>Attractive, fun to work with (productively) </li></ul></ul><ul><ul><li>Consistent User Interaction Design </li></ul></ul><ul><li>Task- and process-oriented </li></ul><ul><ul><li>Lead user through steps (pages) that constitute a task </li></ul></ul><ul><ul><li>(Only) show relevant actions and navigations </li></ul></ul>
  9. 9. Context specific actions
  10. 12. Software as a Service common characteristics <ul><li>Single instance of standard application & database </li></ul><ul><li>Running in a shared infrastructure, 24/7 </li></ul><ul><li>Managed by central administration team </li></ul><ul><li>Delivered over the internet to web browsers </li></ul><ul><li>Used by individuals from many organizations </li></ul><ul><ul><li>Multi-tenant with multiple users each </li></ul></ul><ul><ul><li>Globally distributed & multi-lingual user community </li></ul></ul><ul><li>License model based on usage metrics </li></ul><ul><li>Service Level Agreement to specify quality of service </li></ul>
  11. 13. SaaS Requirements <ul><li>Customization </li></ul><ul><ul><li>Allow organizations and individuals to tailor the ‘standard’ application for better fit </li></ul></ul><ul><ul><ul><li>Within the single instance of the SaaS application </li></ul></ul></ul><ul><ul><li>Easy, dynamic, run-time, self-service in browser </li></ul></ul><ul><li>Multi-version on single ‘url and database’ </li></ul><ul><ul><li>SaaS customers can upgrade to new versions of the SaaS application when they want to </li></ul></ul>
  12. 14. Private Database for SaaS customers Single Application Instance
  13. 15. “ Private Database” <ul><li>Dynamic JDBC URL selection (ADF BC feature) </li></ul><ul><ul><li>Separate databases – one per customers </li></ul></ul><ul><ul><li>Separate instances in one or more databases </li></ul></ul><ul><li>Table/View level filtering </li></ul><ul><ul><li>Virtual Private Database (FGAC, RLS) </li></ul></ul><ul><ul><ul><li>Oracle RDBMS Enterprise Edition! </li></ul></ul></ul><ul><ul><li>Poor man’s VPD using Views with where clauses referencing the application context </li></ul></ul><ul><ul><ul><li>User identity, Organization identifier, … </li></ul></ul></ul>
  14. 16. Desirable SaaS features & facilities <ul><li>Dynamic, Wiki-like, context-sensitive help </li></ul><ul><li>Integration with incident registration </li></ul><ul><ul><li>Automatic passing of page, context data & logging </li></ul></ul><ul><li>‘ Simulate user’ option for the service desk </li></ul><ul><li>SLA metrics and application usage monitoring </li></ul><ul><li>Self Service style application management </li></ul><ul><li>‘ Toggle’ between factory, organization and user </li></ul><ul><li>Integrated workflow & collaboration </li></ul><ul><ul><li>Communication (email, chat), task list, tagging, … </li></ul></ul><ul><li>“ Register interest in” – notification of events </li></ul>
  15. 17. Proposal <ul><li>Let’s approach every end user application as a SaaS application! </li></ul><ul><ul><li>Both standard and custom applications </li></ul></ul>
  16. 18. Customization <ul><li>Allow tailoring of terminology to organization </li></ul><ul><ul><li>Dynamic, run-time resource bundle management </li></ul></ul><ul><ul><li>Resource Bundles per organization (and individual) </li></ul></ul><ul><li>Support for adding/hiding fields </li></ul><ul><li>Configuration of application behavior through organization and user level preferences </li></ul><ul><li>Personalization (my…) features for fine tuning </li></ul><ul><li>Workflow and task configuration </li></ul><ul><li>Configure menus and add new items </li></ul><ul><li>Fine tune look & feel – e.g. skins, styles, logos </li></ul>
  17. 19. Application ‘levels of reality’ Organization B Organization A
  18. 20. Application Rollout process… <ul><li>Development in the Factory </li></ul><ul><li>Production-time refining </li></ul><ul><li>Customer (organization) specific implementation </li></ul><ul><ul><li>By SaaS Helpdesk, on site consultant, Application Admin </li></ul></ul><ul><li>End User (dynamic, run-time) Personalization </li></ul>
  19. 21. Application Mode Switcher <ul><li>Application Managers can switch between Application Modes </li></ul><ul><ul><li>To view and manipulate the application at the selected level </li></ul></ul>
  20. 22. Customizing terminology <ul><li>Boilerplate text – prompt, title, button label, messages, help,… - come from resource bundles </li></ul><ul><ul><li>Built in support for i18n – language & country </li></ul></ul><ul><ul><li>Typically held in property files deployed in WAR </li></ul></ul><ul><li>We need to implement resource bundles </li></ul><ul><ul><li>that can be updated and refreshed at run time </li></ul></ul><ul><ul><ul><li>Or at least extended with any overrides of default values </li></ul></ul></ul><ul><ul><li>keys that support the notion of organization specific versions of bundle entries in addition to factory ones </li></ul></ul><ul><ul><li>maintenance facilities with self service support </li></ul></ul><ul><ul><ul><li>That presents bundle entries in understandable format </li></ul></ul></ul>
  21. 24. Implementing Self Service Customization of Resource Bundles <ul><li>Resource Bundle implemented as class (extend ListResourceBundle) that reads from database </li></ul><ul><li>Keys are constructed as: <base_key>_<org_id> </li></ul><ul><ul><li>And even <base_key>_<org_id>_<user_id> </li></ul></ul><ul><li>JSF page refers to resources through intermediate bean: #{bundleHandler[‘baseKey’]} </li></ul><ul><li>The bundleHandler bean first tries user specific key; if not found then org key and then base key </li></ul><ul><ul><li>It can also access several resource bundles – first the dynamic, database based one with overrides </li></ul></ul>
  22. 25. Application Settings for customizing application behavior <ul><li>Some Application Behavior is developed as dynamically configurable </li></ul><ul><ul><li>Through Preferences or Application Settings </li></ul></ul><ul><ul><li>Display : Locale, Format, Units for Height and Weight (converter parameters), feature on/off </li></ul></ul><ul><ul><li>Business logic : Default Values for new records, Validation parameters, Field & Button Authorization </li></ul></ul><ul><ul><li>Styling : Images, Fonts, Colors, Skins/Themes </li></ul></ul><ul><li>Settings can be configured at Factory (default), Organization and User level </li></ul><ul><ul><li>At run-time through self service pages </li></ul></ul>
  23. 26. Integrating Application Settings during development
  24. 27. Application Settings Data Model Date Format dd-mm-yyyy Use Photo Metric/ Imperial … Y m mm/dd/yyyy dd-mm-yy N Y N i Application Settings * Name o Factory Value o Allowable Values o Description o Data Type o Level Updatable o Updatable By Customized Settings * OrgId o Value o UserId o Comment
  25. 28. Custom Modules and Menus
  26. 29. Per customer menu definition
  27. 30. Custom(izing) fields <ul><li>Some fields are never used by some organizations and are therefore ‘in the way’ </li></ul><ul><ul><li>or they may even be legally forbidden in a country! </li></ul></ul><ul><li>Every organization finds the application lacking with one or more fields </li></ul><ul><ul><li>but no two organizations agree on which fields… </li></ul></ul><ul><li>To allow optimal customization, a SaaS application ideally allows </li></ul><ul><ul><li>Customization of standard items </li></ul></ul><ul><ul><li>Addition of custom items embedded in pages </li></ul></ul><ul><ul><ul><li>And associated with data records like ‘regular’ items </li></ul></ul></ul>
  28. 31. Field level page customization Hide standard fields, add custom
  29. 32. The standard application
  30. 33. Customized Application for Customer Kluwer
  31. 34. Objectives with application and architecture: Special functions <ul><li>Recent navigation-history </li></ul><ul><li>Document management </li></ul><ul><li>Customizable dashboard </li></ul><ul><li>Deep-link navigations </li></ul><ul><li>“ My workset” </li></ul><ul><li>Global search </li></ul><ul><li>Email-interaction </li></ul><ul><li>Temporary URLs with special data access </li></ul>
  32. 35. Recent Navigation History <ul><li>Every page & record combination is remembered – per user </li></ul><ul><li>The history is presented as series of links (bookmarks) to be clicked </li></ul><ul><li>Implementation based on a JSF RenderResponse PhaseListener </li></ul><ul><li>The HistoryController bean </li></ul><ul><ul><li>Records the current page/record </li></ul></ul><ul><ul><li>Exposes a collection of past pages </li></ul></ul>
  33. 36. Demonstrating Deep Link Navigation SaaS A Service API RSS <ul><li>To Do list shows task “Handle promotion for Employee Scott” </li></ul><ul><li>Selecting this task will bring up a popup loaded through a deep link into SaaS A </li></ul><ul><ul><li>Presenting the ‘Update Job’ page with the details of Scott loaded </li></ul></ul>Portlet API HTML Pages Workflow Engine ToDo News SaaS customer SaaS provider
  34. 37. Implementing Deep Linking in JSF <ul><li>URL like http://host/SaaSApp/UpdateJob/Scott </li></ul><ul><li>ServletFilter intercepts and redirects to proper JSF page – after storing parameters in the request </li></ul><ul><li>JSF PhaseListener intercepts the request to the page and prepares the backing beans </li></ul><ul><ul><li>Using the request parameters </li></ul></ul><ul><li>JSF page is rendered with proper data context </li></ul>
  35. 38. Demo Deep-Link Navigation
  36. 39. SOA across the cloud SaaS A SaaS B App D App C CMS Workflow Engine Email IM Fax Validation Service Service API internal internet LDAP Service API CMS Social API
  37. 40. Integration and SOA across the cloud <ul><li>Service API as programmatic alternative to UI </li></ul><ul><ul><li>RSS, SOAP, REST </li></ul></ul><ul><li>Event Listener registration to be notified by SaaS </li></ul><ul><li>Service Registration (Dependency Injection) </li></ul><ul><ul><li>Authentication/Authorization, Translation, Validation, Workflow, Communication </li></ul></ul><ul><li>Identity cross referencing (SaaS & local identifier) </li></ul><ul><li>Deep Link API for context sensitive navigation </li></ul><ul><li>UI Services (Portlets) to fit into Mashups & Portals </li></ul><ul><li>Data Export, Synch & Import – bulk facilities </li></ul><ul><li>“ internet service bus” – integrating multiple SaaSs </li></ul>
  38. 41. SOA across the cloud: data & operations SaaS A SaaS B App D App C CMS Workflow Engine Email IM Fax Validation Service Service API Service API Service API RSS internal internet listener registration service dependency injection LDAP Export Service API CMS Social API
  39. 42. Demonstrating cross-cloud event listeners SaaS A App D Service API Service API RSS listener registration <ul><li>Register App D’s Update Employee service as Event Listener for SaaS event </li></ul><ul><li>Update a salary in the SaaS UI </li></ul><ul><li>Event is routed to the remote listener that calls the App D Service API that “does something with it” </li></ul>Portlet API DB
  40. 44. SOA across the cloud: UI / Navigation / Process/Presentation SaaS A SaaS B App D App C CMS Workflow Engine Email IM Fax Portlet API Portlet API RSS Deep link Interface CMS internal internet Deep link Interface Portlet API Portlet API ToDo RSS RSS News HTML Pages Social API
  41. 45. Summary and Conclusions <ul><li>SaaS applications need special facilities </li></ul><ul><ul><li>Single instance & Customization & personalization </li></ul></ul><ul><ul><li>“ virtual private database” (real or poor man’s) </li></ul></ul><ul><ul><li>SLA management, metrics monitoring & self service </li></ul></ul><ul><ul><li>Cross-the-cloud UI, Service and Event interface </li></ul></ul><ul><li>ADF Faces & EL support dynamic front ends </li></ul><ul><li>Most applications could do with the same facilities: let’s regard all applications as SaaS! </li></ul><ul><li>Connexys is a STAR again: gaining market share, high customer satisfaction, more agility </li></ul>
  42. 46. AMIS Query: Forms2Future AMIS Services, Nieuwegein Aanmelden via Dinsdag 13 april 2010 16:00h – 20:00h