Exporter les documents depuis Alfresco Share 4.0d

Je m’étonne parfois de l’absence de certaines fonctionnalités de gestion documentaire « classique » dans Share. Il en est ainsi de l’export multiple de documents qui consiste à récupérer un ensemble de documents en une seule opération. Le résultat de l’export est traditionnellement une archive zip.
Cette absence est d’autant plus surprenante que :

  1. Alfresco propose un ExportService au nom très évocateur
  2. le module RM (Records Management) offre la fonctionnalité d’export multiple

Cette fonctionnalité étant fréquemment demandée, même en dehors d’un contexte RM, nous avons donc développé un module pour la rendre disponible aussi bien dans les sites que dans le « repository ».

La fonctionnalité d’export du RM

Avant de se lancer dans l’écriture d’une nouvelle action, il est intéressant de se pencher sur ce qui existe déjà. Voici donc un rapide aperçu de la fonctionnalité disponible dans le RM.

Le module RM installé, lorsque un ou plusieurs noeuds du site sont cochés, le menu « Eléments sélectionnés » propose l’action « Exporter » :

Acfion Exporter du module RM

L’exécution de cette action affiche une popup permettant de choisi le format d’export : ZIP ou ACP (Alfresco Content Package).

Le module RM permet de choisir entre un export ZIP et un export ACP. Parlant pour les utilisateurs ?

Le résultat est un fichier ZIP ou ACP contenant les documents ou dossiers sélectionnés, ainsi que leur arborescence. En bonus, on trouve des « documents » représentant les commentaires portés par les documents, leurs vignettes et autres renditions Flash.
Un fichier XML de description des noeuds est également disponible à la racine de l’archive.

Structure d'une archive exportée avec le module RM


Si d’un point de vue technique pouvoir exporter en ACP et disposer d’un fichier XML de description des documents peut se comprendre, la vision fonctionnelle est différente.
Que vont faire les utilisateurs d’un fichier ACP ? Comment exploiter simplement (avec les outils bureautiques) un fichier XML ? Et je passe sur le fait qu’exploiter les commentaires est infaisable sous Windows à cause de la longueur du chemin d’accès.

Le chemin d'accès aux commentaires est trop long et ne peut être traité par Windows


Il serait quand même plus simlple pour nos utilisateurs de disposer d’une archive ZIP (utilisable immédiatement) avec un fichier de description au format Excel, ou CSV tout au moins.

La fonctionnalité d’export telle que je la vois

Vous l’aurez bien compris, la fonctionnalité actuelle, bien que très utile et offrant une bonne base de réflexion, ne me convient que partiellement.
La fonction d’export idéale offrirait le comportement suivant :

  • Export au format ZIP uniquement
  • Export des métadonnées au format Excel
  • Export des commentaires en HTML dans une arborescence « simple »
  • Simplification de l’arborescence exportée : non conservation de toute l’arborescence, mais uniquement celle des dossiers sélectionnés
  • En bonus, choix des éléments (contenus, métadonnées, commentaires) à exporter

Ceci est « ma » wish list, en tant qu’utilisateur quotidien d’Alfresco, et des besoins similaires se retrouvent chez nos clients, quelle que soit l’application de GED concernée.

Maintenant que les besoins sont exprimés, il faut réaliser

De quoi avons-nous besoins ?

  1. d’une interface pour définir ce que l’on souhaite exporter
  2. d’un composant Alfresco pour réaliser l’export

Pour le premier point, c’est assez trivial : un webscript suffit.
Pour le second, il va falloir aller chercher du côté de l’ExporterService, de ExporterComponent et de ViewXmlExporter.
Il s’agit des éléments utilisés pour réaliser l’export standard d’Alfresco.
En s’inspirant ce qui est fait avec ces composants, il va être possible à moindre frais d’adapter le composant de génération de l’archive à nos besoins. L’utilisation de la librairie JExcelApi se révèle être une aide précieuse pour la génération du fichier Excel stockant les propriétés.

Après ce petit travail, on obtient les résultats suivants sur Alfresco 4.0d, augmenté de la modification que je propose dans le billet « Simplifier la configuration des actions multiples dans Share« .

Le menu Exporter est disponible grâce à une modification du fichier share-config-custom.xml :

L'action d'export est disponible

La boîte de dialogue d’export est revue pour s’intéresser à des sujets plus fonctionnels que techniques :

Les utilisateurs ont le choix entre l'export des contenus et/ou des propriétés

Le résultat est un ZIP possédant une arborescence plus lisible :

Une arborescence réduite pour plus de lisibilité et moins de problèmes


Les propriétés sont disponibles dans un format facilement exploitable :

Les noeuds sont répartis entre documents et dossiers. Les propriétés peuvent être manipulées directement depuis Excel.

Bien sûr, on pourrait aller encore plus loin, en évitant que les propriétés très techniques (comme le dbid) ne soient extraites, ou en mettant en forme les tableaux. Dans un premier temps, cette solution convient à mes besoins, et je la valide en l’état ;-)
Les commentaires restent là pour échanger sur nos visions de ce que devrait être un système d’export dans Alfresco.

Remarque : pendant que je rédigeais ce billet, AtolCD a publié une nouvelle version de son composant d’extraction. Il s’agit d’une approche minimaliste (pas d’extraction des propriétés) qui, en plus de sa simplicité, offre l’avantage de permettre la définition du nom de l’archive à générer. Il peut donc s’agir d’une bonne option à regarder.

Cette entrée a été publiée dans Alfresco, avec comme mot(s)-clef(s) , , , , . Vous pouvez la mettre en favoris avec ce permalien.

4 réponses à Exporter les documents depuis Alfresco Share 4.0d

  1. Julien SERVAJEAN dit :

    Dans ces fonctions d’exports/imports, j’ai l’impression que la problématique de l’export de l’historique des versions n’est jamais abordée.
    L’avez-vous prévue ? Comment ?

  2. Je ne connaissais pas ExcelAPI .
    Est-ce mieux adapté qu’Apache POI pour ce type de développement ? (ou similaire mais plus léger?)

  3. Anonyme dit :

    Maintain the excellent job mate. This web blog publish shows how well you comprehend and know this subject.

  4. Charles Le Seac'h dit :

    Bonjour,

    Excusez-moi pour le délai de réponse, mon filtre antispam a fait trop de zèle ces derniers temps.

    @Jeremy : je n’ai pas fait de réelle comparaison entre POI et JExcelAPI. Les informations que j’ai pu glaner sur Internet indiquait de meilleures performances pour JExcelAPI, d’où mon choix de librairie.

    @Julien : en effet, je n’ai pour le moment pas mis en place l’export de versions. Si je devais traité le cas, je considérerais une version comme un document et ajouterai deux colonnes : une pour le numéro de version, une pour référencer l’objet « courant ».
    En tout cas, merci pour l’idée d’évolution ;-)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Protected by WP Anti Spam