SlideShare a Scribd company logo
Nuxeo EP 5 Architecture Overview
An ECM platform Generic services and components with an « extension and customisation » model A framework for building ECM applications Thin client (Web) ECM applications Rich client (RCP) ECM applications ECM Service stack Prepackaged ECM applications Nuxeo EP 5 WebApp : a « turnkey »  ECM Web application Apogee + Nuxeo5EP : a « turnkey »  ECM Rich client application Nuxeo Enterprise Platform
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
Runtime layer: OSGi infrastructure Provides components and extension model Provides deployment services Core layer: embeddable document repository Extensible storage oriented services Service layer: an extensible set of ECM services Generic and configurable set of ECM services Client layer: UI building blocks Pluggable actions and views management Web or RCP based Nuxeo EP 5 – main layers
Deployment transparency OSGi platform (Eclipse RCP) or JEE platform (JBoss AS) components can be deployed client side or server side Extensibility  Nuxeo components expose an Extension Point system Components can be configured and extended via XML descriptors via Java classes Flexibility Choose components bundles according to business needs Nuxeo EP 5 – key architectural facts
Loosely coupled components Event handler system: Core and Runtime JMS Event handler: Service stack Client Layer: Seam Events / RCP Events bus Standards based JEE: EJB3, JSF, JMS, JTA Java: OSGi, JCR XML: XSD (Document type definitions) , RDF (relations) Open Source: Lucene, Jena RDF, JackRabbit, Seam, Restlets Web: http and webdav Web Services: JAX-RPC, JAX-WS, XML-RPC, REST Nuxeo EP 5 – key architectural facts
Multiple flavoured APIs POJO local API for services EJB3 remote API for services Web Services API (JAX-WS and WS-Addressing) REST API via Restlet Integration WebDAV API JS API for Ajax (via Seam Remoting / JSON) Integrated build and packaging system Maven 2.0 for build, test and packaging Nuxeo deployer for components deployment Nuxeo EP 5 – key architectural facts
Nuxeo EP 5 Core Overview
Document Repository Service Designed to be highly pluggable Storage backend independent Can be used standalone or with Nuxeo 5 EP Nuxeo EP can use several repositories at the same time Nuxeo Core
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
XSD based document types and schemas declaration Complex types support Inheritance support for schemas and document types Pluggable security model Ordered ACLs with Grant/Deny and inheritance Optional meta-data based security Pluggable versioning Versioning  policy Versioning storage Nuxeo Core – key features
Pluggable backend storage JCR: FileSystem or JDBC backend Non JCR backend in development (native SQL storage) Configurable life-cycle management Pluggable XML Import/Export pipe Lazy loading of documents Configurable pre-fetching Nuxeo Core – key features
Query support NXQL Query language BIRT ODA Connector Flexible API POJO API EJB3 remote API WS: JAX-RPC read API WebDAV API Nuxeo Core – key features
Nuxeo EP 5 ECM service stack overview
Nuxeo EP 5 ECM Stack Provides generic ECM services on top of Nuxeo Core Services are loosely coupled and can be used independently Most services provide 2 types of access Local API: POJO Remote API: EJB3 Service location is transparent via Nuxeo API Framework.getService() Services stack can be split on several JVMs Platform layout can be configured via XML Nuxeo Services : ECM Stack
Nuxeo Service – design pattern OSGi Component EJB3 Facade Document Model Seam Component Configuration via Extension Points Pluggable implementation JEE integration layer (JTA, JAAS, State Management) Remoting Service API to Document API  mapping Manipulate Nuxeo Services as Seam native components Service  Plugins Plugins Plugins Service interface  Adapter @Unwrap
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
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
Nuxeo EP 5 ECM clients
Standard Web client  Access all platform services via a browser Integrates latest JEE web technologies JSF 1.2 and Facelets Seam (link JSF and EJB3) Ajax4JSF Integrates a theme service Pluggable WebApp  contribute configuration contribute views contribute actions contribute themes ...
Web UI – Key features Totally pluggable Each component contributes some part of the UI Each service may have its web part Seam integration Nuxeo Services are transparently accessed as Seam objects Built-in infrastructure Forms / Layout engine Batching / Queries NX JSF Components Improve JSF REST navigation Pluggable URL encoding schemes Method bindings
Web UI: Views contribution NXAudit NXWorkflow NXRelations Contributed views
 
Apogee: Rich Client Mainly used for heavy contribution Structured text edition Picture management High productivity needs Uses Eclipse Native plugin system (OSGi based) Same model as Web UI client Some common services with UI Web Contribute configuration Contribute portlets Contribute actions ...
Apogee screenshots
Shell client Aimed at technical users Technical administration Mass document import Testing Plugin system to  contribute  new commands
Flash client Used for some specific projects Simple feature Very specific Look&Feel Uses Nuxeo RestAPI to communicate with the server
WCM client New WCM oriented “WebEngine” released very soon Wiki, Blogs Web sites Based on webmaster-friendly technologies FreeMarker Scripts Publisher principle Integrated with Nuxeo Runtime component model contribute templates contribute traversal hooks contribute scripts ...
Desktop integration clients Drag&Drop support IE Helper (.Net) / Firefox plugin (XPI) Server side access: Restlet and Seam Remoting Editor integration (liveEdit V2) nxedit Protocol handler Win32: .net protocol handler Multi-platform: Firefox plugin Launches editor process depending on mime-type First editor targets: MSOffice: via .Net COM Interop + MSO plugin Lock/Version/Save integrated Side Bar for browsing OpenOffice via Java/Uno + extension Server communication : JAX-WS / Restlets
Nuxeo EP 5 APIs
APIs Java API Available on all components (Services and Core) Remote Java API (EJB3) Available on almost all components (Services and Core) WS JAX-RPC Read API for most data WS JAX-WS Pluggable infrastructure ready (WS-Addressing) WebDAV Pluggable access to content repository
APIs XML-RPC Pluggable infrastructure (in use for projects) REST API Simple pluggable API  All basic features already exposed JSR 168 Portlet Simple portlets Portlets API JavaScript API via Seam Remoting Easily expose server-side controller to JS code

More Related Content

Nuxeo ECM - Architecture Overview - May 2008

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