vendredi 3 août 2012

La console d'administration des workflows (Alfresco 4 E)

Introduction

La dernière version d’Alfresco (4.0) intègre, en plus de jBPM, un « nouveau » moteur de workflow appelé Activiti (pour plus de détails sur le projet Activiti, consultez le site dédié : www.activiti.org).
Fonctionnellement, il offre une couverture identique à jBPM, mais nous a permis d’ajouter quelques outils bien utiles :
-    Un plugin Eclipse de conception graphique de workflows :
http://activiti.org/userguide/index.html#activitiDesigner
-    Une console d’administration des workflows Activiti dans Alfresco

Cette console d’administration sera d’ailleurs le sujet de cet article.

Accéder à la console

Connectez-vous en tant qu’utilisateur administrateur à l’interface Share. Parmi les nouvelles pages de la console d’administration figure un menu « Workflow ». Sa page associée fournit quelques indicateurs généraux sur les instances de workflows en cours dans le système.



En cliquant sur le lien « Console du workflow Activiti », une nouvelle interface s’ouvre.

Celle-ci comporte 5 menus, détaillés dans la suite.

Déploiements (Tout Montrer / Importer les nouveaux)
Ce menu permet de consulter l’historique des déploiements de packages, et de déployer de nouveaux packages.
Pour chaque package, on peut consulter la liste des définitions de workflows déployées, ainsi que les fichiers de ressources correspondant (le fichier bpmn20.xml, et éventuellement le descripteur graphique en .png)



Tâches
Ce menu offre une page blanche … Nouvelles fonctionnalités à venir ? Espace libre pour placer des intégrations spécifiques ? Easter Egg ?
Quel est votre avis ?

EDIT 22 Oct 2012 :
En fait, ce menu affiche la liste des "tâches de fond" (timers, jobs) instanciées dans le moteur de workflow.
Merci au core développeur Activiti Joram Barrez pour la réponse !

Définitions de processus

On peut y visualiser les différents types de workflow déployés dans le système.
En sélectionnant une définition dans le menu de gauche, la page affiche deux informations :
-    Le schéma graphique du workflow (si la ressource png a été déployée)
-    Les différentes instances en cours (de ce type) dans le système





Instances de processus
Cette page fournit nombre d’informations sur les instances de workflow en cours (avec leur id). Dans le panel de gauche figurent les différentes instances de workflow en cours.
En sélectionnant l’une d’entre elle, l’écran principal permet de consulter :
-    Un schéma graphique du processus, la/les tâche(s) en cours étant « surlignées »
-    Un tableau listant la/les tâche(s) en cours, et précisant pour chacune d’elle l’utilisateur ou le groupe responsable, la priorité, la date d’échéance …
-    La liste des variables de processus et leur valeur
Notons également la présence d’un bouton « supprimer » qui permet de supprimer une instance en cours.



Base de données
Ce menu permet de visualiser toutes les entrées des tables associées au moteur Activiti. Il s’agit réellement des tables Activiti de la base de données que vous aurez choisie pour votre installation.
L’administrateur aura ainsi la capacité de consulter l’ensemble des variables et propriétés des définitions, instances en cours ou terminées, tâches, etc …
D’ailleurs, pour mieux comprendre le nommage des tables Activiti, vous pouvez visiter ce lien : http://activiti.org/userguide/index.html#database.tables.explained



Conclusion

Cette console d’administration des workflows est sans aucun doute plus fonctionnelle et ergonomique que l’interface technique qui existe depuis plusieurs versions déjà.
Notons enfin que cette console d’administration n’est disponible que dans la version Entreprise.


vendredi 3 février 2012

Alfresco mobile : l'application iPad

Aujourd’hui, les « knowledge workers » ont de plus en plus besoin d’avoir accès à leurs contenus quel que soit l’endroit où ils se trouvent (mobilité, connecté ou déconnecté), et sur tous les supports (ordinateurs, tablettes, téléphone).

Alfresco s’inscrit dans une vision globale de « Cloud Connected Content » pour répondre à ces attentes, notamment grâce à la nouvelle application mobile (aujourd’hui pour iPhone et iPad).

