A variety of built-in features make it easier for teams and machines to coordinate and collaborate.

  • Real-time - Bases provide features that make it possible for the web interface to update in real-time as others modify content, keeping your views and apps up to date when appropriate.
  • Workflow - Editorial workflows make it possible to collaborate on content, save and review multiple drafts and ensure only properly validated and approved content is presented to the public.
  • Validate - Content can be validated at multiple levels, including individual fields (required, must match length, size or pattern, etc.), per content item (ie. if this field is X, then that field must be Y) and even across content (ie. ensure aspects of this content are unique).
  • Processing - Content can be processed and manipulated as they are updated, saved, copied, approved and published to automate just about anything at any point in the production life-cycle.

Content Workflow

When content is modified, the modifications are recorded to a Base in a few ways.

  • Store - Modifications are stored to a single "working copy" in the Base as they are made, to represent a composite "in-progress" view of all changes in near real-time, so multiple users and systems can collaborate on updates before they are saved as a draft or approved for publication.
  • Save - Modifications are saved to "drafts" in the Base for further review.  When a staging publication and procedure are associated with the content, the latest draft can also be previewed in a staging environment.  Multiple drafts are maintained during the evolution of content during the creative and editorial process for review and optional restore.
  • Approve - Modifications are approved to a single "active copy" in the Base.  The active copy represents the latest published version of the content.  Typically all drafts are removed when content is approved, since they are no longer needed.  When desired, drafts can be maintained for reference and restore long-term.

Processing Pipeline

Step Store Save Approve
If this object has already been updated as part of the update process, skip further processing of this object. x x x
Field Validation - Process field type specific validations, such as ensuring the value of a Number field input is numeric.  If validation fails, stop further processing. x x x
Custom Field Validations - Process any custom field validations, like regex validations.  If validation fails and this is not a store, stop further processing.   x x
Model validate() Method - If the content type is associated with a PHP model class, and that model implements a validate() method, it will be called.  If validation fails (returns FALSE) and this is not a store, stop further processing.   x x
Content Type Validate cTemplate - If the content type does not have a PHP validate() method or that method triggers the cTemplate, it will be invoked.  If validation fails (returns FALSE or #ERROR is called at least once) and this is not a store, stop further processing.   x x
Update the Base.  If this is a store, update the working copy.  If this is a save, add a new draft.  If this is an approve, archive the previous version, if one exists, according to the Version Settings, then create or update the active copy and remove previous drafts. x x x
Update Content Type Method Values - Process each content type method (ie. .Summary(), .Description(), .Icon(), etc.) that can be queried, and record the result for future queries in the same mode (ie. store, save or approve). x x x
Update Parent - If this object was accessed through a cPath where a single parent is referenced before this object and this object referenced through an embedded relationship field, start the update pipeline for that single parent. x x x
Update Children - If this object references any other objects through embedded relationship fields, start the update pipeline for each child object. x x x
Other Dimensions - If the origin object was not for a specific dimension or "All Dimensions" was selected from the workflow menu, start the update pipeline for each dimension of this object. x x x