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
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.
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.
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
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/….(site désormais inaccessible)
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 |
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/ (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.