CPS Platform v3.4 is already the most complete Enterprise Content Management platform in the open source market. Its large feature scope offers a great choice of functional components to address the whole ECM scope. This leads CPS to be used for many different document-centric applications like paper and electronic mail management for large organizations, pure document management for the nuclear industry, collaboration platform, civil-state acts management, web content management, knowledge base management, record management, intranets, and a lot more...
Our R&D team has been working for a few months on the next major release of CPS: CPS 4 (codenamed YellowCake). The goals are to open CPS to other technologies, leverage major industry standards, enable high-end scalability and keep all the good features and technical coherence already present in the framework. We have worked a lot on prototyping and experimenting some deep improvements to the core infrastructure.
I am really excited to present and open it to the community now, after some time of raw-thinking and prototyping. I hope you will like what you will read below as much as I do. Do not hesitate to send comments on the mailing-list.
Here are YellowCake's main targets :
- High-end scalability: 10+ million documents, 5+ terabytes of data, thousands of users in one instance.
- Open, Integrate and Extend: enable developers to write CPS components in all major languages and technologies and allow the use of an external message broker (JMS) to plug CPS in the enterprise's information system. Creating components in plain old Python (POP :-), Java, C# or PHP that can react to events and/or control CPS will be dramatically easy. Let customer and developer choose their technologies!
- Definitely standard-based: XMLSchemas to describe content types, JCR level2 compliant repository, JSR-168 portlets for integration in J2EE portals, XForms for content forms, web-services, RDF for relations, etc.
- Leverage best-of-breed open source components from Apache, JBoss, Eclipse, etc.
- Seamless migration from CPS 3: provide tools to automatically migrate configuration and content from CPS 3-based applications to the YellowCake infrastructure (thanks to CPS 3's current configuration infrastructure).
New infrastructure components
We plan to keep all good features and concepts from CPS 3 (CPSSchemas, CPSDocument, CPSRepository, CPSDirectory, CPSWorkflow, overall technical architecture, applicative components, etc.). We are just extending and improving them to embrace industry-standard and existing technologies.
- CPSRepository: a Java Content Repository (JCR) compliant content repository that will enable CPS content to be directly accessed from a JCR level2 compliant API. Relying on the robust Apache Jackrabbit, it will allow us to share maintenance costs of this common pieces of infrastructure with the open-source community, while focusing on extending the platform for the benefit of our customers, users and developers.
Note: Nuxeo has joined the JSR-283 (aka JCR 2) expert group.
- Capsule: Capsule is the JCR-wrapping component that enables Zope and CPS to interact with a JCR content repository. Capsule can transparently store and retrieve CPS content objects into Jackrabbit (or any JCR level 2 database). It relies on Jackrabbit for content storage and retrieval.
Capsule takes care of Zope and Jackrabbit transactions integration (handling XA transactions in Zope). From a technical point of view, Capsule is based on ZODB.Persistence and ZODB.Connection. It acts as a ZODB mount point, that provide transparent access to the JCR.
To ease the migration and minimize impacts on existing CPS components/applications, CPSSchemas will be kept backward compatible and will load its schemas directly from Jackrabbit. Content types will be defined using XMLSchema and dynamically loaded into Jackrabbit at runtime to create NodeTypeDefinitions. To read more about Capsule technical specs, please consult the SVN repository, for now: nuxeo.capsule and nuxeo.jcr.
- CPSRemoting: bidirectional cross-language integration service that will allow external components to interact and to provide services within the CPS Platform. CPSRemoting exposes an easy-to-use high-level API and distribute CPS events to external event services. It is the bridge between CPS and all other components of your information system. Take any C++, Java, Python, or .NET component, then write a simple interface and plug it into the CPS component registry. That is all you require to extend or to integrate CPS Platform!
- NXLucene and CPSLuceneCatalog: NXLucene is a webservice-enabled indexing server based on Lucene that provides to any application a remote indexing and search service.
CPSLuceneCatalog is a backward-compatible PortalCatalog/ZCatalog replacement for CPS, relaying on NXLucene. It enables any CPS 3.4 instance to instantly use the power of Lucene as its indexing/search service. Furthermore NXLucene and CPSLuceneCatalog can be used to index several CPS instances (and virtually any application) in the same indexing engine, hence providing unified search across all content-stores. Typical performances on a real-world application (the French law: +190k documents, 50+ fields/document): <5ms to get results from NXLucene and <0.15s to display results in the CPS UI. NXLucene offers XML-RPC and SOAP interfaces (and will soon provide ICE too).For more information, see: NXLucene website and source code (NXLucene, nuxeo.lucene, CPSLuceneCatalog).
- CPSMessaging: CPS EventService is one of the key components of the current CPS 3 infrastructure, allowing a global publish/subscribe event system within the CPS platform. For YellowCake, we are replacing it with CPSMessaging, that extend the concept to plug CPS onto an external JMS-compliant message bus (JBoss Messaging or ActiveMQ). It will dramatically eases existing application integration. For example, thanks to CPSMessaging, you can integrate CPS with your JMS-based message bus (or ESB).
- CPSPortlets: JSR-168 compatibility is being added to CPS portlet engine. This will enable CPS to be easily integrated into any JSR-168 compliant portal.
- CPSAudit: a global auditing and logging service, that log all events that occur in the platform into an SQL database. CPSAudit is used, for example, to track content history, workflow actions, and user actions (replacing current CPS mechanisms). CPSAudit is designed to easily create custom reports using any graphical reporting tool (like Eclipse BIRT). CPSAudit can be leverage to create, for example, FDA / SarBox compliant audit reports.
New applicative-level components
Along these core improvements to the CPS infrastructure, new applicative level components are on the way and will be the topic of a future post (give me 5 days :-).
Here is the teaser: reporting, retention management, rich client, physical archive management, Microsoft Office integration, etc.
Nuxeo's team and the CPS community would be delighted to get feedback and answer questions.
To get more informations and join the community:
- Design documentation and early code is available from our SVN
- subscribe to the mailing-list to send feedback and discuss.
- CPS Community Portal
We hope to see you there soon!
(Post originally written by Eric Barroca on the old Nuxeo blogs.)