CMIS Server plugin 2.0
Description
This plugin CMIS server feature to an existing JCMS application (CMIS version 1.1).
A CMIS repository is a workspace with some properties to activate the feature, like a category to declare the navigation root. Folder are descendant categories of the navigation root and documents are documents with categories in this branch.
Installation
Installing the module
With assistance
The module comes with an ant script for updating a web application.
Its location is WEB-INF/plugins/CMISServerPlugin/build.xml
The execution of this script is done by specifying as basedir in the WEB-INF directory
Example with Ant
<subant target=""> <property name="basedir" value="${app_webapp}/WEB-INF/" /> <fileset dir="${app_webapp}" includes="WEB-INF/plugins/**/build.xml" /> </subant>
or with the command line
ant -Dbasedir=/home/ludovic/dev/tmp/webapp/WEB-INF/ -f plugins/CMISServerPlugin/build.xml
Without assistance
- Decompressing plugins in a blank JCMS
- Modify the content of the web.xml to add elements concerning filters, listeners and servlets
- The elements to be copied are to be extracted from the WEB-INF/plugins/CMISServerPlugin/snippet/xxx.snippet files contained in the plugin, in CDATA blocks
Login
CMIS clients must be configured with the following parameters:
- Connection type: Atom Pub
- URL : https://mon-appli:port/context/cmis/atom11 (HTTPS is recommended)
- user: application's user
- password : user's password
- type of authentication: standard (the module takes the pro elements performs an internal delegation of authentication on the JCMS authentication process)
Note: Other connection modes (e.g. web services) are not yet available.
Features
The module proposes to expose via CMIS the documents present in the configured spaces, whatever their type (normal or basic).
The configuration of a space is presented in the following video Configuration d'un entrepôt CMIS
For each space configured as a CMIS warehouse, a navigation category will be defined. It is this category that will indicate the CMIS tree structure. The documents (inheriting from FileDocument) present in these categories will be presented via CMIS.
Here is a list of the functionalities present within the module:
- warehouse shipping
- management of directories (creation, update, deletion, move, ...) with rights management
- Document management (creation, update, checkin/checkout, versioning, deletion, moving, ...) with rights management
- Query features (querying in metadata or document content). This point is subject to constraint and it is necessary to consult the Limit paragraph to know its scope
- Pagination
- Consulting CMIS types and their metadata
The following points are not implemented or only partially implemented :
- Managing relationships between CMIS objects
- The management of ACLs (although JCMS rights are applied to the objects)
- Policy management
- The "renditions" and/or documents associated with a CMIS document are not available
- The management functionalities of the CMIS types (outside consultation) are not available
Example of possible queries
- SELECT * FROM cmis:document
- SELECT cmis:name FROM cmis:document
- SELECT cmis:name as test FROM cmis:document
- SELECT cmis:name, cmis:objectId FROM cmis:document
- SELECT cmis:objectId, cmis:name as test FROM cmis:document
- SELECT * FROM cmis:com_jalios_jcms_DBFileDocument
- SELECT cmis:objectId FROM cmis:document where IN_TREE('a_12345')
- SELECT cmis:objectId FROM cmis:document where IN_FOLDER('a_12345')
- SELECT cmis:objectId FROM cmis:document ORDER BY cmis:lastModificationDate DESC
- SELECT cmis:objectId FROM cmis:document ORDER BY cmis:lastModificationDate ASC
- SELECT cmis:objectId FROM cmis:document where cmis:creationDate > 123456789
- SELECT cmis:objectId FROM cmis:document where cmis:creationDate > '2016-09-01T18:33:38Z'
- SELECT cmis:objectId FROM cmis:document where cmis:creationDate >= 123456789
- SELECT cmis:objectId FROM cmis:document where cmis:creationDate < 123456789
- SELECT cmis:objectId FROM cmis:document where cmis:lastModificationDate = '2016-09-01T18:33:38Z'
- SELECT cmis:objectId FROM cmis:document where jalios:pdate <= '2016-09-01T18:33:38Z'
- SELECT cmis:objectId FROM cmis:document where jalios:pstatus = 0
- SELECT cmis:objectId FROM cmis:document where jalios:pstatus > -1
- SELECT cmis:objectId FROM cmis:document where jalios:pstatus <= 0
- SELECT cmis:objectId FROM cmis:document where jalios:pstatus IN (0,1,2,3)
- SELECT cmis:objectId FROM cmis:document where cmis:name = 'A.txt'
- SELECT cmis:objectId FROM cmis:document where cmis:name LIKE 'A.txt'
- SELECT cmis:objectId FROM cmis:document where cmis:name LIKE 'A%'
- SELECT cmis:objectId FROM cmis:document where cmis:name LIKE 'A.t_t'
- SELECT cmis:objectId FROM cmis:document where cmis:name LIKE 'A%txt'
- SELECT cmis:objectId FROM cmis:document where cmis:name LIKE 'A%.tt'
- SELECT cmis:objectId FROM cmis:document where cmis:name <> 'A.txt'
- SELECT cmis:objectId FROM cmis:document where cmis:name NOT LIKE 'A%'
- SELECT cmis:objectId FROM cmis:document where IN_TREE('a_12345') and cmis:name LIKE 'A_txt'
- SELECT cmis:objectId FROM cmis:document where CONTAINS('ContentA')
- SELECT cmis:objectId FROM cmis:document where CONTAINS('ContentA%')
- SELECT cmis:objectId FROM cmis:document where CONTAINS('ContentA%') and cmis:lastModificationDate > 123456789
Limits
Here are the current limitations of the module:
- The connection is only via the ATOM PUB channel, not webservices
- Checkout management is based on locks and not on working copies. This constraint should be removed once the core will be able to make working copies of the base objects.
- The titles (and therefore the CMIS paths) are all given in the language of the site. This does not prevent the storage of titles in other languages (but in the metadata of the documents or categories).
- The internal JCMS query engine does not support all CMIS queries and therefore the following elements are not supported:
- multiples clauses "ORDER BY"
- Opérateur OR
- Opérateur NOT
- Opérateur NOT IN
- Opérateur ANY IN
- Opérateur ANY NOT IN
- Opérateur ANY =
- Opérateur IS NULL
- Opérateur IS NOT NULL
- Dates (whether in a query or in metadata) must be provided in ISO8601 format in UTC time zone with or without milliseconds (java format yyyy-MM-dd'T'HH:mm:ss.SSS'Z') or in POSIX time (Posix timestamp, Epoch time or Unix time).
- MultiFiling support is not provided and therefore a document can only be present once in the CMIS navigation branch. On the other hand it can have several categories in other branches than the CMIS navigation branch.
- In the case of the deletion of a document, if this last category is only a category of the CMIS branch, it is then deleted from the platform. In the other case, it is simply de-categorized (and thus will no longer be visible on the CMIS side but will still be present on the platform).