Document Life Cycle
Each document type can be bound to a life-cycle, which defines the possible:
It is not workflow, but workflow usually uses life-cycle of document as one of the state variable of the process, and life-cycle and listeners can be used to simulate simple processes.
Security Management
Always turned on inside repository and verified each time. Relies on a list of unitary permissions to grant / deby access. Permissions and permission groups can be extended.
Security is based on ACL model. It includes
In addition to above, there is a pluggable security policy system so extension can be made to plug custom code to verify security each time it's needed. However note performance penalty and to prevent, security policies can be converted in low level query filters when doing searches.
Indexing and Query
Meta data automatically indexed. Files by default full text indexed. A conversion provides full text conversion from most useful formats.
Configuration can be defined
Querys supports
No security clauses is required to be written in queries - it's always managed by repository.
Version
Any moment repository can be asked to create and archive a version from a document. It can be configured to be automatic or on demand. Each version has (1) a label (2) major version number (3) minor version number
Proxy
It's like a symbol link in Unix-like OS, points to a document (live or an archived version) and looks like a document from user point of view.
Event System
When repository performs an operation, events will be raised before and after and can be handled by custom handlers.
Handlers can be
VCS Storage
Document storage is through Nuxeo Visible Content Store (VCS), designed to provide a clean SQL Mapping. This means VCS does a normal mapping between XSD schemas and SQL database:
Binary files are in file system via BinaryManager using file's digest and deleted from file system via garbage collector.
VCS provides native Cluster mode so two or more servers can share the same data - just turn on Nuxeo VCS Cluster mode.
Transaction Management
All modifications are done inside a session and saved only when session is saved. In JTA/JCA aware environment session is bound to JCA Connector and be part of the global JTA transaction, saved when the transaction commits.
DocumentModel Adapter
Document is defined by schema and represents business objects - invoices, etc.
DocumentModel allow binding of behaviour (a custom Java class) to the model, so as to
Binding can be direct or associated to a facet.
Node - represents a complex value with several properties, a property can be
'hierarchy' table - parent-child information for nodes
Fragment tables -
'content' and 'file' table - files and binaries
'relation' table - internal relation between two documents or tags
'versions' table - about versions
'proxies' table - proxies
'locking' - locks
Security - in a dedicated table as one ACL (table 'acls') -> many simple ACEs