Category Archives: Alfresco

28Oct/19

Dématérialisation du contrôle de la commande publique avec Flowable et Alfresco

Processus de gestion mêlant BPM (Flowable) et ECM (Alfresco)

Introduction

Ce processus consiste à faciliter le contrôle des commandes publiques en suivant un processus via un outil de BPM (Flowable), qui interagit avec des documents stockés dans un ECM (Alfresco).

Cette implémentation aurait pu être faite avec d’autres outils BPM comme Activiti, Bonita, ou ECM comme Nuxéo, Sharepoint (mais Sharepoint est-il vraiment un ECM ?)

Cahier des charges

Très succinctement, un atelier avec le service métier nous permet de décrire globalement le processus :

    1. Création des pièces techniques : Les pièces techniques sont rédigées par le service opérationnel (SO). Ces pièces sont transmises par répertoire ou e-mail à la direction des affaires financières (DAF) du service opérationnel.
    2. Stockage des documents : les pièces marchés sont stockées par dossier en fonction de l’état du dossier. Le plan de classement stocke les dossiers marco en fonction de leur état d’avancement : Le dossier marco est déplacé de répertoire en répertoire et reflète l’état du processus.
    3. Dépôt des pièces initiales dans MARCO : Après réception des pièces techniques, la DAF ou le service opérationnel autonome de la DGA-AT réalise les actions suivantes dans MARCO :
      1. Création des pièces administratives,
      2. Dépôt dans MARCO de l’ensemble des pièces techniques,
      3. Enregistrement du dossier complet dans Alfresco depuis MARCO, le statut du dossier indique « Enregistré ».
    4. Consolidation du dossier dans Alfresco : Après la création du dossier dans Alfresco, la DAF et le SO doivent le consolider en ajoutant les fiches qualités ( fiche de revue et fiche de planification) et l’estimation du marché. Ces fiches ne doivent pas être disponibles dans MARCO vu qu’elles ne sont pas destinées à être publiées. Lorsque le dossier est complété, la DAF initie le workflow de validation du marché initial.
    5. Contrôle du service de la commande publique : Lors de cette étape, le dossier ne doit être accessible qu’au service de la commande publique. Aucun accès en lecture ne doit être attribué au service opérationnel et à la direction des affaires financières. L’instructeur du service de la commande publique dépose la fiche d’observation et indique les modifications nécessaires au dossier.
    6. Mise à jour des pièces marché : Le dossier MARCO retrouve ses droits initiaux, il n’est plus limité au service de la commande publique. La DAF et le SO doivent mettre à jour les pièces marché dans MARCO et suivant les observations réalisées par le service de la commande publique.
    7. Validation par le service de la commande publique : Cette étape est la seule étape du workflow qui propose un choix d’action. Le service de la commande publique a le choix entre valider le dossier ou le refuser :
      1. En cas de refus, le workflow retourne à l’étape 5) de mise à jour des pièces marché pour que le service de la commande publique mette à jour les documents selon les remarques contenues dans la fiche d’observation.
      2. En cas de validation, le statut du dossier est enregistré à « validé » et le SO et la DAF sont notifiés de sa validation.
    8. Transfert du marché vers AWS : Après validation de l’ensemble des pièces marché, le SO et la DAF doivent transférer l’ensemble des pièces présentes dans MARCO vers AWS. Cette étape est faite manuellement par les agents depuis MARCO.
    9. Publication du marché : Après transfert des pièces vers AWS, le SO et la DAF doivent publier le marché dans AWS.

Réalisation

Côté BPM

Processus v1

A partir de ces demandes, le processus suivant a été dessiné :

Remarques :

  • Des notifications ont systématiquement été ajoutées afin de faciliter la conduite du changement, même si elles sont inutiles avec l’utilisation d’un outil de gestion de tâches. Elles seront supprimées dans un deuxième temps.
  • Des appels sont faits à des systèmes externes :
    • pour la récupération de listes de valeurs qui vont venir alimenter les listes déroulantes dans Flowable ;
    • pour exécuter des actions sur la GED afin de déplacer les dossiers et mettre à jour leur état.

Processus v2

Après plusieurs échanges avec le client et quelques itérations de modélisation entre le métier et un spécialiste fonctionnel, le processus final ressemble à ceci :

Ce processus final n’utilise pas de swimlanes du fait d’un bug dans Flowable Modeler qui empêche dans ce cas l’utilisation de sous-processus. Du coup, celles-ci sont simulées par le positionnement des étapes sur des lignes virtuelles. Un commentaire à gauche permet de préciser le groupe assigné.

Les sous-processus suivants ont été créés :

  • Assignation instructeurs
  • Pré-contrôle
  • A corriger
  • Post-validation

Ils permettent de regrouper les actions jouées lors du passage des transitions et facilitent ainsi la lecture et la compréhension du processus, comme on pourrait le faire avec des fonctions dans un programme écrit traditionnellement.

Côté ECM

Le plan de classement “de base” est initialisé. Les dossiers sont créés automatiquement par la suite à partir des métadonnées fournies par Marco lors du dépôt du dossier.

L’accès aux dossiers est géré par des droits d’accès, positionnés sur le plan de classement physique fourni par le service métier, qui protègent les dossiers et documents. Des droits « ad hoc » sont rajoutés selon les transitions suivies dans le processus pour s’adapter aux besoins précis du métier.

