Gestion Electronique de Document : Frameworks avec CMIS (2/4)

Dans le cadre d’une veille stratégiques pour un de nos clients publics, nous avons étudié les solutions de gestion électronique de documents. L’article suivant constitue la 2ème partie sur les frameworks de GED avec CMIS.

1. Le projet Apache Chemistry

apachechemistry

Licence : Apache License v2

Date de création : 2009

Site Officiel : https://chemistry.apache.org

Site Github : https://github.com/apache/chemistry-opencmis

Apache Chemistry est un projet qui regroupe l’ensemble des déclinaisons dans différentes langages de programmation de CMIS au sein de l’Apache Software Foundation.

Projet initialement lancé par Nuxeo en 2009, Apache Chemistry reçoit de nombreuses contributions d’acteurs numériques en 2010 et 2011

  • Metaversant pour cmislib (02/2010)

  • Alfresco, Open et SAP pour OpenCMIS (02/2010)

  • Alfresco pour phpclient et DotCMIS (01/2011)

L’histoire de CMIS et d’Apache Chemistry est très liée. Ce sont en effet quasiment les mêmes développeurs et éditeurs de solutions de gestion électronique de documents qui se sont penchés sur la définition des spécifications au sein du consortium OASIS et le développement des bibliothèques et frameworks CMIS dans Apache Chemistry.

Le succès de l’adoption du protocole CMIS est lié à la réalisation en parallèle du projet Apache Chemistry qui a permis aux développeurs d’intégrer très rapidement le standard dans leur solution de gestion de contenus respective.

Apache Chemistry est aujourd’hui un projet mature au sein de la fondation Apache. C’est aujourd’hui la référence pour intégrer CMIS dans les applications et les dépôtsde contenu.

Apache Chemistry fournit les bibliothèques et frameworks pour les technologies Java, Python, PHP et .Net. La communauté de développeurs est composée d’un noyau d’une vingtaine de volontaires actifs qui pilote le projet.

2. OpenCMIS

2.1. Présentation

OpenCMIS est un sous-projet de Apache Chemistry qui regroupe l’ensemble des librairies clients, frameworks serveurs et outils de développement sous Java. Il inclut notamment :

  • Un framework serveur qui permet d’implémenter l’interface CMIS pour un dépôt de contenu

  • Une librairie client qui fournit le code Java, permet d’interagir avec un dépôt de contenu CMIS

  • Deux dépôts test InMemory qui utilise la mémoire vive et Fileshare le disque dur, pour simuler un dépôt de contenu CMIS

  • CMIS Workbench qui est une application bureautique réservée aux développeurs de clients et serveur CMIS.

  • OpenCMIS Test Compatibility Kit (TCK) qui permet de vérifier la compatibilité d’un dépôt de contenu avec les spécifications CMIS et la librairie cliente OpenCMIS

  • Le bridge Java Content Repository (JCR) qui permet de se connecter à des dépôts JCR via CMIS (en cours de développement)

OpenCMIS est le seul framework serveur offert par Apache Chemistry et le seul framework serveur Java existant. C’est un projet très mature et testé pour la plupart des serveurs qui implémentent le CMIS. Nous pouvons citer par exemple les deux gestionnaires de documents open source majeurs Alfresco et Nuxeo1.

opencmis

Illustration 1: Schéma de la structure des briques d’OpenCMIS

 

2.2. OpenCMIS Server Framework

Il est possible d’intégrer CMIS à un serveur par soi-même ou en passant par un framework. Bien évidemment le recours à un framework permet de gagner du temps et faire moins d’effort. En particulier, comme évoqué précédemment, le framework permet de faciliter la tâche du développeur qui n’a pas à gérer le détail du transport des données lors des requêtes CMIS.

Le Framework Serveur OpenCMIS fournit une implémentation serveur des liaisons AtomPub et Web Services et les connecte à des interfaces Java. Les requêtes et données provenant des clients CMIS sont converties et envoyées à un connecteur qui traduit les requêtes CMIS en requêtes de dépôts de contenu.

opencmis2

Illustration 3.2: Structure du Framework Serveur OpenCMIS


