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.