Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Navigation Service

928 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Navigation Service

  1. 1. NavigationCopyright © 2010. All rights Reserved, eXo Platform SAS
  2. 2. Navigation service•  Low level API between the portal and the MOP•  A data controller focusing on –  State management •  Historical problem •  Concurrent load/save/merge •  Correctness –  Model-less design •  Model API easy to plug •  Change notifications –  Performances •  Load what is necessary •  Built-in cache Copyright © 2010. All rights Reserved, eXo Platform SAS
  3. 3. Navigation service operations•  Load –  Load a fragment of a larger tree –  Create a detached snapshot that can be modified•  Update –  Update a fragment with the most recent state –  Suppose no transient changes•  Rebase –  Same as update but cope with changes•  Save –  Same as rebase but save to the persistent store Copyright © 2010. All rights Reserved, eXo Platform SAS
  4. 4. Data life cycle and flow Rebased  state   Persistent  state    Checkout  state   Copyright © 2010. All rights Reserved, eXo Platform SAS
  5. 5. Operation workflow Update   Rebase   Save   Get  fresh  copy   Rebase  changes   Save  to   storage   Update  checkout   Copyright © 2010. All rights Reserved, eXo Platform SAS
  6. 6. Conflict resolution•  The rebase operations takes a list of changes and replay on another tree, each change –  Operate on same input  OK –  Operate on different output  merge•  Conflict solved example with (a,b) –  User 1 insert 1: (a,1,b) –  User 2 insert 2 and save concurrently: (a,2,b) –  User 1 saves: (a,1,2,b)•  Conflict unsolved example with (a) –  User 1 insert 1: (a,a/1) –  User 2 removes a: () –  User 1 saves: failure Copyright © 2010. All rights Reserved, eXo Platform SAS
  7. 7. Model-less design•  Navigation are used for different purposes –  Internal UserNode objects –  GateIn API•  NodeContext<N> –  <N> is the model / API : cares about usage –  NodeContext : cares about state•  The NodeModel<N> factory –  Provided by the client –  Used by the service Copyright © 2010. All rights Reserved, eXo Platform SAS
  8. 8. Tree scope•  Required by most operation performed on the tree•  Defines what is loaded –  Scope.SINGLE –  Scope.CHILDREN –  Scope.GRANDCHILDREN –  Scope.ALL•  Plugable eventually (visitor) Copyright © 2010. All rights Reserved, eXo Platform SAS
  9. 9. Node changes•  Operations modifying the NodeContext<N> generate a flow of changes•  Used to synchronize an existing data model based on <N> –  Used by the navigation editor to update the state –  Used by navigation portlet to determine if the navigation should be refreshed Copyright © 2010. All rights Reserved, eXo Platform SAS
  10. 10. Node filtering•  The service has a built in node filtering capabilities –  Access control (inferred by underlying page) –  Time based: TEMPORAL nodes –  Use case based •  Navigation portlets don’t display SYSTEM nodes •  Navigation editor displays SYSTEM node but only for administrators Copyright © 2010. All rights Reserved, eXo Platform SAS
  11. 11. Internal API•  UserPortal –  Models the relationship between a user and a portal –  Replaces the UserPortalConfig object –  Built on top of the NavigationService –  Defines notion of UserPortalFilter to filter navigations –  Resolve path to nodes •  Future legacy •  Emulation will be performed to redirect to correct page Copyright © 2010. All rights Reserved, eXo Platform SAS
  12. 12. Internal API•  UserNode –  The <N> of UserContext –  Translates the localizable values (label) –  Remove notion of stored URI, instead URI is rebuilt from its path Copyright © 2010. All rights Reserved, eXo Platform SAS
  13. 13. Navigation controller•  An effort started 6 months ago and mostly finished (85%) –  Decouple the request URL and the handling in the portal in a flexible and configurable manner –  Associate a unique resource to an URL (REST)•  Will be merged after the new navigation service is done Copyright © 2010. All rights Reserved, eXo Platform SAS
  14. 14. URL handling•  Navigation controller provides an API for generating URL from a resource•  In particular the portal needs to generate URL for a given navigation node Copyright © 2010. All rights Reserved, eXo Platform SAS
  15. 15. Performances concerns•  On default navigation, SQL activity was reduced by ½•  On large navigation, SQL activity is dominated by the first 2 levels instead of the whole navigation previously•  Other fixes were applied to handle numerous pages –  Better pagination support –  Functional changes Copyright © 2010. All rights Reserved, eXo Platform SAS
  16. 16. Roadmap•  Navigation Service –  developed against exogtn 3.1.7-REBASED (very close to EPP 5.1) –  ported to exogtn 3.2.x for 3.2.0-beta3 (end of June) and GateIn trunk•  Navigation i18n –  Will be part of 3.2.0-beta3 and GateIn trunk•  Navigation controller –  The current work will be remerged after 3.2.0-beta3 and finished Copyright © 2010. All rights Reserved, eXo Platform SAS
  17. 17. Next steps•  Apply the same model to pages and layouts after GateIn 3.2 Copyright © 2010. All rights Reserved, eXo Platform SAS

×