Page tree
Skip to end of metadata
Go to start of metadata

Requirements

The CMIS provider should be able to communicate with a CMIS server using both the web service and the atom binding.

It should be possible to specify a path within the remote repository to use as root path.

CMIS provider module has to implement the AssetProvider interface.

Use a single user on the CMIS server for all Magnolia users.

 

Open questions

Activation

Should we support a model where a customer has a public and an author cmis repository and wants to use activation to transfer from one to the other?

We would want to prevent activation of a page if its using an asset in CMIS that hasn't been activated.

The activation status must be a available on the asset.

We've identified four models where activation comes in:

  • same server for authoring and public
  • same server, flag that makes public, magnolia should flag (flag is just an example, it could be a complicated mechanism)
  • different servers, magnolia should copy
  • different servers, servers copy, magnolia invokes the server to copy (basically same as model 2)

Renditions

  • commonly used for thumbnails
  • we could take advantage of this for thumbnails
  • however it should not be used as our renditions that need to work independently of provider
    • we could though use our renditions for as cmis renditions returned with the cmis server module

Mapping metadata

CMIS supports properties on documents and custom properties.

TODO can we support the full dublin core this way?

Querying

CMIS has its own query syntax. How we can map onto this in the DAM API?

Session management

  • session reuse, can it be reused between threads?
  • use same session for request, i.e. thread local, is there an advantage to this?
  • do we need to limit the number of connections executing at the same time? globally for all users
  • must investigate the parallelism and thread safety of the api

Caching

  • key folder listings per path and user (see above)

Tasks

Create a new module (Jira/Git/Hudson)

Create a new module that includes 2 sub modules:

CMIS Provider

<groupId>info.magnolia.cmis</groupId>
<artifactId>magnolia-cmis-provider</artifactId>
...
<modules>
    <module>magnolia-cmis-provider-app</module>
    <module>magnolia-cmis-provider-api</module>
</modules>

CMIS App Provider

  <parent>
    <groupId>info.magnolia.cmis</groupId>
    <artifactId>magnolia-cmis-provider</artifactId>
    <version>...</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
  <artifactId>magnolia-cmis-provider-app</artifactId>
  <name>magnolia-cmis-provider-app</name>

CMIS API Provider

  <parent>
    <groupId>info.magnolia.cmis</groupId>
    <artifactId>magnolia-cmis-provider</artifactId>
    <version>...</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
  <artifactId>magnolia-cmis-provider-api</artifactId>
  <name>magnolia-cmis-provider-api</name>

Architecture


Documentation

  • No labels