The open source architecture by Nuxeo is designed to be highly flexible and extensible based on three fundamental principles:
- Decoupling of layers and services, to allow deployment in multiple scenarios
- Extensibility so that components and services can be easily adapted for specific use cases
- Modularity so that components can be assembled in many ways, enabling applications to scale up as well as scale lean
Nuxeo EP-based applications are an assembly of components and services configured through a powerful extension system to deliver an application. The architecture was inspired by the popular Eclipse RCP architecture, adapted to the server-side and the ECM world.
Platform modularity is based on two key technologies:
- OSGi Component Model - components are grouped in bundles to manage dependencies and deployment order. Application developers can deploy only the required components, helping keep applications lean and focused.
- Nuxeo Runtime Extension Point System - a management system that works with the OSGi model, comparable to the extension point system of Eclipse/Equinox. Extension points allow each component to define contribution points for configuring or extending the components, so that they are as generic and configurable as possible.
Nuxeo Enterprise Platform consists of four independent layers. Layers do not require the other layers, so an application builder can choose the one or more layers required for a particular solution:
- Nuxeo Runtime, the underlying component and service model, manages the connection with the application server
- Nuxeo Core, an advanced content repository offering storage services, content model definition, lifecycle, query, versioning, etc.
- ECM Services, an extensible set of generic, configurable services such as workflow, annotation, and import/export
- UI Frameworks offer a wide range of choices for building user interfaces adapted to the application context and the users. They include JSF/Seam, Nuxeo WebEngine, Google Web Toolkit and Eclipse RCP, among others.
Here are some slides about Nuxeo Archtecture.
The standard GUI of Nuxeo is developed using JSF, JBoss Seam 2.x and OSGi.
Custom extensions can be implemented and connected to Nuxeo as extensions to the existing extension points. During the startup, all GUI extensions are transformed into JSF (.xhtml) pages and deployed as a a single web application (nuxeo.war).
A custom GUI extension looks like this:
Nuxeo supports both PostgreSQL, MySQL, Oracle, Microsoft SQL and others.
The most recommended database is PostgreSQL.
MySQL is not recommended due the following reasons.
Database administration info can be found here
Nuxeo promotes an OSGi component model where every plugin is a Nuxeo OSGi bundle
A Nuxeo Bundle is a jar archive containing:
- An OSGI-based MANIFEST file
- Java classes
- XML Components
- Deployment descriptor
The MANIFEST file is used to:
- Define an id for the bundle,
- Define the dependencies of the bundles (ie: other bundles that should be present for this bundle to run),
- List XML components that are part of the bundle.
Here is an example of a MANIFEST file:
- More info about the Comopnent Model can be found here
- The docs about can be found OSGi Bundles, Components & Extension Points here
- Here is a list with the built-in extension points.
- BIRT Integration - for reporting