Skip to content. Skip to navigation

Guide CMS

Collaborative Portal Server (CPS)

by Guy Vigneault last modified 2008-05-01 22:10
Keywords: Nuxeo

Collaborative Portal Server (CPS)

Logo Collaborative Portal Server (CPS)CPS (Collaborative Portal Server) is developed by French open source software company Nuxeo SAS and an external community of developers. The software is distributed under the GPL. CPS was first developed in 2003 to fill a gap between what could be done on a basic platform of Zope and the Content Management Framework (CMF) and true "€œEnterprise Content Management"€ solutions such as what was being offered in the proprietary software market. The CPS application, along with other Nuxeo products, is based on the CPS Platform which has been architected as a comprehensive ECM framework. From a functional perspective, CPS is somewhat similar to Plone. Like Plone, CPS is designed to handle documents and web based formats such as pages and news items and has a strong role based access framework. However, the CPS Platform adds a layer of infrastructure that Plone does not have.

ARCHITECTURE

CPS is a newer project than Plone and, while it lacks the benefits of Plone'€™s huge development and user communities (extensive documentation, active mailing lists, and an extremely polished UI), CPS has some key architectural differentiators and is more closely aligned with the cutting edge of Zope development including Zope 3. New add-on products are being constructed using the Five Project, which allows new Zope 3 features to be used on a Zope 2.x instance.

One key differentiator is the way that CPS stores content. Rather than use the Zope Object Database (ZODB) object hierarchy to organize the site, CPS separates the storage and placement of objects. Users place objects on the site by reference (called "€œproxies"€) while the objects themselves are stored transparently behind the scenes. This architecture allows more flexibility for features like versioning, single sourcing, localization, and multiple workflow states of assets. The repository abstraction layer has potential to enable alternative storage mechanisms such as external databases.

Another key architectural differentiator is that CPS has implemented an event-driven framework to trigger functionality and integrate components. This allows for looser coupling than standard Zope architectures, which typically depend on acquisition or inheritance to share functionality.

CPS also benefits from several infrastructure components that are provided by the CPS framework. CPSDirectory creates a virtual directory that can be backed by disparate sources such as an LDAP directory and a relational database. CPSSchemas and CPSDocument work together to implement an MVC (Model View Controller) architectural pattern which is commonly used in Java web applications. CPSRelation manages relationships between objects in the repository.

CREATE AND STORE

The primary interface for creating file-based content within CPS is by uploading files through the web interface. CPS does not support WebDAV primarily because of its unique way of storing content in the ZODB (see architecture section). However, CPS does support Zope'€™s ExternalEditor product, which gives the user the experience of working on a local file while the server copy is being updated with every save.

Basic metadata support is built into most content types and additional attributes can be added through CPS€™ CPSTypeMaker GUI. CPSTypeMaker allows fields to be defined with different validation, including what is required and valid values. CPSTypeMaker supports field level ACL and a selection of different storage engines. A content taxonomy can be applied using CPS’ vocabularies framework, which allows administrators to define controlled lists of words that can be used for lookups in forms. Vocabularies can be designated for specific locations within the system, allowing for distributed controlled vocabulary management which is often necessary in large organizations.

COLLABORATION

CPS is built on top of a robust versioning system. Every time an asset is checked out, a new version, called a revision, is created within the repository. Previous revisions can be viewed (called “consulted”) or reverted to through the user interface. Specific revisions of a document can be published to different sections.

The CPS workflow framework CPSWorkflow is more elaborate than DCWorkflow which comes embedded in Zope’s Content Management Framework and is used by Plone. Like DCWorkflow, CPSWorkflow consists of a collection of states and transitions. However, CPSWorkflow allows assets to be assigned to a workflow based on their location (rather than just their content type) and allows multiple assets to be processed as a group. Workflow “Stacks” represent collections of tasks that can be dynamically assigned to a workflow job. The “proxy” architecture of the CPS repository allows an asset to exist in multiple states which enables advanced workflow patterns such as branch and merge.

CPS’ event-driven architecture enables powerful subscription system where users can subscribe to be notified of various events in the system such as adding, deleting, submitting, accepting, or rejecting content.

ORGANIZING

While The CPS Framework can be modeled to achieve any strategy for organizing content, out of the box CPS is organized into Workspaces and Sections. For most content types, content is created and refined in a Workspace and then submitted for publication to one or more Sections which could be accessible to the un-authenticated or restricted based on access control rules. By default, users are given their own private workspaces. Additional workspaces can be established for teams and controlled by CPS’ role based access control framework. Sections are managed by section reviewers and managers which have permission to accept or reject content that has been submitted to their section. This allows content to be easily placed in multiple locations rather than creating duplicates of the same assets.

SEARCH & ACCESS

Like most Zope-based systems, an asset's URL is composed of its placement within the folder hierarchy. This makes URLs readable, navigable and allows for easy bookmarking. Both Sections and Workspaces are subject to CPS€™ role-based access control framework. Sections can be designated as viewable by anonymous visitors to support public access. By default, Microsoft, OpenOffice, and PDF file formats are searchable through a full-text index.

USABILITY

Users looking for a simple folder-based document management system might be a little overwhelmed when first introduced to CPS because it has so many features beyond simple document management. The Workspace/Section paradigm may not be appropriate for all business uses. However, that can be changed with some configuration.

The feature that CPS users may miss the most is the ability to browse the repository with familiar file management tools such as Windows Explorer. ExternalEditor integration will close this gap to some extent by allowing familiar editors to interface directly with the repository.

COMMUNITY AND RESOURCES

The CPS user and developer community is small but helpful. Email list traffic is moderate (at least on the English language list) but the response rate is excellent thanks to dedicated Nuxeo employees monitoring the list. Documentation and other resources are useful but not extensive. There are thorough PDF documents for managing and using CPS. But developer documentation is somewhat thin. For development at the Zope and Python layer, CPS benefits greatly from those communities. Google search results for CPS specific problems are somewhat limited but that is made up for by the responsive mail lists.