Nuxeo ECM - Architecture Overview - May 2008


Published on

Overview of the Nuxeo open source ECM platform architecture.

Published in: Technology, Education
  • Be the first to comment

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

No notes for slide

Nuxeo ECM - Architecture Overview - May 2008

  1. 1. Nuxeo EP 5 Architecture Overview
  2. 2. <ul><li>An ECM platform </li></ul><ul><ul><ul><li>Generic services and components with an « extension and customisation » model </li></ul></ul></ul><ul><ul><li>A framework for building ECM applications </li></ul></ul><ul><ul><ul><li>Thin client (Web) ECM applications </li></ul></ul></ul><ul><ul><ul><li>Rich client (RCP) ECM applications </li></ul></ul></ul><ul><ul><ul><li>ECM Service stack </li></ul></ul></ul><ul><li>Prepackaged ECM applications </li></ul><ul><ul><ul><li>Nuxeo EP 5 WebApp : a « turnkey » ECM Web application </li></ul></ul></ul><ul><ul><ul><li>Apogee + Nuxeo5EP : a « turnkey » ECM Rich client application </li></ul></ul></ul>Nuxeo Enterprise Platform
  3. 3. Nuxeo Enterprise Platform Web client Flex client RCP client Presentation Service Repository Nuxeo Runtime Component Model and deployment services Nuxeo Core Audit Workflow Relations Transformations Search/Indexing Directories Import/Export ... Rest/WS API WebApp Plugin Plugin Plugin Plugin Plugin Plugin
  4. 4. <ul><li>Runtime layer: OSGi infrastructure </li></ul><ul><ul><li>Provides components and extension model </li></ul></ul><ul><ul><li>Provides deployment services </li></ul></ul><ul><li>Core layer: embeddable document repository </li></ul><ul><ul><li>Extensible storage oriented services </li></ul></ul><ul><li>Service layer: an extensible set of ECM services </li></ul><ul><ul><li>Generic and configurable set of ECM services </li></ul></ul><ul><li>Client layer: UI building blocks </li></ul><ul><ul><li>Pluggable actions and views management </li></ul></ul><ul><ul><li>Web or RCP based </li></ul></ul>Nuxeo EP 5 – main layers
  5. 5. <ul><li>Deployment transparency </li></ul><ul><ul><li>OSGi platform (Eclipse RCP) or JEE platform (JBoss AS) </li></ul></ul><ul><ul><li>components can be deployed client side or server side </li></ul></ul><ul><li>Extensibility </li></ul><ul><ul><li>Nuxeo components expose an Extension Point system </li></ul></ul><ul><ul><li>Components can be configured and extended </li></ul></ul><ul><ul><ul><li>via XML descriptors </li></ul></ul></ul><ul><ul><ul><li>via Java classes </li></ul></ul></ul><ul><li>Flexibility </li></ul><ul><ul><li>Choose components bundles according to business needs </li></ul></ul>Nuxeo EP 5 – key architectural facts
  6. 6. <ul><li>Loosely coupled components </li></ul><ul><ul><li>Event handler system: Core and Runtime </li></ul></ul><ul><ul><li>JMS Event handler: Service stack </li></ul></ul><ul><ul><li>Client Layer: Seam Events / RCP Events bus </li></ul></ul><ul><li>Standards based </li></ul><ul><ul><li>JEE: EJB3, JSF, JMS, JTA </li></ul></ul><ul><ul><li>Java: OSGi, JCR </li></ul></ul><ul><ul><li>XML: XSD (Document type definitions) , RDF (relations) </li></ul></ul><ul><ul><li>Open Source: Lucene, Jena RDF, JackRabbit, Seam, Restlets </li></ul></ul><ul><ul><li>Web: http and webdav </li></ul></ul><ul><ul><li>Web Services: JAX-RPC, JAX-WS, XML-RPC, REST </li></ul></ul>Nuxeo EP 5 – key architectural facts
  7. 7. <ul><li>Multiple flavoured APIs </li></ul><ul><ul><li>POJO local API for services </li></ul></ul><ul><ul><li>EJB3 remote API for services </li></ul></ul><ul><ul><li>Web Services API (JAX-WS and WS-Addressing) </li></ul></ul><ul><ul><li>REST API via Restlet Integration </li></ul></ul><ul><ul><li>WebDAV API </li></ul></ul><ul><ul><li>JS API for Ajax (via Seam Remoting / JSON) </li></ul></ul><ul><li>Integrated build and packaging system </li></ul><ul><ul><li>Maven 2.0 for build, test and packaging </li></ul></ul><ul><ul><li>Nuxeo deployer for components deployment </li></ul></ul>Nuxeo EP 5 – key architectural facts
  8. 8. Nuxeo EP 5 Core Overview
  9. 9. <ul><li>Document Repository Service </li></ul><ul><ul><ul><li>Designed to be highly pluggable </li></ul></ul></ul><ul><ul><ul><li>Storage backend independent </li></ul></ul></ul><ul><ul><ul><li>Can be used standalone or with Nuxeo 5 EP </li></ul></ul></ul><ul><li>Nuxeo EP can use several repositories at the same time </li></ul>Nuxeo Core
  10. 10. Nuxeo Core - extensibility Document Model Security Model LifeCycle Policy Versioning Query Pluggable Security policies Pluggable LifeCycle storage Configurable LifeCycles Pluggable version storage Configurable versionning Configurable doctypes Event system Pluggable event handlers Storage model Pluggable storage backends XML Code XML Code XML Code XSD Code XML Code
  11. 11. <ul><li>XSD based document types and schemas declaration </li></ul><ul><ul><li>Complex types support </li></ul></ul><ul><ul><li>Inheritance support for schemas and document types </li></ul></ul><ul><li>Pluggable security model </li></ul><ul><ul><li>Ordered ACLs with Grant/Deny and inheritance </li></ul></ul><ul><ul><li>Optional meta-data based security </li></ul></ul><ul><li>Pluggable versioning </li></ul><ul><ul><li>Versioning policy </li></ul></ul><ul><ul><li>Versioning storage </li></ul></ul>Nuxeo Core – key features
  12. 12. <ul><li>Pluggable backend storage </li></ul><ul><ul><li>JCR: FileSystem or JDBC backend </li></ul></ul><ul><ul><li>Non JCR backend in development (native SQL storage) </li></ul></ul><ul><li>Configurable life-cycle management </li></ul><ul><li>Pluggable XML Import/Export pipe </li></ul><ul><li>Lazy loading of documents </li></ul><ul><ul><li>Configurable pre-fetching </li></ul></ul>Nuxeo Core – key features
  13. 13. <ul><li>Query support </li></ul><ul><ul><li>NXQL Query language </li></ul></ul><ul><ul><li>BIRT ODA Connector </li></ul></ul><ul><li>Flexible API </li></ul><ul><ul><li>POJO API </li></ul></ul><ul><ul><li>EJB3 remote API </li></ul></ul><ul><ul><li>WS: JAX-RPC read API </li></ul></ul><ul><ul><li>WebDAV API </li></ul></ul>Nuxeo Core – key features
  14. 14. Nuxeo EP 5 ECM service stack overview
  15. 15. <ul><li>Nuxeo EP 5 ECM Stack </li></ul><ul><ul><li>Provides generic ECM services on top of Nuxeo Core </li></ul></ul><ul><ul><li>Services are loosely coupled and can be used independently </li></ul></ul><ul><li>Most services provide 2 types of access </li></ul><ul><ul><ul><li>Local API: POJO </li></ul></ul></ul><ul><ul><ul><li>Remote API: EJB3 </li></ul></ul></ul><ul><ul><ul><li>Service location is transparent via Nuxeo API </li></ul></ul></ul><ul><ul><ul><ul><li>Framework.getService() </li></ul></ul></ul></ul><ul><ul><li>Services stack can be split on several JVMs </li></ul></ul><ul><ul><ul><li>Platform layout can be configured via XML </li></ul></ul></ul>Nuxeo Services : ECM Stack
  16. 16. Nuxeo Service – design pattern OSGi Component EJB3 Facade Document Model Seam Component <ul><ul><ul><ul><li>Configuration via Extension Points </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Pluggable implementation </li></ul></ul></ul></ul><ul><ul><ul><ul><li>JEE integration layer (JTA, JAAS, State Management) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Remoting </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Service API to Document API mapping </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Manipulate Nuxeo Services as Seam native components </li></ul></ul></ul></ul>Service Plugins Plugins Plugins Service interface Adapter @Unwrap
  17. 17. Nuxeo Services - examples Configurable audit based on JMS Abstract Workflow and BPM engine (jBPM) Abstract Relation engine (RDF / Jena) Pluggable transformation engine (PDF, text...) Abstract Indexing and Query engine (NXQL) (Compass/Lucene) Record engine with SQL/LDAP support Users and Groups management on top of Directories Mime-type detection service Manage comments on documents AuditService WorflowService RelationService TranformationService SearchService DirectoryService UserManagerService MimeTypeService CommentService
  18. 18. Nuxeo Services - examples Messaging API on top of JMS File management API (mapping, unicity...) High level document type management Service to manage layouts associated to doc types Manage actions and conditions Manage URL codecs Manage pluggable authentication on top of JAAS Manage placeful configurations Manage user subscriptions to notifications EventService FileManagerService TypeManagerService LayoutService ActionService URLService AuthenticationService PlacefulConfigService NotificationService
  19. 19. Nuxeo EP 5 ECM clients
  20. 20. Standard Web client <ul><li>Access all platform services via a browser </li></ul><ul><li>Integrates latest JEE web technologies </li></ul><ul><ul><li>JSF 1.2 and Facelets </li></ul></ul><ul><ul><li>Seam (link JSF and EJB3) </li></ul></ul><ul><ul><li>Ajax4JSF </li></ul></ul><ul><li>Integrates a theme service </li></ul><ul><li>Pluggable WebApp </li></ul><ul><ul><li>contribute configuration </li></ul></ul><ul><ul><li>contribute views </li></ul></ul><ul><ul><li>contribute actions </li></ul></ul><ul><ul><li>contribute themes </li></ul></ul><ul><ul><li>... </li></ul></ul>
  21. 21. Web UI – Key features <ul><li>Totally pluggable </li></ul><ul><ul><li>Each component contributes some part of the UI </li></ul></ul><ul><ul><li>Each service may have its web part </li></ul></ul><ul><li>Seam integration </li></ul><ul><ul><li>Nuxeo Services are transparently accessed as Seam objects </li></ul></ul><ul><li>Built-in infrastructure </li></ul><ul><ul><li>Forms / Layout engine </li></ul></ul><ul><ul><li>Batching / Queries </li></ul></ul><ul><ul><li>NX JSF Components </li></ul></ul><ul><li>Improve JSF </li></ul><ul><ul><li>REST navigation </li></ul></ul><ul><ul><li>Pluggable URL encoding schemes </li></ul></ul><ul><ul><li>Method bindings </li></ul></ul>
  22. 22. Web UI: Views contribution NXAudit NXWorkflow NXRelations Contributed views
  23. 24. Apogee: Rich Client <ul><li>Mainly used for heavy contribution </li></ul><ul><ul><li>Structured text edition </li></ul></ul><ul><ul><li>Picture management </li></ul></ul><ul><ul><li>High productivity needs </li></ul></ul><ul><li>Uses Eclipse Native plugin system (OSGi based) </li></ul><ul><ul><li>Same model as Web UI client </li></ul></ul><ul><ul><li>Some common services with UI Web </li></ul></ul><ul><ul><li>Contribute configuration </li></ul></ul><ul><ul><li>Contribute portlets </li></ul></ul><ul><ul><li>Contribute actions </li></ul></ul><ul><ul><li>... </li></ul></ul>
  24. 25. Apogee screenshots
  25. 26. Shell client <ul><li>Aimed at technical users </li></ul><ul><ul><li>Technical administration </li></ul></ul><ul><ul><li>Mass document import </li></ul></ul><ul><ul><li>Testing </li></ul></ul><ul><li>Plugin system to contribute new commands </li></ul>
  26. 27. Flash client <ul><li>Used for some specific projects </li></ul><ul><ul><li>Simple feature </li></ul></ul><ul><ul><li>Very specific Look&Feel </li></ul></ul><ul><li>Uses Nuxeo RestAPI to communicate with the server </li></ul>
  27. 28. WCM client <ul><li>New WCM oriented “WebEngine” released very soon </li></ul><ul><ul><li>Wiki, Blogs </li></ul></ul><ul><ul><li>Web sites </li></ul></ul><ul><li>Based on webmaster-friendly technologies </li></ul><ul><ul><li>FreeMarker </li></ul></ul><ul><ul><li>Scripts </li></ul></ul><ul><ul><li>Publisher principle </li></ul></ul><ul><li>Integrated with Nuxeo Runtime component model </li></ul><ul><ul><li>contribute templates </li></ul></ul><ul><ul><li>contribute traversal hooks </li></ul></ul><ul><ul><li>contribute scripts </li></ul></ul><ul><ul><li>... </li></ul></ul>
  28. 29. Desktop integration clients <ul><li>Drag&Drop support </li></ul><ul><ul><li>IE Helper (.Net) / Firefox plugin (XPI) </li></ul></ul><ul><ul><li>Server side access: Restlet and Seam Remoting </li></ul></ul><ul><li>Editor integration (liveEdit V2) </li></ul><ul><ul><li>nxedit Protocol handler </li></ul></ul><ul><ul><ul><li>Win32: .net protocol handler </li></ul></ul></ul><ul><ul><ul><li>Multi-platform: Firefox plugin </li></ul></ul></ul><ul><ul><li>Launches editor process depending on mime-type </li></ul></ul><ul><ul><li>First editor targets: </li></ul></ul><ul><ul><ul><li>MSOffice: via .Net COM Interop + MSO plugin </li></ul></ul></ul><ul><ul><ul><ul><li>Lock/Version/Save </li></ul></ul></ul></ul><ul><ul><ul><ul><li>integrated Side Bar for browsing </li></ul></ul></ul></ul><ul><ul><ul><li>OpenOffice via Java/Uno + extension </li></ul></ul></ul><ul><ul><li>Server communication : JAX-WS / Restlets </li></ul></ul>
  29. 30. Nuxeo EP 5 APIs
  30. 31. APIs <ul><li>Java API </li></ul><ul><ul><li>Available on all components (Services and Core) </li></ul></ul><ul><li>Remote Java API (EJB3) </li></ul><ul><ul><li>Available on almost all components (Services and Core) </li></ul></ul><ul><li>WS JAX-RPC </li></ul><ul><ul><li>Read API for most data </li></ul></ul><ul><li>WS JAX-WS </li></ul><ul><ul><li>Pluggable infrastructure ready (WS-Addressing) </li></ul></ul><ul><li>WebDAV </li></ul><ul><ul><li>Pluggable access to content repository </li></ul></ul>
  31. 32. APIs <ul><li>XML-RPC </li></ul><ul><ul><li>Pluggable infrastructure (in use for projects) </li></ul></ul><ul><li>REST API </li></ul><ul><ul><li>Simple pluggable API </li></ul></ul><ul><ul><li>All basic features already exposed </li></ul></ul><ul><li>JSR 168 Portlet </li></ul><ul><ul><li>Simple portlets </li></ul></ul><ul><ul><li>Portlets API </li></ul></ul><ul><li>JavaScript API via Seam Remoting </li></ul><ul><ul><li>Easily expose server-side controller to JS code </li></ul></ul>