CMIS (Content Management Interoperability Standard) est une spécification d'OASIS en phase de commentaire public : vous avez jusqu'au 22 décembre 2009 pour donner votre avis.
CMIS est une spécification technique conçue pour favoriser l’interaction entre systèmes de Gestion de Contenus via des Services Web pour permettre une intégration plus aisée dans les infrastructure "documentaire" des entreprises et faciliter l'interopérabilité entre les systèmes eux-mêmes. Cette spécification est indépendante de l’architecture du serveur d’application implémentée dans les CMS.
Les participants : IBM, EMC, SAP, Open Text, Microsoft ainsi que plus récemment les éditeurs de logiciels libres comme Alfresco et Nuxeo.
Premier apport : CMIS inclut la prise en compte de SOAP (pour la transmission de messages entre objets distants bati sur XML) et REST/ATOM.
ATOM, le format de syndication, on connaît.
REST ("Representational State Transfer") me plaît beaucoup. C'est plus un style, une démarche d'architecture technique qu'une architecture à proprement parlé. Il s'agit de suivre les principes de : "fonctionnement d'une application Web bien construite [.....] un réseau de pages Web (...) où l'utilisateur progresse dans l'application en cliquant sur des liens (...) ce qui provoque l'affichage de la page suivante (représentant le nouvel état de l'application) à l'utilisateur qui peut alors l'exploiter" (T.Fielding). Les fondamentaux du développement autour du Web : URI comme syntaxe universelle pour adresser les ressources, HTTP, des liens hypermedia dans des documents (X)HTML et XML, et les types MIME pour la représentation (encodage) des ressources. Des bonnes pratiques. Simple, robuste, extensible (normalement).
Cette spécification s'appuie sur ces principes, et propose tout d'abord (Chapitre 2. Domain model) un modèle de données (2.1.) - avec un entrepôt (repository), des objets "document" et des objets "dossiers" et leurs attributs, des relations parents-enfants (les associés, trop compliqués, je suppose), le contrôle des accès, le versionning.
Attention à la terminologie employée en lisant ces spécifications : MAY/MUST/SHOULD => PEUT (éventualité), DOIT (obligation), DEVRAIT (conditionnel). C'est l'objet de la norme rfc2119 (eng) (rfc2119 brièvement exposée ici en Français).
Je m'intéresse toujours à la RECHERCHE...ce qui bien sûr n'est pas le propre des CMS....mais stocker pour stocker, ce n'est pas non plus l'idéal.
Question "recherche", on nous annonce que le CMIS suit le SQL-92 (1992), mais .... on ne prend pas tout dans ce standard de 1992, et on ajoute surtout de nouvelles fonctionnalités ! La grammaire de base de SQL-92 reste toutefois valable. Je suppose que cela veut dire que de nombreux développeurs pourront prendre en main ce (futur) standard ? C'est une bonne chose.
Alors fonction de recherche, ou plutôt ici fonction de "requêtage" (Chapitre 2.1.10 query) : on retrouve ce que l'on a mis dans un entrepôt, sous la même forme et lorsqu'elle existe, à partir de l'organisation hiérarchique ! Heureusement quelques ajouts au SQL (CMIS-SQL Extension) dont :
- l'expression d'une requête "plein texte" (MAY seulement) avec : la formulation de la requête "entre guillemets", et (seulement) OU et AND. (bien sûr, la recherche "plein texte" existe aujourd'hui pour SQL, mais n'existait pas dans sa version de 1992). Je suis toujours dubitative du "texte intégral" avec SQL, mais cela doit suffire dans de nombreux cas.
- On peut ajouter dans des fonctions de comparaison mais seulement MAY et SHOULD (et non MUST) : IN, LIKE et NOT.
Ainsi que définir les "Membres d'un dossier" (folder membership) ou "Ordonnancer les objets".
Au requêtage type SQL, CMIS popose en sus des services web (chapitre 2.2) associés aux objets définis dans le modèle, dont :
- des éléments de base communs à plusieurs services web, dont un élément servant à récupérer d'autres informations sur les objets (2.2.1.2. Retrieve additional info...) : par exemple retrouver les relations dans lesquelles les objets participent. (2.2.1.2.2.) , le rendu/présentation/restitution (renditions) des objets
- Un Service web pour la navigation (2.2.3) au sein de l'arbre hiérarchique (parent, enfant, descendants).
- Un autre service propose un requêtage pour "search for query-able objects within the Repository" (2.2.6). Donc ici on initie le processus en identifiant d'abord l'entrepôt à exploiter, et en actionnant des filtres (les versions de documents, les relations...).
Deux mises en oeuvre sont proposées dans les chapitres 3 et 4 :
- le premier qui s'appuie (obligatoirement MUST) sur Atom (RFC4287) et sur le protocole de publication de documents Atom (RFC5023), ATOM étant également un standard d'OASIS
- le deuxième prend en charge tous les services et toutes les opérations définie dans la Partie 1 de la spécification CMIS - je n'arrive pas à voir à quoi correspond cette "Part I" : est-ce bien tout le chapitre 2 ou une partie seulement de ce chapitre 2 ?
Les CMS se parlent entre eux. C'est bien. La recherche fédérée sera probablement plus aisée.
Par contre, j'attends d'éventuelles relations entre ce TC et l'autre TC d'OASIS qui nous (me) concerne plus, sur les Search Web Services (SRU-Search/Retrieval via URI ou CQL - context query language)
Note aux afficionados du RM
Vous pouvez aller au chapitre "2.1.9. Versionning", et peut être aussi étudier ce qui est proposé pour le "journal des modifications" (MAY seulement) ?
D'autres liens
CMIS v1.0. en ligne http://docs.oasis-open.org/cmis/CMIS/v1.0/cd04/cmis-spec-v1.0.html
Examen public de CMIS v1.0. - http://lists.oasis-open.org/archives/tc-announce/200910/msg00015.html (vous trouverez ici les localisations de différents schémas XML)
La rubrique Documents publics du TC CMIS - http://www.oasis-open.org/committees/documents.php?wg_abbrev=search-ws
Comparaison CMIS / JCS, JCS - la solution actuelle entièrement sous Java (document du 24/06/2009, voir planches 33-44 (JCR pour tout type de besoins versus CMIS spécifiques au CM)
Mises en oeuvre Joomla/Afresco ou Drupal/Afresco (vu chez SMILE) http://blog.smile.fr/cmis-une-future-norme-deja-appliquee
Ever Team annonce également une API, ainsi que Sharepoint http://www.iptech-offshore.net/blog/2009/11/20/cmis4sharepoint/
Les commentaires récents