Remarque :

  • Création dans Alfresco d’une action permettant de lancer le processus de contrôle sur un dossier en fonction de l’état du dossier et de l’appartenance de l’utilisateur courant à un groupe spécifique (en l’occurrence, le goupe DAF des instructeurs financiers)
  • Création d’un webscript permettant de « bouger » le dossier fourni en paramètre pour refléter l’état du processus
  • Création d’un script pour mettre à jour les permissions

Groupes et utilisateurs

Les groupes et utilisateurs assignés sont basés sur les groupes Alfresco afin d’éviter de reproduire dans Flowable une configuration de groupes identique à celle existant déjà.

Par défaut, Flowable propose d’utiliser une base LDAP pour s’authentifier et gérer les groupes. Cependant, ce connecteur oblige à recréer les groupes créés localement au niveau d’Alfresco, la structure des annuaires LDAP ne correspondant jamais à la structure logique attendue. L’utilisation d’Alfresco comme un fournisseur d’identité (utilisateurs, groupes, privilèges) pour Flowable nécessite :

  1. soit de développer un connecteur IDM pour Alfresco pour que Flowable s’appuie sur les utilisateurs et groupes définis dans Alfresco (locaux ou issus d’une synchronisation LDAP) ;
  2. soit de jouer de la possibilité d’utiliser une variable contenant une listes d’utilisateurs potentiels pour la réalisation d’une tâche, cette variable pouvant être calculée par un appel de webscript sur Alfresco qui renverra donc la liste d’utilisateurs adéquats correspondants à un groupe Alfresco (local ou non).

La solution 2 est immédiate et facile à mettre en oeuvre. Cependant, la solution 1 est plus « propre » et correspond mieux à la logique de Flowable. Elle est en revanche nettement moins triviale.

Résultat

L’implémentation donne les résultats suivants. Plutôt qu’une longue succession de captures d’écrans et d’explications textuelles, je vous propose la vidéo suivante qui commente étape par étape le fonctionnement de l’application du point de vue des utilisateurs :

Conclusions

Le BPM et tous les outils répondant à cette logique permettent de répondre rapidement et facilement aux besoins principaux des utilisteurs. Cependant, il faut prévoir une étape où un développeur interviendra pour gérer les aspects techniques.

Un socle technique adéquat, tel que celui proposé par Bluexml, évite, ou à tout le moins, retarde, l’appel à un développeur permettant ainsi aux métiers de répondre rapidement à ses besoins sans dépendre de contraintes budgétaires ou de moyens humains que trop souvent on leur oppose.

Afin de vous aider à prendre en main le BPM, et éventuellement le lier à un ECM comme Alfresco, Bluexml se tient à votre disposition et propose une formation, éventuellement sous forme d’un transfert de compétences, pour réaliser en totalité ou en partie la présentation qui vous a été faite à travers ce billet de blog.

01Août/19

Pérennisez vos investissements dans l’ECM

Introduction

Nous sommes passés, en une décennie, d’une multitude d’outils proposant des fonctionnalités d’édition documentaire et utilisant des GED spécifiques à une phase de consolidation dont a émergé une architecture basée sur une GED transverse unique dans laquelle les applications métiers déversent leurs documents.

Autour de cette GED gravite un ensemble de solutions produisant des documents :

  • les applications métiers ;
  • les applications bureautiques ;
  • les processus.

