In this section
| Nuxeo CoreOverviewNuxeo Core is an embeddable document management core, based on Nuxeo Runtime. It provides all necessary low-level services to define, store, manage, audit, request and search content. It is the kernel of Nuxeo 5 and can also be embedded in third-party applications to provide advanced content management features. It can run on any Java platform, can be easily extended using plug-ins (thanks to Nuxeo Runtime) and implements JCA (Java EE Connector Architecture) to be easily plugged into existing applications or information systems. Highlighted features
Nuxeo Core offers a light content/document management core providing all the services you need to manage content in any application. Downloads and source codeSource CodeSource code is available in the SVN repository or, for tagged releases, on our download site. A Maven site is also available: Nuxeo Maven Site. Demo RCP applicationA crude Eclipse RCP-based applications has been developed to demonstrate some of the capabilities of Nuxeo Core. It is available as compiled binaries for Linux, Windows and MacOS. Its source code is in the demo/Apogee/ECMDemo module in the SVN repository. A short doc explaining how to use the demo is also available (see below). Documentation
Detailed overviewModelThis component defines all interfaces, paradigms and foundations of Nuxeo Core and Nuxeo 5. Storage ManagerThis service handles the content physical storage. It manages database connections and storage/retrieval of content according to content schemas and models. From a technical point of view, the Storage Manager defines one or more Content Sources representing physical databases and one or more Repositories (stored in a Content Source) that act as content repository. This abstraction enables using different data sources such as a JCR API-compliant engine (like Apache Jackrabbit), an XML database, a pure RDBMS or an ODBMS to persist the content, following your needs. By default, Nuxeo Core stores the content into Apache Jackrabbit (the leading Java Content Repository engine), which uses a SQL database for physical storage. Version ManagerThe Version Manager is responsible for version management. It interacts with the underlying content source to effectively create a new version, retrieve or restore a previous one, track changesets, manage check-in and check-out actions, etc. Nuxeo Core Version Manager supports different versioning models:
The Version Manager is used by all Nuxeo Core services and Nuxeo 5 components to manage versions. It prepares Nuxeo Core to be able to improve content repository version management (adding capacities such as changesets) or to use external version management systems such as Subversion, when needed. Content Type ManagerThis component manages Content Schemas and Content Types. A content schema is a set of fields (metadata, custom data, files). A content type is a set of schemas, it describes the object the user will create. For example: a “report”, a “document”, an “invoice”. You can define as many content types as you need. Sharing schemas between content types allows for easy management of metadata schemes. You can easily modify your “common” schema to add some new metadata for all documents. You can even make schemas inherit from others, so you can easily manage the content structure (for example, the “common” schema inherits from the “dublincore” schema and adds some specific metadata and the “invoice” schema uses “common” and adds some metadata specific to invoicing). It applies “object orientation” to the content structure definition. The Content Type Manager consumes XML Schemas (W3C XSD) and makes them available to build content types. The use of pure XML Schemas enforces standard compatibility and creation ease (for instance to add a DublinCore schema, just drop the XSD provided by the Dublin Core Metadata Initiative; to add a NewsML schema, just drop the NewsML XSD from IPTC). To define your own schemas, you just need to create XML schemas using graphical tools and register them into Nuxeo 5. From a technical point of view, the Content Type Manager injects into the Content Source registered schemas to enforce data integrity at the database/repository level. Moreover, it is possible to register new schemas and content types using extension points (for example, a “Blog” component can register content types “BlogSite” and “BlogEntry” along related content schemas). Query Engine and NXQLThe Query Engine is a really powerful and innovating service. It offers a way to query the content repository and related resources (audit trail, relations, etc.) using a common SQL-like language called NXQL. NXQL is “SQL for content”. With NXQL, it is easy to create reports from Nuxeo 5 or to provide advanced search / query capacity to power users. NXQL is basically a subset of SQL that maps SQL concepts to the ECM world. It also offers several axes to write a query, depending on what the user is looking for. For example, you can write a query using content types as tables (SELECT title, date, total FROM types.invoice WHERE date > 01/01/2006) or using schemas as tables (SELECT title, description, modified FROM schemas.dublincore WHERE date > 01/01/2006 GROUP BY type). NXQL supports almost all read-only SQL features, even JOIN and GROUP BY. The Query Engine can return either a result set, either content objects. Thus, NXQL and the query engine can be used to create all the queries your application needs (listing of documents, listing of versions for a document, search user interface, dashboards, etc.). Internally, the Query Engine transforms NXQL queries into the content source native query language and optimizes it to get results as fast as possible. Last, but not least, an Eclipse BIRT connector (ODA) is available to use Nuxeo 5 / Nuxeo Core as data source to create reports from BIRT. An OLE DB connector is under development and will allow querying the content repository from all Microsoft / .Net softwares. It opens unlimited reporting capacity using comment reporting tools. Nuxeo 5 content will also be directly usable in MS-Word documents or MS-Excel tables. Security ManagerThe Security Manager Service is in charge of storing/retrieving/checking access rights in the repository. This service only provides explicit access control checks (Nuxeo 5 EP provides automatic access control checks, at the Java EE level, integrating the Security Manager with JAAS with a bit of magic and AOP). The security model is based on an Access Control List model (using Access Control Policy and Access Control Entries), where “permissions” are “granted” or “denied” to “principals”. A principal is a user or a group of users. A permission can be a group of finer-grained permissions (for example the permission “Modify” can be composed by “write”, “read”, “publish” permissions), easing permission management and maintenance. Technically, the security manager takes in charge the storage of the security on the content and related checks. Of course, the security is contextual (meaning that the security can be applied / changed on any content). By default the security of a child is inherited from its parent, and can be overridden or refined. Moreover, to optimize security storage/check the security is not directly stored on the content, but in a specific, highly-optimized structure in an SQL table allowing light-speed security checks. When needed, it’s possible to store security information directly on the document. In short, Nuxeo Core’s Security Manager offers an efficient, centralized and flexible security model that can be used to implement any high-level security model. Event ServiceThe Event Service offers an abstract interface to send and receive messages. This service is designed to be plugged into a message bus, through an extension point. On a Java EE platform, it uses the JMS bus. Nuxeo Core is then able to communicate with all components of the platform. Moreover, this service can be used for high-speed in-memory communication between Nuxeo Core services. Core FacadeThe Java EE adapter maps Nuxeo Core features to EJB components and adds some low-level Java EE integration and services such as JAAS integration, transparent security checks, clustering, messaging, caching and remoting. From this layer, all Nuxeo Core services are natively accessible from the Java EE platform. Life Cycle ManagementWithin organizations, documents are often regulated. At a given time, a document has a state or is within a phase. The way the document transitions in compliance with regulations from one state to another (or from one phase to another) is in most of the cases defined and managed by business processes or workflows. Nuxeo Core itself doesn't embed a workflow engine, or a BPM engine, as such. It provides however a generic way to define document life cycles, the way the document properties related to its life cycle are stored and a way to specify at deployment time which document types follow which life cycles. Thus, the workflow engine that will be deployed along with Nuxeo Core will leverage the API exposed by Nuxeo Core to set the life cycle properties. The APIs defined in Nuxeo Core regarding life cycle are highly inspired from the JSR-283 (JCR2) specifications that are still in a draft state at the time of writing this document On the other hand, Nuxeo EP provides a BPM engine that knows how to leverage the Nuxeo Core life cycle API. |