En effet, vous pourrez trouver sur l’AppStore l’application Alfresco, disponible aujourd’hui en version 1.2. Elle a été développée avec l’aide du partenaire Zia.
Un fois installée, la première chose à faire est de configurer la ou les instances d’Alfresco auxquelles vous voulez vous connecter. Vous pouvez ainsi créer différents « comptes », associés à des serveurs Alfresco (http ou https) ou même au service cloud Alfresco.me.




















Alors, vous pouvez naviguer dans les différentes instances Alfresco : dans l’entrepôt général, dans les espaces collaboratifs (sites). Vous pouvez consulter les documents, les télécharger pour les consulter offline, les modifier et les mettre-à-jour, lancer des recherches etc …

Voici une liste non-exhaustive des fonctionnalités.

En lecture :
- Navigation dans l’entrepôt et les sites collaboratifs
- Consultation en ligne des documents
- Ouverture des documents dans d’autres applications (exemple : QuickOffice)
- Téléchargement des documents pour consultation en mode déconnecté
- Consultation des commentaires
- Consultation des métadonnées basiques
- Historique des versions
- Gestion plein écran, zoom, multipages
- Recherche rapide
- Etc …





















En contribution :
- Création d’un nouveau dossier
- Ajout direct d’une photo / vidéo / capture de son
- Dépôt d’une photo depuis la bibliothèque d’images
- Dépôt d’un document
- Ajout d’un commentaire
- Edition QuickOffice et sauvegarde dans Alfresco
- Etc …





















En collaboration sociale :
- Commentaires
- Envoi d’un document par email
- Visualisation des flux d’activités (multi-instances)
- Etc …





















Il ne vous reste plus qu’à télécharger l’application iPad (ou iPhone) pour la tester par vous-même. Dans notre feuille de route, nous avons prévu d’offrir les mêmes fonctionnalités au sein d’une application pour les appareils Android.
Une version 1.3 enrichie est également prévue pour les prochaines semaines.

Si vous deviez en choisir une, quelle fonctionnalité souhaiteriez-vous voir figurer dans les prochaines versions ?

lundi 23 janvier 2012

Debug Series - Les sources Javascript Server

Introduction

Cet article fait partie des « Debug Series », où l’on tente de vous exposer les différentes possibilités de « debugguer » votre instance Alfresco (sans doute personnalisée).
Après avoir compris comment debugguer les sources Java, nous allons voir ici qu’il est également possible de débugguer les sources javascript (côté serveur). Attention, cet article ne vise pas à expliquer les principes d’architectures REST, les webscripts, ou encore les APIs javascript d’Alfresco.

Activer le Javascript Debugger

Pour nous aider dans notre tâche, Alfresco embarque un « Javascript debugger ». Pour l’utiliser, celui-ci doit être activé, en configurant le niveau log4j de la classe « AlfrescoRhinoScriptDebugger ».
Evidemment, pour faire cela, nous respectons les bonnes pratiques, et nous n’allons donc pas modifier le fichier WEB-INF/classes/alfresco/log4j.properties (il est dans la webapp) !
Nous allons créer un fichier dev-log4j.properties dans tomcat/shared/classes/alfresco/extension, et y inscrire la simple ligne suivante :

log4j.logger.org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger=debug


Au démarrage suivant d’Alfresco, nous voyons donc apparaître dans une fenêtre le debugger :





















Exemple d’utilisation du javascript Debugger

Pour une raison inconnue (pour l’instant), mon instance locale d’Alfresco m’empêche de déposer des documents via l’interface Share. J’ai par exemple l’écran d’erreur suivant lorsque je tente d’uploader un document :


















Ayant l’intuition que l’erreur peut provenir d’un problème côté javascript server (puisque Share n’est qu’une interface communiquant avec l’entrepôt Alfresco par appels REST), j’arrête Alfresco, configure l’activation du debugger, et relance Alfresco.

Ensuite, je reproduis mon scénario d’erreur. Et, ô magie, à l’upload, mon debugger javascript me lance un message d’erreur plutôt explicite :

















Ce message m’apprend déjà trois choses importantes :
1/ en effet, il réside un bug dans le javascript
2/ le fichier, ainsi que la ligne, au sein duquel l’erreur apparaît (ici, le fichier upload.js)
3/ le type d’erreur (ici, TypeError)

