nuxeo ecm - architecture overview - may 2008

Download Nuxeo ECM - Architecture Overview - May 2008

If you can't read please download the document

Upload: stefane-fermigier

Post on 16-Apr-2017

9.508 views

Category:

Technology


0 download

TRANSCRIPT

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