We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

CMIS Server plugin 1.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

Installation du module

Avec assistance

Le module est fourni avec un script ant prévu pour mettre à jour une application web.

Son emplacement est WEB-INF/plugins/CMISServerPlugin/build.xml

L’exécution de ce script s'effectuant en précisant comme basedir dans le répertoire WEB-INF

Exemple avec Ant

<subant target="">
   <property name="basedir" value="${app_webapp}/WEB-INF/" />
   <fileset dir="${app_webapp}" includes="WEB-INF/plugins/**/build.xml" />    
</subant>

ou en ligne de commande

ant -Dbasedir=/home/ludovic/dev/tmp/webapp/WEB-INF/ -f plugins/CMISServerPlugin/build.xml

Sans assistance

  • Décompresser les plugins dans un JCMS vierge
  • Modifier le contenu du web.xml pour y ajouter les éléments concernant les filtres, les listeners et les servlets
    • Les éléments à copier sont à extraire des fichiers WEB-INF/plugins/CMISServerPlugin/snippet/xxx.snippet contenu dans le plugin, dans les blocs CDATA
  • supprimer les jars antlr-runtime* et antlr-2.7.7.jar dans WEB-INF/lib

Se connecter

Les clients CMIS doivent être configurés avec les paramètres suivants :

  • Type de connection : Atom Pub
  • URL : https://mon-appli:port/context/cmis/atom11 HTTPS conseillé
  • user : utilisateur de l'application
  • password : mot de passe de l'utilisateur
  • type d'authentification : standard (le module prends les éléments pro effectue une délégation interne d'authentification sur le processus d'authentification de JCMS)

Note : Les autres modes de connexion (par webservices par exemple) ne sont pas encore disponibles.

Fonctionnalités

Le module propose d'exposer via CMIS les documents présents dans les espaces configurés, quelques que soit leur types (normal ou en base).

La configuration d'un espace est présenté dans la vidéo suivante : Configuration d'un entrepôt CMIS

Pour chaque espace configuré en entrepôt CMIS, une catégorie de navigation sera définie. C'est cette catégorie qui indiquera l'arborescences CMIS. Les documents (héritant de FileDocument) présents dans ces catégories seront présentés via CMIS.

Voici un listing des fonctionnalités présentes au sein de module :

  • navigation sur l'entrepôt
  • gestion des répertoires (création, mis à jour, effacement, déplacement, ...) avec la gestion des droits
  • Gestion des documents (création, mis à jour, checkin/checkout, versionning, effacement, déplacement, ...) avec la gestion des droits
  • Fonctionnalités de requêtages (requêtage dans les metadata ou les contenu des documents). Ce point est soumis à contrainte et il faut consulter le §Limite pour en connaitre la portée
  • Pagination
  • Consultation des types CMIS et des leur metadata

 

Les points suivants ne sont pas implémentés ou uniquement en partie :

  • La gestion des relations entre les objets CMIS
  • La gestion des ACL (bien que les droits JCMS soient appliqués sur les objets)
  • La gestion des policies
  • Les "renditions" et ou documents associés à un document CMIS ne sont pas disponibles
  • Les fonctionnalités de gestion des types CMIS (en dehors de la consultation) ne sont pas disponibles

Exemple de requêtages possibles

  • 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

 

Limites

 Voici les limites actuelles du module :

  • La connexion ne fait que via le canal ATOM PUB, et non webservices
  • La gestion des checkout se base sur les locks et non sur les copies de travail. Cette contrainte devrait être levée une fois que le coeur pourra effectuer des copies de travail sur les objets en base.
  • Les titres (et donc les paths CMIS) sont tous donnés dans la langue du site. Cela n'empêche pas le stockage des titres dans les autres langues (mais dans les métadata des documents ou catégories).
  • Le moteur de requêtage interne de JCMS ne permet pas de pouvoir proposer toutes les requêtes CMIS et en conséquence les éléments suivants ne sont pas supportés :

 

    • 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
  • Les dates (que ce soit dans une requête ou dans les metadata) doivent être fournies au format ISO8601 sur le fuseau horaire UTC avec ou sans les millisecondes (format java yyyy-MM-dd'T'HH:mm:ss.SSS'Z') ou en temps POSIX (Posix timestamp, Epoch time ou temps Unix).
  • Le support du multifiling n'est pas effectué et donc un document ne peut être présent qu'une seule fois dans la branche de navigation CMIS. Par contre il peut avoir plusieurs catégories dans d'autres branches que la branche de navigation CMIS.
  • Dans le cas de la suppression d'un document, si ce dernier a uniquement comme categorie une categorie de la branche CMIS, il est alors supprimé de la plateforme. Dans l'autre cas, il est simplement décatégorisé (et donc ne sera plus visible coté CMIS mais sera toujours présent sur la plateforme).

 


Information

Version
  • 1.0
Stability
  • Stable
Compatibility
  • JCMS 9 SP2
    JCMS 9 SP3
    JCMS 9 SP4
    JCMS 9 SP5
Certified by Jalios
  • Yes
Price
  • Module payant
Support
  • Jalios Support
Author
  • JALIOS
License
  • Jalios
Size
  • 2.42 MB
Updated
  • 2/3/17
Download
  • 9
Required Plugins
CMIS
v 3.1