Mais ce n’est pas tout, cet outil apporte bien plus de fonctionnalités (à découvrir par vous-même, toutes ne seront pas détaillées dans cet article). Il est ainsi possible de mettre des points d’arrêt dans le code javascript, d’avancer pas à pas, de vérifier les variables, de définir des expressions, etc …

Ainsi, dans l’exemple que j’ai choisi, je place un point d’erreur à la ligne adéquate du fichier upload.js.
J’ai défini quelques « expressions » (cadre en bas à droite), pour visualiser, au niveau de la ligne d’arrêt, la valeur de certaines variables ou de certains appels de méthodes.
Je comprends assez rapidement d’ailleurs que l’expression problématique du code javascript est la suivante : « exampleForBlogPost.length ».

Conclusion

Par conséquent, je modifie mon fichier upload.js pour supprimer ces quelques lignes de code en erreur (que j’avais évidemment ajoutées pour cet exemple d’article) du fichier upload.js (pour être totalement sûr de mon instance Alfresco, je pourrais même vérifier le fichier original upload.js d’une installation vierge).
Cet outil de debug javascript est d’une assez grande richesse, alors ne le négligez pas, notamment en phase de développement !

jeudi 12 janvier 2012

Combiner Alfresco et votre messagerie

Introduction

Comme on le constate souvent, la qualité et l’efficacité d’un service ne suffit pas à en assurer la popularité, et à susciter la large adhésion du public. Un tel service doit également pouvoir respecter les habitudes des utilisateurs, par exemple en s’interfaçant avec ses outils quotidiens. Google Plus n’est qu’un exemple parmi d’autres : la plateforme est intéressante, mais son audience peine à décoller, car bon nombre d’internautes utilisent un service plus ou moins similaire, sans trouver de complémentarité entre ces outils.

Souvent, la remarque suivante nous est ainsi exprimée : « l’outil principal de nos collaborateurs est la messagerie email, et on aura du mal à les convaincre d’ouvrir Alfresco plusieurs fois par jour pour prendre connaissance des nouveaux contenus – documents, discussions, page wiki, etc … »

Je vais ainsi vous montrer, dans cet article, comment j’utilise moi-même ma messagerie (en l’occurrence Outlook) comme « interface » principale pour me tenir informé des activités dans notre plateforme collaborative Alfresco.

1/ Les notifications email
















En premier lieu, je profite largement des systèmes de notifications par email d’Alfresco. Après avoir renseigné mon adresse email dans mon profil (ou celle-ci ayant été déjà extraite automatiquement de ma fiche dans notre annuaire d’entreprise), je peux souscrire à un mécanisme de notifications régulières, qui m’informe des différentes activités dans mes espaces collaboratifs.
D’autres fonctionnalités peuvent également mettre en œuvre des notifications par email, comme les règles de contenu, ou encore les tâches de workflow.
Voir : http://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Ftasks%2Fprofile-notifications.html


2/ L'intégration IMAP














Par ailleurs, grâce au support du protocole IMAP, vous avez la capacité de visualiser et d’interagir avec l’entrepôt Alfresco à travers tout client IMAP (Outlook en est un).
Ainsi, je peux directement contrôler le contenu de certains répertoires, ainsi que visualiser l’arrivée de nouveaux documents (grâce à l’indice visuel des éléments « non-lus »). Enfin, par simple Drag ‘n Drop, je peux copier un email de ma messagerie (et/ou ses pièces jointes) vers un répertoire ou un site collaboratif d’Alfresco, pour le stocker ou le partager avec mes collaborateurs.


3/ Les multiples flux RSS










Ce troisième élément (les flux RSS), est peut-être l’un des plus méconnus, mais il m’est pourtant indispensable !
Vous avez certainement noté que le bouton « flux RSS » apparait sur de nombreuses sections (pages, dashlets, …) d’Alfresco Share. Ces flux vous permettent ainsi de vous configurer des flux de notifications, et de les importer dans tout lecteur RSS (Outlook, là encore, le permet).

