Using the IPP CMIS DMS Provider

As described in chapter Implementing a Provider for arbitrary Repository Technologies, Infinity provides an interface IRepositoryProvider to implement arbitrary repository technologies.

To allow different content management systems to share their information, IPP also provides a CMIS (Content Management Interoperability System) DMS provider, which implements the IRepositoryProvider interface.

Product Integration of the CMIS DMS Provider

The CMIS DMS provider is an optional module, which is not included in our archetypes by default. It is published as Maven artifact including the source jars. To include the module, add the following dependency to your pom.xml file:

<dependency>
   <groupId>com.infinity.bpm</groupId>
   <artifactId>ipp-engine-cmis</artifactId>
   <version>9.2.0</version>
</dependency>

Please refer to chapter Creating a Runtime Environment with Apache Maven in the Installation Guide for details on how to retrieve dependencies from the artifactory.

If you like to have a closer look at the provided CMIS classes and structure, download the sources by using <classifier>sources</classifier>.

<dependency>
   <groupId>com.infinity.bpm</groupId>
   <artifactId>ipp-engine-cmis</artifactId>
   <version>9.2.0</version>
   <classifier>sources</classifier>
</dependency>

Implemented Document Management Methods

The IPP CMIS Provider SPI implements the following DocumentManagementService methods:

The following DocumentManagementService methods are not implemented:

Versioning semantics

Note that the createNewRevision flag of the DocumentManagementService updateDocument methods is ignored since versioning in CMIS is defined by the object type. If the object type is versionable, a new version is created with the update call. In case it is not versionable, the document is overwritten.

Implementing custom Authorization

The AuthenticationProvider SPI of OpenCMIS allows specifying custom HTTP and SOAP headers for authentication or simply setting username and password including other session properties like OAuth tokens etc.

A custom authentication can be implemented by extending the following Apache Chemistry CMIS classes:

AbstractAuthenticationProvider and StandardAuthenticationProvider.

The current IPP DMS User can be retrieved by the following line, which allows to use special authentication means for each user on a per call basis:

User user = org.eclipse.stardust.engine.core.spi.dms.UserContext.getInstance().getUser();

Using the CMIS Provider

To use the IPP CMIS DMS provider, you have to specify authentication and bind a repository as described below.

  1. Specifying Authentication
  2. Binding a Repository

Specifying Authentication

First, specify authentication via your server-side carnot.properties. You can either specify a global username and password or an AuthenticationProvider implementation. The server-side properties are listed in below table:

Property Name Default Value Description
CMISRepositoryProvider.AuthenticationProviderClass null Implementation class for fine grained authentication
CMISRepositoryProvider.Username null specifies a global username used for all CMIS instances
CMISRepositoryProvider.Password null specifies a global password used for all CMIS instances

Binding a Repository

If you have integrated the CMIS Provider as described above, a repository can be bound in the Infinity Portal or via the DocumentManagementService API.

In the Infinity Portal you can bind a repository in the Document Repository view of the Administration perspective. If the CMIS Provider is selected, binding properties can be added accordingly. For details on binding the CMIS DMS Provider repository, please refer to section Binding the IPP CMIS DMS Provider of chapter Viewing and Managing Document Repository Resources in the End User Handbook.

For details on how to bind a repository via the DocumentManagementService, please refer to section Binding a new Repository Instance of chapter Managing Document Repositories.