Implementation

Background

All objects contained within the CMIS repository are placed under a root folder that is defined by the CMIS specification available here. http://docs.oasis-open.org/cmis/CMIS/v1.1/CMIS-v1.1.pdf

Index entries are associated with a document set via relationships. Calling getObject on the object id in each relationship will return a cmis:folder object. This object contains all relevant properties and will provide appropriate display names when available.

Retrieving the children of the root folder returns all document sets as folder objects. There is only one layer of document sets and each one will contain a document object representing the latest version.

Once a document set has been retrieved, calling getChildren on it will retrieve the actual document as a cmis:document object. The document object will contain all version entries, renditions and associated properties. Files are retrievable via the getContentStream API.

Child, parent and related documents are all accessible via relationship objects associated with each document. The type property can be used to determine the relationship type and calling getObject on the target value will return the relevant document. Document notes can be accessed in a similar manner.

Folder structure Document set structure

Other folder

An additional non-document folder was introduced to CMIS in 2016A. This folder has been implemented in order to expose generic objects that may assist with integration. It was given a hardcoded Id of OTHER and invoking the getChildren() service on it will return a list of the following folders:

Call types:

have been implemented as item objects that can be used to provide a mapping from call type numbers to actual descriptions. This allows for meaningful picklists to be generated when creating or reading documents.

Note templates:

have been implemented as item objects. They provide a title and description that can be used for generating a pick list when creating notes.

Call sites:

have been implemented as item objects that can be used to provide a mapping from call site numbers to actual descriptions. This allows for meaningful picklists to be generated when creating or reading documents.

Active users:

have been implemented as item objects that can be used to provide a mapping from user ids to actual descriptions. Both the real and ecm user id values have been made available.

Move provides access to a subdirectory containing both users and folders that can be used as a location when moving a document.

Quick add profiles:
 

have been implemented as item objects that can be used to provide a mapping from template ids to actual descriptions. This allows for meaningful picklists to be generated when creating or reading documents.

Indexes:

contains a list of all indexes and index entries that are accessible via the repository. It can also be used to determine which document sets are associated with each index entry.

Other folder structure