Ainsi, dans mon cas (voir figure ci-dessus), j’ai configuré 5 flux :
- le flux « collabs que je suis » me permet de voir les activités des utilisateurs que j’ai décidé de suivre. J’ai « récupéré » ce flux depuis la dashlet « Mes Activités », avec les filtres adéquats.
- le flux « Site Marketing, docs récemment ajoutés » me permet d’être notifié des derniers documents ajoutés au site collaboratif « Marketing ». J’ai récupéré ce flux depuis la bibliothèque de documents du site.
- le flux « Site Marketing, docs favoris » me permet d’avoir un accès rapide direct aux documents du site Marketing que j’ai annotés comme favoris. J’ai récupéré ce flux depuis la bibliothèque de documents du site.
- le flux « Site Marketing, wiki pages » me permet de visualiser la liste des pages wiki du site Marketing. J’ai récupéré ce flux depuis la rubrique « wiki » du site.
- le flux « Status des collabs » me permet de consulter les mises-à-jour des statuts de mes collègues. J’ai récupéré ce flux depuis la dashlet « Mes activités », avec les filtres adéquats.

Ainsi, sans avoir à quitter Outlook, je reste informé des différentes activités de mes collaborateurs, avec les listes et les filtres que j’ai choisis ! Si un nouveau contenu m’intéresse, je peux cliquer sur le lien pour le consulter dans l’interface Alfresco !


4/ Les calendriers des sites collaboratifs


















Enfin, il faut noter qu’il est tout-à-fait possible de visualiser les évènements de nos différents calendriers de sites collaboratifs Alfresco dans la rubrique dédiée de l’outil de messagerie.
En effet, les calendriers des sites collaboratifs Alfresco sont exportables en tant qu’Internet Calendars, auxquels on peut s’abonner. Ainsi, dans mon outil Outlook, j’ai souscrit à deux calendriers d’Alfresco : celui de mon site Marketing, et celui d’un autre site « Comm interne ».
Les options d’affichage de votre outil vous permettront alors de voir les différents calendriers en surbrillance, en juxtaposition, ou encore de les fusionner, etc …


Conclusion

Notez que j’ai utilisé ici mon exemple personnel, avec mon outil de messagerie Outlook, mais que chacun des 4 éléments décrits ci-dessus peut être utilisé avec presque tous les outils de messagerie.
Ainsi donc, nous pouvons avoir une vraie complémentarité entre l’application principale, ancrée dans les habitudes des utilisateurs, ainsi que la plateforme de gestion collaborative Alfresco.


vendredi 23 décembre 2011

Debug Series - Les sources Java Alfresco

Introduction

Le saviez-vous : Alfresco peut être débuggué comme n’importe quelle application Java.
Ce dont vous avez besoin :
- Une instance d’Alfresco sur votre poste
- Un environnement de développement
- Le code source d’Alfresco (de la même version que votre instance)

Dans l’exemple que je vais suivre ici, j’utilise Alfresco Community 4.0a (dans un serveur tomcat, sur environnement Windows), l’environnement de développement Eclipse, au sein duquel j’ai importé les sources d’Alfresco community 4.0a.

Pour le téléchargement des sources d’Alfresco, vous pouvez visiter ces quelques liens :

Configuration

Notre objectif est de pouvoir debugguer Alfresco, en plaçant des points d’arrêt dans le code, en observant la valeur des variables à un instant t, etc …

Pour ce faire, il faut réaliser quelques configurations.

1/ Tout d’abord, en lisant la page suivante de la doc d’Apache tomcat :
http://wiki.apache.org/tomcat/FAQ/Developing
Il faut donc, dans votre installation d’Alfresco, modifier le fichier alfresco.bat pour ajouter, à la fin de la ligne « set JAVA_OPTS= » :

-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

On a ainsi configuré le serveur d’application pour qu’il « écoute » un éventuel debugger sur le port 8000.

2/ Alfresco étant lancé, on peut « activer » le debugger d’Eclipse.

Dans Eclipse, ouvrir le menu « Run/Debug configurations ». Sélectionner « Remote Java Application », puis cliquer sur le bouton en haut à gauche « New Launch configuration ».














Alors, dans le volet de droite, il faut configurer cette nouvelle configuration de Debug. A minima, voici ce dont il faut s’assurer :

- Donner un nom à la configuration
- Onglet « connect » / Vous pouvez laisser les paramètres de connextion par défaut (hôte : localhost, port : 8000)
- Onglet « source » / ajoutez l’ensemble des projets source Alfresco
- Onglet « common » : vous pouvez laisser les valeurs par défaut
(Bien sûr, avec un peu d’expérience, vous pourrez modifier l’ensemble des champs.)