Ces documents stockés dans la GED sont déplacés dans un système d’archivage intermédiaire (un autre tenant de la GED) et sont finalement :

  • soit stockés dans un SAE (Système d’Archivage Électronique ;
  • soit détruits.

Bluexml a développé très tôt chez ses clients une architecture de référence, dite transverse :

Face à tous ces outils, l’utilisateur, un peu perdu et soumis à une forte pression marketing (licence offerte), s’est parfois fourvoyé dans de mauvaises directions. Cependant, après plusieurs projets de GED réalisés ces dernières années, les utilisateurs voient la difficulté de mener à terme ces projets. Ils constatent également que les coûts de migration d’une version à l’autre sont très importants du fait des très nombreuses adaptations demandées par rapport au logiciel “de base”.

Gagnant en maturité grâce à ces expériences, les utilisateurs cherchent maintenant à construire des architectures composées de logiciels spécialisés, sans tordre ceux-ci, ne nécessitant pas de coûts supplémentaires excessifs pour un changement de version. Ils cherchent également à rationaliser leurs coûts d’exploitation via l’utilisation d’application SAAS et à simplifier l’interconnexion de toutes ces applications à leur SI.

A partir de ces besoins et de ces problèmes identifiés, Bluexml construit sa démarche d’innovation et la remet régulièrement à jour au fur et à mesure de l’évolution des technologies et des logiciels. Cette démarche veut proposer une approche simple, compréhensible par tous les acteurs, clients comme prestataires. Il ne faut pas que la connaissance ne se retrouve que chez le prestataire, ce qui arrive encore : cela n’a pas de sens !

Besoins utilisateurs

Les grandes fonctions auxquelles les utilisateurs cherchent une réponse, au-delà de la RH, la paie, la comptabilité ainsi que les fonctions liées à chaque métier, sont :

  • le travail collaboratif, pour faciliter la création et le partage de contenu ;
  • les processus (BPM), pour limiter le nombre de mails échangés et faciliter les échanges des informations et la pérennité du SI ;
  • le stockage (GED) des documents de référence soumis à des contraintes légales ;
  • l’archivage des documents soumis à des contraintes légales ou ayant une valeur historique.

GED

La GED propose de nombreuses fonctionnalités dont :

  • La gestion de métadonnées ;
  • La recherche par facettes ;
  • La sécurité ;
  • L’interopérabilité via le support de multiples protocoles (HTTP, FTP, ReST et surtout CMIS) ;
  • Les transformations documentaires ;
  • Le stockage d’un nombre TRÈS important de documents (Milliard(s)) ;
  • La disponibilité d’API pour faciliter l’intégration de la GED dans le SI.

En comparant rapidement différentes solutions (Alfresco, Nuxéo, Sharepoint) sur ces critères, on obtient la matrice suivante :

La comparaison est assez caricaturale de façon à donner des éléments clairs de décision.

SharePoint Online (SPO) n’est pas vraiment une GED car :

  • SPO ne supporte pas CMIS ;
  • SPO présente des limites en termes de perf (limite de 300 K documents par site) qui empêche de l’utiliser dans de nombreux cas d’utilisation même avec des petites organisations (200 personnes) ;
  • SPO présente des fonctionnalités de recherche limitée.

BPM

Le BPM propose de nombreuses fonctionnalités dont :

  • La modélisation de processus métier
  • L’utilisabilité
  • La génération d’application
  • L’interopérabilité

En comparant rapidement différentes solutions (Alfresco Process Services, Bonita, Flowable, SPO avec Flow ou PowerApps) sur ces critères, on obtient la matrice suivante :

SharePoint Online (SPO) n’est pas un outil de gestion de processus car :

  • SPO ne supporte pas BPMNv2 ;
  • SPO + Flow est un outil permettant de créer seulement des tâches automatiques (à l’instar des règles de gestion de contenu d’Alfresco) simples, en aucun cas des processus ;
  • SPO + PowerApps est un outil de gestion de formulaires, orienté développeurs, utilisant des expressions plutôt complexes (sorte de super formules Excel), inutilisable par des fonctionnels.

Concernant SharePoint, des modules tiers supplémentaires peuvent fournir des fonctionnalités de BPM mais sortent, du coup, du champ de la comparaison.

Les autres choix (APS, Bonita et Flowable) présentent chacun des avantages et inconvénients. La solution Flowable (communautaire) est particulièrement efficace et appréciée par les fonctionnels qui parviennent après une courte formation (1j) à prototyper eux-mêmes leur processus.

Travail collaboratif

Les outils de travail collaboratif proposent de nombreuses fonctionnalités dont :

  • La gestion de contenus web (CMS) ;
  • L’édition en ligne simultanée et collaborative ;
  • Le partage ;
  • La mobilité.

En comparant rapidement différentes solutions (Alfresco Content Services, Nuxeo, SharePoint Online) sur ces critères, on obtient la matrice suivante :

Indiscutablement, SharePoint Online est un outil de travail collaboratif avec des fonctionnalités de CMS efficaces ainsi que des fonctionnalités d’édition en ligne et de rédaction collaborative utilisant MS Office en mode web (Office365 ou Word Online). On peut cependant clairement s’interroger sur sa facilité d’utilisation.

Alfresco et Nuxeo n’offrent pas, de base, de réelles fonctionnalités d’édition en ligne quoiqu’en disent les documents marketing. Des modules supplémentaires peuvent fournir des fonctionnalités d’édition en ligne (basées sur LibreOffice OnLine ou LOOL) mais sortent, du coup, du champ de la comparaison.

Solutions

Selon leur positionnement originel et la pertinence de leurs outils, les acteurs se sont spécialisés :

  • au niveau fonctionnel
  • au niveau du mode d’exploitation (sur site ou hébergé)

Spécialisation fonctionnelle

  • Focus sur la GED et les processus documentaires : Alfresco ;
  • Focus sur les processus documentaires : Flowable, Bonitasoft, Alfresco Process Services ;
  • Focus sur le DAM : Nuxéo ;
  • Focus sur le travail collaboratif : Sharepoint Online, LibreOffice OnLine.

Mode d’exploitation

Les solutions sont généralement disponibles sous 2 formes, quel que soit le métier visé :

  • solution sur site (on premise) ;
  • solution en mode SAAS, hébergé par l’éditeur ou par un prestataire.

Solutions on premise

Les solutions étaient auparavant toutes disponibles sur site et parfois en mode hébergé. Un transfert est en train de s’opérer au profit des solutions hébergées, certaines solutions sur site étant amenées à disparaître.

On peut ainsi voir les prémisses de cette fin avec, par exemple, la solution SharePoint. Disponibles en 2013 et 2016 en version “on premise”, ce n’est qu’en 2019 que la solution sur site est apparue, basée sur les fonctionnalités disponibles dans la version hébergée disponible depuis 2013, 2016… (SPO 2019) et agrémentée de fonctionnalités spécifiques au mode sur site comme le CMIS (non disponible en mode hébergé)… La version SPO est maintenant la version de référence à partir de laquelle seront déclinées les versions “on premise”. Il est parfois difficile de s’y retrouver.

L’avantage des solutions “on premise” est bien sûr la confidentialité des informations (données et documents), celles-ci n’étant pas hébergées sur le site de l’éditeur et leur maîtrise. Cependant, cette confidentialité oblige à une exploitation assidue des serveurs pour limiter les failles de sécurité et assurer une disponibilité correcte.

Solutions en mode SAAS

Certains éditeurs distribuent également leurs solutions en mode SAAS.

Avantages

L’avantage des solutions en mode SAAS est de proposer aux clients un coût par utilisateur incluant l’hébergement, mais aussi les coûts d’exploitation, pour une qualité optimale et une disponibilité proche des 99,99999%. Les utilisateurs ont du mal à résister à ce type d’offre qui leur permet de contourner les limites de leur organisation, notamment en termes de management RH, qui les empêche de proposer des hébergements avec une disponibilité correcte (comment redémarrer un serveur sans astreinte le we ?).

Inconvénients

Pourtant, par cet acte, les utilisateurs prennent plusieurs risques :

  • “RGPD” ?
    • quelle assurance que la confidentialité sera assurée ?
    • que le vol de données est impossible ?
    • que les données ne sont pas utilisées par le fournisseur de services pour une quelconque manipulation (cf l’affaire Cambridge Analytica) ?
    • que les données ne sont pas “espionnées” ?

L’histoire nous a montré que les grands fournisseurs de service sont des organisations à but lucratif, soumises à des lois (Patriot Act par exemple) et à des pressions de tous genres. L’histoire nous montre chaque jour que des vols de données ont lieu chez les plus grands opérateurs (Amazon, Facebook, les banques…). Comment croire que vos données seront plus en sécurité chez eux ? D’un autre côté, si elles ne sont pas en sécurité chez eux, le sont-elles chez vous ?

En outre, le fait d’utiliser des services en mode SAAS vous expose aux risques suivants :

  • quelle maîtrise des données ?
  • quel suivi des utilisateurs ?
  • comment interconnecter des applications hébergées sur différents serveurs sur différents réseaux sur lesquels vous n’avez pas de maîtrise ?

Plus globalement, des risques économiques et stratégiques apparaissent :

  • quid si le fournisseur disparaît ?
  • quid si le fournisseur de services décide de couper celui-ci sans préavis ?
  • quid si le fournisseur de service subit une pression extérieure (gouvernementale ou para-gouvernementale par exemple) pour couper, espionner, modifier celui-ci ?
Le réseau souverain

Si le SAAS, qui répond à de vraies problématiques, a de beaux jours devant lui, la mise en place d’un réseau souverain, par exemple à l’échelle européenne, basé sur des architectures open source ou en tout cas auditables et maîtrisées, permettrait de pallier à certains des risques identifiés.

Architecture cible

Pour répondre à ces différents besoins fonctionnels, sans prendre en compte les risques identifiés préalablement, plusieurs architectures sont possibles :

  • (BAD) SharePoint Online est l’application de référence ;
  • (GOOD) VOTRE application de référence.

Bluexml vous conseille clairement de développer VOTRE application de référence afin d’investir vos ressources dans un objectif durable.

(BAD) SharePoint Online est l’application de référence

Cette solution où SharePoint est le frontal de référence pour vos utilisateurs est l’erreur dans laquelle il faut éviter de tomber. La conduite du changement s’avèrera plus compliqué si vous souhaitez en changer, vos utilisateurs ayant pris l’habitude de son interface dès la connexion.

(GOOD) VOTRE application de référence

Faire ce choix consiste à se concentrer sur vos besoins et vos utilisateurs et non sur un produit. Vos investissements sont pérennes. L’utilisateur finira par aller peut-être sur SharePoint Online ou sur LibreOffice Online, mais après être passé par VOTRE application. Du coup, les changements, s’il y en a, interviendront à un second niveau et auront un impact moins important.

Bluexml vous conseille clairement de développer VOTRE application de référence afin d’investir vos ressources dans un objectif durable.

Conclusions

Les outils d’ECM ont longtemps proposé des fonctionnalités de BPM et de travail collaboratif. Les difficultés de migration des processus intégrés ainsi que leur limitation ont fait que les utilisateurs se sont dirigés vers des solutions de BPM pures. En parallèle, des solutions puissantes d’édition collaborative, en ligne, utilisables à travers le navigateur, sont devenues très présentes comme Word Online (Office365), LibreOffice OnLine (LOOL) ou Google Docs présent sur ce marché depuis déjà une dizaine d’années.

Du coup, les fonctions sont aujourd’hui clairement identifiées et structurées dans des architectures techniques spécifiquement conçues pour faciliter leur évolution, voire leur changement. Le temps où une application essayait de couvrir tout le champ fonctionnel semble révolu.

Choisir une telle architecture ayant un impact sur votre SI et votre budget pour de nombreuses années, nous vous conseillons de proposer à vos utilisateurs une interface qui soit la vôtre, et non celle d’un éditeur. La conduite du changement en sera d’autant facilitée.

Bluexml vous conseille clairement de développer VOTRE application de référence afin d’investir vos ressources dans un objectif durable.

16Avr/19

SEDIF – Mise en production e-doc

La nouvelle version de l’application métier e-doc du SEDIF, basée sur Alfresco Content Services 5.2, est en production depuis le 29 mars 2019.

Cette mise en production concrétise le travail effectué par bluexml et le Syndicat des Eaux d’Ile de France pour la migration de e-doc depuis une version communautaire d’Alfresco.
Dorénavant, la plateforme e-doc favorise l’accès à la documentation avec l’ensemble des partenaires du SEDIF et soutient l’ensemble des processus métiers du Syndicat (Etude de Faisabilité, Gestion des Affaires, Opération d’Investissement..)

E-doc en chiffres, c’est : 110 utilisateurs internes, 100 externes , 264 sites métiers et 300 Go de documents.

Pour plus d’informations au sujet de la solution Alfresco Content Services.

Suivez-nous sur les réseaux sociaux

08Avr/19

Mission d’analyse documentaire au département de l’Hérault

Le Département de l’Hérault missionne bluexml pour une étude sur sa politique documentaire.

Bluexml a procédé à la mise en place d’indicateurs graphiques permettant la supervision des fonds documentaires pour le département de l’Hérault. Avec Elastic, cela nous permet de plus de consolider les contenus stockés sur serveurs réseaux Windows et serveurs de GED.

La suite Elastic permet de rechercher, d’analyser et de visualiser les données de l’organisation en temps réel, quels que soient leur source ou leur format.

Bluexml a pu identifier les gaspillages (doublons…) et proposer des pistes d’amélioration au département. De plus, la mise en place des indicateurs permet de suivre et de vérifier le transfert des contenus des serveurs réseaux vers la GED en facilitant le suivi de leur migration.

Plus d’informations sur nos solutions de gestion documentaire.

Suivez-nous sur les réseaux sociaux

19Oct/18

Pourquoi Alfresco abandonne Alfresco Share au profit d’ADF ?

ADF ou Alfresco/Application Development Framework est le nouvel outil d’interface mis à disposition par Alfresco. Il vise, à terme, à remplacer la solution d’interface “Alfresco Share”, actuellement distribuée avec Alfresco, qui est en cours d’abandon. Les cycles de vie des produits Alfresco et Alfresco Share ayant été dissociés, Alfresco Share sera quand même disponible sur les prochaines versions d’Alfresco mais n’évoluera plus.

Alfresco Share est un outil générique de gestion documentaire, avec de nombreuses fonctionnalités pas toujours utiles aux utilisateurs. Il peut être jugé, à raison, complexe et ne facilite pas la conduite du changement. En outre, basé sur des technologies “maison” telles que Surf ou abandonnées telles que Y!UI (Yahoo) et Dojo (un vieux projet IBM), il est difficile de trouver des compétences pour l’adapter.

A la lumière de tous ces éléments, Alfresco a choisi d’adapter sa stratégie et propose ainsi un nouveau framework basé sur Angular, technologie récente, supportée par un géant de l’internet, assurant une disponibilité importante de compétences. En outre, ce framework est constitué d’un ensemble de composants fonctionnels, qu’il est possible d’assembler en fonction des besoins des utilisateurs.

ADF permet de développer des outils qui s’adaptent aux besoins des utilisateurs et non l’inverse. La conduite du changement sera ainsi facilitée.

ADF se base sur le framework Angular 5, qui lui apporte beaucoup de flexibilité au niveau des fonctionnalités ainsi qu’une bonne adaptabilité par rapport au support de visualisation (PC, tablette ou téléphone).

ADF est un projet open-source et profite d’une communauté très active sur internet.

 

03Juil/18

Intégrer CMIS avec Ruby

Installation

Pour jouer cette même requête avec ruby, et l’intégrer par exemple dans un développement basé sur RoR, il faut installer une  librairie cmis, par exemple :

  • https://github.com/UP-nxt/cmis-ruby.git

Configuration

Après installation, il faut saisir les informations correspondantes à votre GED, en l’occurrence Alfresco, dans spec/config.yml :

server:
  service_url: http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser
  username: admin
  password: admin
repository: -default-

Lancez alors les tests avec la commande suivante :

rake

Récupération d’une liste de documents

Pour vous aider à faire vos premiers pas avec cette librairie, vous pouvez tester le script suivant adapté depuis le readme du projet :

[code language=”ruby”] $LOAD_PATH.unshift ‘lib’
require ‘cmis’

# get the repository object
server = CMIS::Server.new(service_url: ‘http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser’,
username: ‘admin’, password: ‘admin’)
repository = server.repository(‘-default-‘)

# query for first 50 documents where the property ‘cmis:name’ is ‘%DAT%’
# and stored in sites/test directory
cmisq = <<eos
select * from cmis:document
where cmis:name like ‘%DAT%’
and contains (‘PATH:\”//app:company_home/st:sites/cm:test//*\”‘)
eos

#query = repository.query(“select * from cmis:document where cmis:name like ‘GED%'”)
query = repository.query(cmisq)

query.each_result(limit: 50) { |document|
puts “-New item ——————————”
puts “Name: ” + document.name
puts “CMIS ObjectId: ” + document.cmis_object_id
puts “Mime-Type: ” + document.content_stream_mime_type
puts “Last Modification Date: ” + document.last_modification_date.to_s
}
[/code]

En exécutant ce code, on obtient la sortie suivante :

Conclusion

Pour étudier les autres possibilités de la librairie, je vous invite à consulter les fichiers de tests dans le répertoire spec/cmis-ruby, et plus particulièrement :

  • document_spec.rb : pour la création/lecture/mise à jour/suppression de document
  • folder_spec.rb : pour la création/lecture/mise à jour/suppression de dossier
01Juil/18

Introduction à CMIS

CMIS est le langage de choix pour requêter une gestion documentaire. En effet, ce langage, proche de SQL, utilise les concepts proches des bases de données. CMIS est un standard mais, bien sûr, chacun a développé un sous-ensemble de fonctions supplémentaires en dehors du standard. Cependant, c’est mieux que rien…

Ainsi, pour récupérer la liste des documents dont le nom contient la chaine DAT et qui sont stockés dans la sous arborescence “sites/test”, il faudra taper la requête suivante :

select * from cmis:document
where cmis:name like '%DAT%'
  and contains ('PATH:"//app:company_home/st:sites/cm:test//*"')

Navigateur de noeuds

Les habitués d’Alfresco auront remarqué que le chemin fait référence à un répertoire stocké dans un site…

Dans mon cas, en tapant la requête dans le navigateur de noeuds d’Alfresco j’obtiens le résultat suivant :

CMIS Workbench

Afin de découvrir Alfresco d’un point de vue CMIS (nom des propriétés notamment), je vous invite à télécharger CMIS Workbench. Il vous permettra de mieux comprendre le fonctionnement de CMIS :

  • Navigation dans le repository et découverte des propriétés CMIS
  • Exécution d’une requête CMIS depuis une fenêtre de console

CMIS Workbench est disponible à l’adresse suivante :

Navigation dans le repository et découverte des propriétés

Exécution d’une requête CMIS

Conclusion

Un standard riche, simple à utiliser de par sa proximité avec le SQL, une fois qu’on a, comme d’habitude, intégré quelques subtilités (notamment les D: et P: pour spécifier les types et aspects… 😉

Bon tests !

18Mai/18

Ouvrez simplement votre entrepôt Alfresco au grand public

Module de consultation externe simplifié par profil

Blue Search

Introduction

BlueSearch est une application de consultation simplifiée qui permet d’effectuer des recherches « à la google » sur un repository Alfresco. Les recherches effectuées sans authentification sont limitées à des documents « publics » et ne ramènent que des documents accessibles par l’utilisateur « public ».

Les recherches peuvent également être réalisées avec authentification ; elles sont alors réalisées sur l’ensemble des documents accessibles par l’utilisateur authentifié.

Suite à la recherche, les résultats peuvent être affinés grâce la sélection de facettes. Les documents peuvent être prévisualisés, téléchargés, étudiés dans le détail et partagés via un lien par mail ou sur les réseaux sociaux quels qu’ils soient (twitter, pinterest, facebook…).

Les principaux écrans de cette application peuvent être facilement personnalisés via des fichiers css directement accessibles par l’administrateur de l’application ou par un prestataire d’une agence de communication.

Application de consultation

Spécifications fonctionnelles

Cas d’utilisation

@TODO

Rôles

L’application est composée de 2 modules :

  1. l’application de consultation simplifiée ;
  2. l’application de configuration.

Elle peut être accédée par 3 rôles :

  • un rôle public : une authentification automatique et transparente est réalisée par l’application. Les utilisateurs n’ont généralement que des droits de lecture, de consultation et de téléchargement ;
  • un rôle authentifié : l’utilisateur s’authentifie à l’aide de son identifiant et de son mot de passe. Il a les droits correspondant à son degré d’habilitation quelle que soit l’application utilisée ; il accède généralement à l’application de consultation simplifiée mais il peut également accéder à l’application Alfresco Share native s’il a besoin de l’ensemble des fonctionnalités disponibles ;
  • un rôle d’administrateur fonctionnel : l’utilisateur s’authentifie à l’aide de son identifiant et de son mot de passe. Il a les droits correspondants à son degré d’habilitation. Il accède à l’application uniquement via Alfreco Share natif.

Plateformes de consultation

Les plateformes de consultation se divisent en :

  • Ordinateurs de bureau ;
  • Tablettes ;
  • Smartphones.

Cette application de consultation a été développée pour les ordinateurs de bureau. Elle peut être consultée sur une tablette et un smartphone mais son ergonomie n’a clairement pas été pensée pour ces derniers.

Il serait intéressant de développer un module pour tablette et smartphone.

Architecture

Diagramme d’architeture

L’architecture de la solution est la suivante :

@TODO

Fonctionnalités techniques

Les fonctionnalités suivantes sont implémentées :

  • Interface d’administration de l’application
  • Authentification automatique
  • Pages personnalisables
    • Pages html statiques
    • Fichiers css statiques
    • Personnalisation des informations à afficher

Interface d’administration de l’application

Une IHM spécifique est disponible. Elle correspond à l’application Alfresco Share native. Elle permet de :

  • créer le compte public
  • modifier les pages personnalisables

Authentification automatique

L’accès à quelque page que ce soit au niveau de l’application Alfresco nécessite obligatoirement une authentification. BlueSearch authentifie automatiquement l’utilisateur sans saisie d’aucun mot de passe. Les documents qui peuvent être recherchés ou accédés sont limités par les droits de l’utilisateur choisi pour l’authentification automatique.

Ce mécanisme pourrait être étendu très simplement afin de s’authentifer avec diffférents utilisateurs selon divers critères (son adresse IP – interne/externe, l’heure, le temps qu’il fait… :-).

Pages personnalisables

L’application peut être personnalisée au niveau des pages html statiques suivantes :

  • formulaire de recherche : construction totale de la page ;
  • mentions légales : construction totale de la page ;
  • contact : construction totale de la page.

L’application peut également être personnalisée au niveau des fichiers css statiques qui permettent d’adapter la présentation des pages dynamiques :

  • home.css : pour personnaliser la présentation globale des pages statiques ;
  • delib.css : pour personnaliser la présentation de la page détail.

Fonctionnalités

L’application est constituée des pages suivantes :

  • Page de recherche à la google
  • Page de liste de résultats
  • Page de recherche avancée
  • Page de détails

Page de recherche à la google

Cette page permet de rechercher le repository à partir d’un ensemble de mots-clés comme sur Google, Bing, Yahoo…

Page de liste de résultats

Cette page s’affiche suite à une recherche « à la google » ou suite à une recherche avancée.

Par défaut, seuls 20 documents sont affichés. Il est possible de « scroller » en bas de page pour afficher 20 nouveaux résultats… Dans la pratique, l’utilisateur sélectionne souvent une facette afin d’affiner sa recherche.

Téléchargement d’un ou plusieurs documents

L’utilisateur peut télécharger un document avec les actions suivantes :

  • Cliquer sur Actions ;
  • Cliquer sur Télécharger.

L’utilisateur peut aussi télécharger un ou plusieurs documents :

  • Sélectionner plusieurs documents ;
  • Cliquer sur Documents sélectionnés ;
  • Cliquer sur Télécharger un .zip.

Navigation par facettes

Sélection de facettes métier

En cliquant sur une facette métier, la liste des résultats s’affine et se met à jour. Il est possible de sélectionner une autre facette ou de désélectionner une facette.

Prévisualisation du document

En cliquant sur l’icône de « document », la page suivante s’affiche :

Page de recherche avancée

Une page de recherche avancée est disponible. Elle permet de sélectionner plusieurs critères en même temps sur un ou plusieurs champs. Elle renvoie sur la liste de résultats ci-dessus.

Page de détails du document

Partage d’un document

Des actions de partage par mail sont disponibles. Elles créent un message en mode édition dans votre outil de messagerie que l’utilisateur peut personnaliser :

Visualisation des métadonnées

Les métadonnées sont présentées à l’utilisateur sur la page de détails. Ces détails peuvent être cachés/affichés via le fichier css personnalisable delib.css.

Conclusion

BlueSearch permet de valoriser très simplement le contenu public d’un repository Alfresco et d’augmenter très simple votre retour sur investissement.

Pour voir le système en production, je vous invite à consulter le site public suivant :

11Mai/18

Découverte de l’interface ADF pour ECM Alfresco

Etude de faisabilité ADF pour outils Alfresco

Qu’est ce qu’ADF ?

ADF ou Application Development Framework est le nouvel outil d’interface mis à disposition par Alfresco. Il vise, à terme, à remplacer la solution d’interface “Share” qui est actuellement utilisée. Le projet est open-source et profite déjà d’une communauté assez active sur internet.

ADF se base sur le framework Angular 5, ce qui lui apporte beaucoup de flexibilité au niveau des fonctionnalités ainsi qu’une bonne adaptabilité par rapport au support de visualisation (PC, tablette ou téléphone).

La force d’ADF réside également dans son côté customisable : la plupart des fonctionnalités de “Share” peuvent être déployées dans ADF, c’est l’utilisateur qui décide ou non de les faire incorporer par le développeur. On se retrouve donc avec un outil unique, s’adaptant au mieux aux besoins spécifiques de chacun.

L’interface ADF s’adapte aussi bien à la gestion de fichiers avec l’ECM d’Alfresco, qu’à la gestion de processus avec l’outil de BPM Activiti.

ADF pour la gestion de contenu numérique

Comme pour l’interface “Share” classique, l’accès aux fonctionnalités de l’application n’est possible qu’après la connexion de l’utilisateur.

La page de connexion

Une fois connecté l’utilisateur est automatiquement redirigé vers l’explorateur de fichiers. La gestion des droits étant prise en compte, il n’aura accès qu’aux répertoires auxquels il est autorisé. Depuis cette interface il pourra également créer un nouveau répertoire ou ajouter un fichier (via un bouton ou en drag’n’drop). Une fonctionnalité de recherche est également présente pour retrouver plus rapidement un document particulier.

L’explorateur de fichiers

Quand l’utilisateur arrive sur le document qui l’intéresse, un volet d’options lui offre l’accès à plusieurs actions : copier le document, le télécharger, le déplacer, le supprimer ou encore voir les différentes versions de ce document. Cette liste n’est pas exhaustive, d’autres actions sont à disposition mais n’ont pas été mise en place dans notre monture de test (le partage du document vers l’extérieur notamment).

L’onglet détails permet d’afficher toutes les actions relatives au document : la visualisation, l’affichage et l’édition des métadonnées ainsi que les différentes versions de ce document.

Les options disponibles pour un fichier

 

La visionneuse de documents

 

Options d’édition des métadonnées

 

Encore une fois les fonctionnalités présentées ici ne représentent pas la totalité des possibilités offertes par ADF.

Le versioning est pris en charge par ADF

 

 

 

Ressentis

L’application ADF offre vraiment énormément de possibilités que ce soit pour Alfresco ou Activiti. Les modules node mis à disposition pour les équipes de développeur Alfresco sont très complets et des documentations détaillées sont accessibles sur le GitHub du projet. La création de sa propre application avec les modules qui nous sont utiles est assez simple, même si des connaissances de base en Angular sont les bienvenues.

 

Cela conclu le premier billet de blog dédié à ADF, traitant de l’aspect ECM. Un autre article arrive prochainement, qui exposera les possibilités qu’offre ADF pour l’outil de BPM Activiti.

24Avr/18

Hot Reloading en Alfresco avec HotswapAgent

Pour développer en Java sur Alfresco, il faut absolument mettre en place une solution de hot reloading, car le temps de redémarrage du serveur de la plateforme est bien trop long pour pouvoir tester facilement les changements au code. Cela concerne aussi le développement de scripts serveur en JavaScript qui sont exécutés par le moteur Rhino : il n’est pas normal pour un dev JavaScript de devoir attendre quelques minutes avant de tester une petite modification du code.

Alfresco propose deux solutions : JRebel (payante) et HotswapAgent (open source). Pour l’instant j’ai choisi de ne pas investir dans JRebel et de bien tester son concurrent gratuit pour voir s’il suffit. Alfresco nous donne un tutoriel officiel pour l’utiliser, mais il manque quelque passage (notamment l’utilisation dans Eclipse qu’on ne trouve que pour JRebel), donc je vais refaire le tour pour arriver a un petit projet basé sur l’archétype Maven et le code démo qu’il contient.

La liste de courses

Nous allons utiliser un correctif pour la machine virtuelle Java (ne paniquez pas, il s’installe à côté, sans modifier la VM originale). Téléchargez donc la version pour Java 8 de DCEVM (version 8u152 à l’heure).

Bien évidemment, il faut avoir exactement la même version de Java, donc si vous utilisez une version différente, allez fouiller dans l’archive Oracle pour trouver la bonne.

Enfin, le vrai HotswapAgent. Inutile de télécharger la version la plus récente : pour Alfresco il faut utiliser la 1.0.

Voici un résumé des fichiers que j’ai utilisés dans Linux :

L’installation

Après avoir installé le JDK (pas besoin de l’installer en tant que administrateur), appliquez le correctif en utilisant cette commande :

$ java -jar DCEVM-8u152-installer.jar

En Windows on peut aussi taper deux fois sur DCEVM-8u152-installer.

Il s’agit d’un installateur qui vous donne une interface utilisateur assez simple :

Ajoutez la VM que vous venez d’installer et après tapez sur Install DCEVM as altjvm :

Quant au JAR du HotswapAgent, il faut tout simplement le mettre quelque part et se souvenir de son parcours.

Creation d’un projet

Créez un projet Maven comme indiqué dans la documentation Alfresco :

mvn archetype:generate -Dfilter=org.alfresco:

Choisissez l’archétype « All-in-One » et configurez les paramètres comme vous voulez.

Configuration d’Eclipse

Après avoir rajouté le JDK installé à la liste des JREs disponibles dans Eclipse (Window > Preferences > Java > Installed JREs), importez le projet (la documentation officielle explique comment faire et vous l’avez déjà fait plusieurs fois, donc je vous évite les détails).

Exécution du projet en mode hot reloading

Enfin, vous êtes prêts à créer une configuration pour exécuter le code. Dans les configurations de debug, créez-en une nouvelle de type Maven. Les paramètres à définir sont :

  • Base directory ${project_loc}
  • Goals clean install alfresco:run
  • Dans l’onglet JRE, sélectionnez le JRE avec le correctif DCEVM
  • VM arguments -Xms256m -Xmx2G -javaagent:/<parcours du HotswapAgent>/hotswap-agent-1.0.jar -XXaltjvm=dcevm

(Je vous conseille aussi de sélectionner Skip Tests, parce que la VM Hotswap est plus lente, donc c’est mieux de vérifier les tests séparément.)

Cette configuration peut être exécuté en mode DEBUG. Il faudra attendre un peu plus que d’habitude avant de pouvoir se connecter à Alfresco, mais il vaut le coup.

Cela donne quoi ?

Nous allons faire le test proposé par Alfresco dans le tutoriel JRebel : en se connectant à http://localhost:8080/alfresco/s/sample/helloworld, ou ici ;  le résultat sera Message: ‘Hello from JS!’ ‘HelloFromJava’

Sans arrêter le processus de debug, nous allons modifier ce message qui est généré par trois fichiers du projet platform-jar (on peut les ouvrir en tapant Ctrl+R et helloworld) : helloworld.get.js, helloworld.get.html.ftl et HelloWorldWebScript.java. Habituellement, un changement à chacun de ces fichiers entraine un redémarrage du projet.

Allons donc changer les messages :

  • dans helloworld.get.js remplacez model["fromJS"] = "Hello from JS!"; avec model["fromJS"] = "Bonjour de JS !";
  • dans helloworld.get.html.ftl remplacez Message: '${fromJS}' '${fromJava}' avec Messages : '${fromJS}' et '${fromJava}'
  • dans HelloWorldWebScript.java remplacez model.put("fromJava", "HelloFromJava"); avec model.put("fromJava", "Bonjour de Java");

À noter que chaque fois que vous tapez Ctrl+S, les changements sont pris en charge à l’instant et le log vous en donne confirmation. Un coup de F5 dans Firefox vous donne le nouveau message qui arrive des trois fichiers modifiés : pour l’instant rien à envier à JRebel.

Conclusion

Je trouve encore plus intéressante de pouvoir exécuter mes tests d’intégration en mode debug hot reloading, ce qui donne la possibilité de redémarrer à la volée une méthode qu’on vient de changer. Cela sera peut-être le sujet d’une autre article si cela vous intéresse.