Category Archives: Alfresco

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.