Sémantiques

CMIS, ou l’interopérabilité dans la sphère de l’ECM

Publié par   : Hélène Rabault le  : 27 février 2009

EMC (Documentum), Microsoft (Sharepoint) et IBM (Filenet) ont publié conjointement en septembre 2008 un standard pour assurer l’intéropérabilité de systèmes de gestion de contenu d’entreprise : CMIS ou Content Management Interoperability Services.
La mise en place de CMIS au niveau des progiciels nécessite l’ajout d’un connecteur basé sur des Web Services SOAP ou bein sur le protocole REST/ATOM. Aucune réécriture du code, donc.

Le langage exploité par CMIS, CMIS Query Language, s’inspire de SQL-92 grammar (ISO/IEC 9075: 1992 – Database Language SQL) et de sa syntaxe. Il permet de réaliser des jointures entre tables, des sélections de données de type « select» et des recherches plein-texte

Le standard complet dans sa version 0.5 est disponible en téléchargement :

Voici ce que contient le dossier du standard :

CMIS (1)

CMIS (1)

CMIS (2)

CMIS (2)

CMIS est composé de plusieurs parties :

  • Partie 1 [Domain model V0.5] : Introduction, General Concepts, Data Model, and Services
  • Partie 2 [REST-ATOM binding] : REST protocol binding
  • Partie 2 (suite) [Web services binding]: SOAP protocol binding

Généralités

  • CMIS définit 4 principales natures d’objets existant dans un entrepôt (référentiel) de contenu (le repository) : Document, Folder , Relationship et Policy.
  • Pour chaque nature d’objet on peut déclarer et définir des types supplémentaires ou “Object Type”.
  • Chaque nature d’objet accepte un ensemble de propriétés, dont les valeurs sont fixées pour chaque objet du repository ex. Identifiant, URI, Nom etc

Les “CMIS services” fournis en plus du modèles de données permettent notamment de

  • naviguer et parcourir l’arborescence des dossiers de l’entrepôt
  • créer, lire, mettre à jour et supprimer des objets
  • créer une nouvelle version d’un document et retracer l’historiques des versions successives

CMIS spécifie également des correspondances avec SOAP et REST/ATOM pour la mise en place de connecteurs

Repository

Un repository peut gérer un certain nombre de fonctions. Le service getRepositoryInfo renvoie la liste des fonctions prises en charge. Les fonctions concernées sont

  • Multi-filing : rattachement d’un document à plusieurs dossiers
  • Unfiling : autoriser le non-rattachement d’un document
  • Version-specific filing : gérer le rattachement de chaque version d’un document à un dossier éventuellement différent
  • PWC updatable : autoriser la mise à jour des copies de travail privées
  • All versions searchable : gérer la recherche soit sur la dernière version des documents uniquement soit sur toutes
  • PWC searchable : possibilité d’inclure les copies privées dans le champ balayé par les requêtes
  • enumCapabilityQuery : gestion des requêtes soit en texte intégral uniquement, soit sur les métadonnées uniquement, soit sur les deux, soit pas de gestion de requêtes
  • Join support level in query : niveau de prise en charge des jointures (inner join, outer join…)
  • Full-text search support level in query : degré de prise en charge du texte intégral dans les requêtes (WHERE)

Objets

Documents

Les documents représentent des unités de contenu à l’intérieur de l’entrepôt.

Un document peut inclure ou non un flux de contenu, ou” content stream”, et cela doit être précisé dans les définitions des objets de type Document (voir “types d’objets” ci dessous).

Les documents peuvent être versionnés.

Folder objects (répertoires ou dossiers)

Les répertoires ou dossiers sont les contenants dans lesquels des documents (ou d’autres répertoires) peuvent être déposés. Un document peut être déposé dans un ou plusieurs répertoires. A l’instar des documents les Folder objects sont interrogeables.

Il y a une relation hiérarchique implicite entre un dossier et les objets qu’il contient, avec comme contraintes d’intégrité de cette relation sa réciprocité, et l’interdiction de créer des boucles (un objet de type répertoire ne peut pas être à lui même son propre père). La suppression d’un élément de la collection associée au répertoire doit également détruire le lien hiérarchique implicite qui le rattachait à un dossier parent.

Une propriété AllowedChildObjectTypeIDs permet de définir quels sont les types d’objets autorisés comme “enfants” de chaque Folder object.
Le service removeObjectFromFolder permet de supprimer le lien père-fils entre un “Folder object” et un objet d’un autre type déclaré être son fils.

