Alfresco Content Services (ACS) est une solution de Gestion Electronique de Documents puissante qui permet de stocker et d’administrer plusieurs centaines de millions de documents. Il n’en demeure pas moins crucial de répartir ceux-ci dans une arborescence suivant un plan de classement afin de pouvoir naviguer dans l’entrepôt et explorer la base documentaire. 

Alfresco recommande sans cesse et rappelle régulièrement qu’il faut éviter de dépasser 2000 éléments (fichiers et dossiers confondus) par dossier. Cette recommandation a été étayée mais tempérée aux dossiers de 5000 à 10000 éléments et fait l’objet d’une note spécifique. En substance, pour des volumétries supérieures (en nombre, la taille des contenus eux-mêmes n’a aucune incidence), les documents doivent être dispatchés dans des sous-dossiers selon une clé de répartition à définir. L’ajout de ces sous-dossiers ne représente pas un impact significatif (inférieur à 0.2% en noeuds supplémentaires) et peut être automatisé à l’aide de policies, règles ou tâches planifiées. Au passage, si un dossier dépasse nettement cette recommandation, cela ne pose pas de problème particulier tant qu’il n’y a pas de requête pour lister le contenu de celui-ci. 

Partant de ce constat, nous avons développé un module permettant de classer automatiquement les documents d’un même contexte et pouvant supporter plusieurs dizaines de milliers de fichiers déposés au fur et à mesure. Il est ainsi possible de segmenter un ensemble de documents selon leurs caractéristiques (type, aspects et métadonnées), comme par exemple : une date, un nombre, une énumération voire la première lettre d’une référence ou d’un nom. Dès lors, il devient plus aisé de retrouver un document au statut  “En Cours” dans un dossier du même nom qu’au milieu de tous les autres.

Bien sûr, une autre façon d’accéder aux documents est de se servir du moteur de recherche en exploitant l’indexation plein texte, et le module permet également d’améliorer les résultats de recherche en tirant parti de métadonnées supplémentaires obtenues à partir du plan de classement.

Nous venons de publier la première version majeure de ce module de classement automatisé baptisé Alfresco Filer et mis à disposition en licence Open Source Apache 2.0 sur GitHub. Il bénéficie de toute l’expertise d’Atol Conseils et Développements dans l’accompagnement de projets de GED et capitalise sur notre démarche de dématérialisation de documents à forte valeur ajoutée.

# Fonctionnement du module

Le module Alfresco Filer d’Atol CD permet de générer un plan de classement à la volée en fonction des caractéristiques du document à classer ou de du dossier dans lequel il a été créé ou déplacé. Il s’agit notamment du site (ou bibliothèque) d’appartenance, du type, des aspects et des métadonnées. Des dossiers de segmentation sont créés dynamiquement en fonction des règles qui auront été définies afin de répartir les documents. Une règle est composée d’une condition selon laquelle elle s’applique et d’une action qui décrit le classement à réaliser. Il est aussi possible de désactiver la création de contenu ou de dossier ne correspondant pas aux critères requis dans un espace soumis à un plan de classement.

L’ensemble du cycle de vie du document est pris en compte, c’est à dire que lorsque ses métadonnées sont mises à jour par exemple, alors le document est reclassé. En outre l’action de classement peut inclure une règle de nommage pour renommer automatiquement un document en fonction de certaines de ses métadonnées par exemple.

Une caractéristique principale du module est de permettre de faire de l’héritage de métadonnées : Il s’agit davantage d’une duplication de métadonnées que d’un héritage au sens propre du terme mais le module assure également la cohérence des valeurs de ces métadonnées sur toute l’arborescence. Ainsi il est possible de n’autoriser la saisie de certaines métadonnées que sur le dossier racine et celles-ci sont ensuite reportées sur tous les dossiers et documents qui se trouvent en dessous. Pour cela, les métadonnées concernées doivent être regroupées dans un aspect avec un marqueur spécifique.

Il est ainsi possible d’obtenir des informations contextuelles sur le document sans nécessiter de double saisie de la part des utilisateurs. De plus, lorsqu’un document est créé ou déplacé dans cette arborescence, celui-ci hérite des métadonnées du nouvel emplacement. Dès lors il devient possible d’effectuer une recherche à facettes sur les métadonnées relatives au contexte du document.

# Sous le capot

Le mécanisme de policy d’Alfresco est utilisé pour s’assurer de l’application des règles de classement sur tout l’entrepôt. Ces règles métier doivent être écrites en Java et le module fourni une API fluent tirant parti du patron de conception Builder pour faciliter leur compréhension et leur maintenabilité.

Le module est packagé avec Maven sous forme de JAR (au standard Alfresco SDK 4.1) et fourni également sous forme d’AMP. Il fonctionne avec Alfresco Content Services dans sa version 5.2 à 6.2 incluse.

Une attention toute particulière a été portée sur la qualité logicielle et la robustesse de ce module. En effet, la qualimétrie a été validée par les outils Checkstyle, PMD et Spotbugs. De plus, une centaine de tests JUnit ont été conçus pour vérifier le niveau de service attendu dont notamment des tests en parallèle pour assurer le classement effectif de plusieurs dizaines de documents au même emplacement simultanément. Ces tests sont exécutés sur ACS 6.2 avec une base de données PostgreSQL dans des conditions similaires à un environnement de production. Une intégration continue est réalisée avec Jenkins pour valider chaque modification de la base de code et la couverture de code dépasse les 90% !

# Gestion de référentiel métier

Dans l’exemple ci-après, le plan de classement est édité dans un tableur. Il référence un emplacement racine dénommé “Boîte” qui concerne un projet d’une organisation référencé par l’identifiant “organisationProjet”. C’est cet emplacement qui porte les métadonnées du contexte et les permissions associées.

A l’intérieur, il y a deux niveaux intermédiaires qui permettent de répartir les documents selon leur nature. Ces intercalaires de classement sont créés lorsqu’ils sont requis (i.e. un document de la nature associée est présent) et détruits dès qu’ils sont vides, permettant ainsi de naviguer efficacement dans l’arborescence réellement utile au stade du projet correspondant.

# Conclusion

Le module Alfresco Filer d’Atol CD permet ainsi de traiter une importante volumétrie de documents entrants ou mis à jour. Il force à prendre en compte le classement des documents dès la conception de l’offre de gestion documentaire pour assurer la navigabilité tout au long du cycle de vie des documents. Il permet également d’enrichir les documents avec des métadonnées contextuelles, c’est à dire relatives à leur emplacement dans l’arborescence. Enfin, il favorise l’utilisation de la recherche à facettes, notamment sur les métadonnées qui sont héritées.

Compte tenu de l’effort important déployé pour les tests automatisés, il sera très facile de valider le bon fonctionnement du classement avec les futures versions d’ACS, ce qui fait de ce module une base de choix pour l’implémentation d’un plan de classement avec Alfresco Content Services sur le long terme.