L’essentiel du développement d’un serveur basé sur le framework OpenCMIS consiste à réaliser le connecteur :

  • Développer l’interface Java CmisService qui couvre toutes les opérations CMIS 1.0 et 1.1 ainsi que plus de 50 méthodes. Cette interface devra se comporter comme décrite dans les spécifications.

  • Développer l’interface Java CmisServiceFactory qui gère les instances de CmisService (opérations lors de l’initialisation, de la destruction et de la collecte des données de configuration…)

  • Implémenter l’interface d’authentification en fonction du type de liaison choisi (AtomPub, Web Service…)

Le framework OpenCMIS ne fournit pas des connecteurs aux différents types de dépôt de contenu existants mis à part les dépôts JCR.

Plus d’informations sur le développement d’un serveur CMIS à partir de la librairie OpenCMIS sont disponibles dans le chapitre 14 du livre CMIS and Apache Chemistry in Action.

3. XCMIS

xcmis

Licence : LGPL

Date de création : 2009

Site Officiel : https://code.google.com/p/xcmis/

Site GitHub : https://github.com/exoplatform/xcmis

XCMIS est une implémentation de la stack de services CMIS basée sur Java. Elle a été donnée à la communauté par eXo, éditeur d’une plateforme de réseau social d’entreprise open source. XCMIS gère toutes les fonctionnalités définies par le standard CMIS 1.0 pour les liaisons AtomPub et Web Services (SOAP/WSDL).

Contrairement à OpenCMIS, XCMIS n’est pas un framework mais une solution « tout en un » fonctionnelle packagée comme une archive Web J2EE (WAR) et préparée dans un bundle Tomcat. La liaison au dépôt eXo JCR est native. Il est également possible de se connecter à un dépôt tiers grâce à la couche d’interfaçage Storage Provider.

Une analyse du code du fichier pom.xml du projet sur GitHub a permis de relever que XCMIS avait une dépendance avec le framework OpenCMIS d’Apache Chemistry. Cela n’a rien d’étonnant compte tenu de la proximité du projet Apache Chemistry et du développement du standard CMIS.

À ce jour, la société Exo a abandonné le projet XCMIS, comme le montre l’ancien lien vers le site officiel (http://xcmis.org) qui est aujourd’hui redirigé vers un autre site. L’absence d’engouement pour XCMIS s’explique essentiellement par la similitude avec Apache Chemistry d’un point de vue fonctionnel. La valeur ajoutée de XCMIS est uniquement le fait que ce soit un serveur prêt à emploi alors que Apache Chemistry avec OpenCMIS possède une gamme complète de bibliothèques et d’outils de développement et de test pour intégrer CMIS à un serveur dans n’importe quel contexte.

4. VB.CMIS

Licence : LGPL

Date de création : 2009

Site Officiel : https://vbcmis.codeplex.com/

VB.CMIS se définit comme une boîte à outils pour construire son propre serveur CMIS basé sur VB.net. Il a été développé en 2012 par une société informatique allemande, Brügmann2. Peu d’informations sont disponibles sur ce framework et le projet est à ce jour dormant. Seule la liaison AtomPub est supportée.

4.1. Comparaison des frameworks de GED avec CMIS

OpenCMIS

VB.CMIS

XCMIS

Licence

Apache v2

LGPL

GPL

Type de solution

Framework

Framework

Serveur
« Tout en un »

Technologie

Java

VB.Net

Java

Dernière mise à jour

04/2015

02/2013

04/2013

Activité communautaire

Moyen

Dormant

Dormant

Version CMIS

1.1

1.0

1.0

AtomPub REST binding

Oui

Oui

Oui

Webservices binding

Oui

Non

Oui

SOAP binding

Oui

Non

Non

Dépôts supportés

InMemory

Fileshare

JCR (1)

Non

ExoJCR

InMemory

Outils de test

TCK et FIT

Non

Non

(1) https://chemistry.apache.org/java/opencmis-jcr-repository.html (en cours de développement)

4.2. Synthèse sur les frameworks CMIS

OpenCMIS de Apache Chemistry par son lien historique avec le développement du standard CMIS, est aujourd’hui la référence en termes d’implémentation du protocole CMIS dans les applications et les serveurs Web. En particulier, OpenCMIS est le seul Framework CMIS Java qui existe à ce jour.

Références