Enfin, cliquez sur sur le bouton « debug », en bas de la fenêtre de configuration.

Debug Mode

Alors, une nouvelle « perspective » dans Eclipse s’ouvre : c’est la vue Debug.
Elle vous permet d’ouvrir des classes, d’y placer des points d’arrêt, de définir des variables pour en observer la valeur à un instant t, etc … comme pour toute application Java !

lundi 12 décembre 2011

Conseils pour la découverte de Solr avec Alfresco

Pour ceux qui s'apprêteraient à essayer l'intégration Solr dans Alfresco (en préparation de la sortie de la version 4.0), voici quelques conseils et ressources :

Lire tout d'abord :



Une fois les concepts de base appréhendés, il peut être intéressant par exemple de dumper le traffic HTTP entre un repository et Solr, pour avoir quelques exemples de requête effectuées et mieux comprendre l'interaction entre les deux.

Exemple de requête sur le mot "test" effectué depuis Share :


 (test) AND -TYPE:"cm:thumbnail" AND -TYPE:"cm:failedThumbnail" 
        AND - TYPE:"cm:rating"

Pour analyser les résultats, cette requête peut également être exécutée sur l'interface d'admin Solr.

Cette interface d'admin permet de mieux comprendre le fonctionnement interne de Solr, et est fournie avec le war solr et accessible à l'addresse suivante :  http://localhost:8080/solr/

Des  pages d'admin sont disponibles par "core" Solr, par défaut une pour "alfresco" correspondant à workspace/SpacesStore et une pour archive/SpacesStore. La documentation de cette interface est disponible ici : http://wiki.apache.org/solr/SolrAdminGUI

Des options de recherche avancée permettent de sélectionner des options supplémentaires telles que les champs à retourner, le nombre de résultats, le type de sortie (xml, json, ...)... Des options permettent également de demander la sortie "debug", c'est à dire la sortie incluant l'explain sur la requête, et les temps d'exécution des differentes étapes : parsing, filtrage, etc ..

Un point qui n'est pas sélectionnable dans l'interface d'admin actuellement est le query parser. Il en existe 4 par défaut : "alfresco" (AlfrescoLuceneQParserPlugin), "afts" (AlfrescoFTSQParserPlugin) et "cmis" (CmisQParserPlugin), ainsi que "select" (le parseur Solr/Lucene par défaut).

Voir http://www.slideshare.net/alfresco/moving-from-lucene-to-alfresco-fts pour plus d'informations sur le parseur FTS.

Pour chaque node à indexer côté repository, 2 nodes sont indexées dans Solr/Lucene :

- le node "LEAF", contenant le type, les aspects, et les identifiants du node. C'est celui qui est retourné lorsque l'on utilise les parseurs alfresco ou afts

- le node "AUX" (auxiliaire) contenant les informations "auxiliares" du node, à savoir ses parents, son path, le owner, les éventuelles ACL indexées, ainsi que les identifiants également.

Il y a donc dans ce cas deux documents au sens Lucene correspondant à un node indexé par Alfresco.
Ressources supplémentaires :

http://www.slideshare.net/teofili/apache-solr-crash-course http://lucidworks.lucidimagination.com/display/solr/Apache+Solr+Reference+Guide
http://wiki.apache.org/solr/SolrAdminGUI

Facilitez vos développements Alfresco Share avec Surfbug

Un commentaire qui revient de temps en temps est qu'il n'est pas simple d'étendre des composants Alfresco Share ou de s'inspirer d'existants pour en créer des nouveaux.

Surfbug est là pour répondre à ce besoin. Disponible depuis la version 3.4.3 (et +), il permet par simple clic d'afficher toutes les informations relatives à un composant : son URL, sa définition, les templates le constituant, et la localisation dans le classpath des fichiers qui le composent. 

Il s'active via la page http://localhost:8080/share/page/surfBugStatus . Cet accès est restreint aux administrateurs, car l'activation est globale pour tous les utilisateurs. Il faut donc l'utiliser comme un outil de développpement. 

Son utilisation est très simple : Des rectangles rouges démarquent les différents composants. il suffit, après l'avoir activé, de cliquer sur un composant pour lequel on souhaite connaître les détails. 

Voici un exemple : 



Plus d'informations disponibles ici : http://blogs.alfresco.com/wp/ddraper/2011/08/31/surfbug/