Tout répertoire a un et un seul élément père, sauf les repertoires situés à la racine du système, qui n’ont pas d’élément père.

Un répertoire racine ne peut être créé, supprimé ou déplacé via des CMIS services.

Tout nouveau répertoire créé doit se voir déclarer un “Folder object” parent, par le service addObjectToFolder.
Il est impossible de supprimer un “Folder object” dès lors qu’un objet au moins lui est associé.
Il n’est pas obligatoire en revanche d’attribuer aux autres types d’objets un “Folder object” parent.

Deux modes de fonctionnement distincts peuvent être choisis pour un entrepôt :

ou bien l’attribution d’un répertoire à un document est unique pour toutes les versions du document (version-independent : elles sont toutes stockées dans un même repertoire), ou bien elle est décidé pour chacune des versions du document (version-specific : chaque version d’un document peut être placée dans un répertoire indépendamment de ce qui a été décidée pour les versions antérieures de ce document .)

Relationships (relations)

Les relations désignent des relations très lâches entre deux 2 objets (documents ou répertoires) dans l’entrepôt. Elles peuvent avoir comme objet source ou comme objet cible des Documents, des Folders, et, selon les repositories, éventuellement des Policies.

Etablir une relation entre deux objets n’a aucune incidence sur eux. Par exemple cela n’entraîne pas un changement de version, ni de date de dernière modification. L’objet cible de la relation n’hérite pas des contraintes ni des comportements de l’objet source.

Il est autorisé de créer une relation avec le même objet comme cible et comm source de la relation.

Policy objects (Règles)

Ils gèrent les règles d’administration qui sont appliquées aux objets.

L’entrepôt CMIS peut supporter des objets de type Policy object mais cela n’est pas obligatoire. Un objet peut être soumis à une ou plusieurs règles.

Types d’objets

Les 4 objets principaux décrit ci-dessous acceptent d’être déclinés en types : types de documents, types de relations etc.

La définition de chaque type d’objet est constituée des informations suivantes

  • ObjectTypeId : ID du type d’objet
  • ObjectTypeQueryName
  • ObjectTypeDisplay : libellé du type d’objet pour l’affichage
  • NameParentTypeId :
  • RootTypeQueryName
  • Description
  • Creatable
  • Queryable
  • Controllable
  • includeInSuperTypeQuery

Pour définir des types d’objets Document on inclut également

  • Boolean
  • Fileable
  • ContentStreamAllowed

Pour définir des types d’objets Relationship on inclut également

  • AllowedSourceTypes
  • AllowedTargetTypes

Propriétés des objets

Les propriétés peuvent être mono- ou multi-valuées. Les types de données sont basés sur XML Schema Part 2: Datatypes Second Edition (28/10/2004) :

  • String (xsd:string)
  • Decimal (xsd:decimal)
  • Integer (xsd:integer)
  • Boolean (xsd:boolean)
  • DateTime (xsd:dateTime)
  • URI (xsd:anyURI)

Les quatres objets définis ci-dessus (Document, Folder, Relation et Policy) ont en commun les propriétés suivantes

  • ObjectId (ID)
  • Uri (URI)
  • ObjectTypeId (ID)
  • CreatedBy (string)
  • CreationDate (DateTime)
  • LastModifiedBy (string)
  • LastModificationDate (DateTime)
  • ChangeToken (string)

Les propriétés d’un document sont

  • Name (string)
  • IsImmutable (boolean)
  • IsLatestVersion (boolean)
  • IsLatestVersion (boolean)
  • IsLatestMajorVersion (boolean)
  • VersionLabel (string)
  • VersionSeriesId (ID)
  • IsVersionSeriesCheckedOut (boolean)
  • VersionSeriesCheckedOutBy (string)
  • VersionSeriesCheckedOutId (id)
  • CheckinComment (string)
  • ContentStreamAllowed (string)
  • ContentStreamLength (integer)
  • ContentStreamMimeType (string)
  • ContentStreamFile name (string)
  • ContentStreamUri (URI)

Les propriétés d’un dossier sont :

  • Name (string)
  • ParentID (ID)
  • AllowedChildObject TypeIds (ID)

Les propriétés d’une relation sont exclusivement :

  • sourceId (ID)
  • targetId (ID)

