Download - Nuxeo ECM - Architecture Overview - May 2008
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
Nuxeo Core
AuditWorkflowRelationsTransformationsSearch/IndexingDirectoriesImport/Export...Web client
Flex client
RCP client
Rest/WS APIWebApp
Presentation
Service
Repository
Nuxeo Runtime
Component Model and deployment services
PluginPluginPluginPluginPluginPlugin
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 ModelSecurity ModelLifeCycle PolicyVersioningQueryPluggable Security policiesPluggable LifeCycle storageConfigurable LifeCyclesPluggable version storageConfigurable versionningConfigurable doctypesEvent systemPluggable event handlersStorage modelPluggable storage backendsXMLCodeXMLCodeXMLCodeXSDCodeXMLCode
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
Service
PluginsPluginsPluginsOSGi Component
Service interface
EJB3 Facade
AdapterDocument Model
@UnwrapSeam 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
Nuxeo Services - examples
AuditServiceWorflowServiceConfigurable audit based on JMS
Abstract Workflow and BPM engine (jBPM)
RelationServiceAbstract Relation engine (RDF / Jena)
TranformationServicePluggable transformation engine (PDF, text...)
SearchServiceAbstract Indexing and Query engine (NXQL) (Compass/Lucene)
DirectoryServiceRecord engine with SQL/LDAP support
UserManagerServiceUsers and Groups management on top of Directories
MimeTypeServiceMime-type detection service
CommentServiceManage comments on documents
Nuxeo Services - examples
EventServiceFileManagerServiceMessaging API on top of JMS
File management API (mapping, unicity...)
TypeManagerServiceHigh level document type management
LayoutServiceService to manage layouts associated to doc types
ActionServiceManage actions and conditions
URLServiceManage URL codecs
AuthenticationServiceManage pluggable authentication on top of JAAS
PlacefulConfigServiceManage placeful configurations
NotificationServiceManage user subscriptions to notifications
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
NXAuditNXWorkflowNXRelations
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
Click to edit the title text format
Click to edit the outline text format
Second Outline Level
Third Outline Level
Fourth Outline Level
Fifth Outline Level
Sixth Outline Level
Seventh Outline Level
Eighth Outline Level
Ninth Outline Level
Click to edit the title text format
Click to edit the outline text format
Second Outline Level
Third Outline Level
Fourth Outline Level
Fifth Outline Level
Sixth Outline Level
Seventh Outline Level
Eighth Outline Level
Ninth Outline Level