Les propriétés pour les règles sont :

  • Policy name (string
  • Policy text (string)

Il est possible, pour n’importe lesquels des 4 types d’objets prévus, de créer des types d’objets supplémentaires qui spécifient le schéma des propriétés autorisées ou requises pour les objets.

Les CMIS services

CMIS fournit des services CRUD (Create, Retrieve, Update, Delete) applicables aux objets.

Repository services

  • getRepositories : retourne URI, noms et IDs des repositories disponibles
  • getRepositoryInfo : retourne des informations détaillées sur un repository : ID, nom, URI, description, ID du dossier racine, nom et version du produit, versions supportées de CMIS, propriétés spéicfiques du repositoriy ex: gestion du multifiling, repositories liés
  • getTypes retourne tous les types d’objets du repository et leurs attributs
  • getTypeDefinition : retourne des propriétés détaillées d’un type d’objet déterminé
  • getAllowableActions : retourne les actions autorisées à l’utilisateur sur un objet ex. le supprimer, modifier ses propriétés, le changer de dossier etc.
  • getProperties : retourne les propriétés de l’objet et éventuellement les actions autorisées à l’utilisateur sur cet objet
  • getContentStream : retourne le flux de conteu du document

Navigation service

  • getDescendants : retourne la liste des objets de l’arborescence à partir d’un dossier déterminé, sur un ou plusieurs niveaux. Il est possible de ne demander que les objets d’un type particulier
  • getChildren : retourne les éléments situés au premier niveau sous le dossier spécifié. Si toutes les versions d’un même document sont sous un même dossier, seule la version la plus récente est renvoyée
  • getFolderParent : retourne l’ID et les propriétés du ou des dossier(s) parent(s) de l’objet de type Folder spécifié
  • getObjectParents : retourne l’ID et les propriétés du ou des dossier(s) parent(s) de l’objet non- Folder spécifié
  • getCheckedoutDocuments : retourne les objets de type Documents validés auxquels l’utilisateur à accès (en général ceux qu’il a lui-même validés)

Object service

  • createDocument : crée un objet Document du type spécifié, et éventuellement lui attribue un dossier parent
  • createFolder : crée un objet de type Folder du type spécifié
  • createRelationship : crée une relation d’un type déterminé entre deux objets
  • createPolicy : crée un objet Policy du type spécifié, et éventuellement lui attribue un dossier parent
  • updateProperties : permet de mettre à jour les propriétés de l’objet spécifié (dans CMIS 1.0 pour une propriété multivaluée il faut mettre à jour toute la liste de valeurs)
  • moveObject : permet de déplacer l’objet spécifié d’un dossier à un autre
  • deleteObject : permet de supprimer l’objet spécifié
  • deleteTree : permet de supprimer une arborescnce à partir du point (dossier) spécifié inclu.
  • setContentStream : crée ou remplace le flux de contenu associé à l’objet Document spécifié
  • deleteContentStream : supprime le flux de contenu associé à l’objet Document spécifié

Multifiling service

(valable uniquement pour les repositories qui acceptent le multifiling)

  • addObjectToFolder : placer l’objet spécifié sous un dossier
  • removeObjectFromFolder : enlver l’objet spécifié d’un ou de tous les dossiers dans lesquels il est placé

Policy service

  • applyPolicy : applique une règle à l’objet spécifié
  • removePolicy : annule l’application d’une règle à l’objet spécifié
  • getAppliedPolicies : Retourne la liste des objets Policy appliqués à l’objet spécifié

Relationship service

  • getRelationships : retourne la liste des relations de l’objet spécifié, eventuellement restreintes à celles d’un type particulier ou établie dans une direction précise (source/cible)

Versioning service

  • checkOut :
  • checkIn : fait de la copie privée la version courante du document
  • getPropertiesOfLatestVersion : retourne les propriétés de la dernière version dans la série spécifiée
  • getAllVersions : retourne la liste de toutes les versions de la série sépcifiée, triée par ordre décroissant de date de création
  • deleteAllVersions : supprime toutes les versions de la série spécifiée
Mots-clefs : ,

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Twitter picture

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Connexion à %s

 

février 2009
L Ma Me J V S D
« nov   mar »
 1
2345678
9101112131415
16171819202122
232425262728  

Archives

Statistiques

RSS Mondeca : Mots et expressions

  • Le Blog Mondeca - Partager nos expériences et connaissances
    Le blog de Mondeca Leçon de Choses permet aux équipes Mondeca de partager avec vous des réflexions et expériences et de tester de nouvelles idées. Toutes vos retours, remarques et suggestions sur les articles sont les bienvenus. L'équipe de rédaction.
Suivre

Get every new post delivered to your Inbox.