logo Alfresco
Version Enterprise 4.0.2

L’objectif est de developper un listener sur un ou plusieurs évènements afin de réaliser un traitement spécifique. Cela pourra être utile afin de synchroniser Alfresco avec un autre outil en envoyant de l’information lors du traitement par exemple.

Solution

La solution se trouve en fait dans le SDK d’Alfresco. En effet, un exemple de listener est proposé par défaut dans le projet SDK CustomAspect (qui définit l’aspect ch:contentHits et permet de compter le nombre de lectures et d’écritures sur les documents qui possèdent cet aspect).

Voici la documentation sur le SDK (ou le télécharger et comment l’installer) : http://wiki.alfresco.com/wiki/Alfresco_SDK_4.0

listener
Listener ContentHitsAspect

Le listener implémenté dans la classe ContentHitsAspect écoute trois évenements (en implémentant les 3 policies suivantes : ContentServicePolicies.OnContentReadPolicy, ContentServicePolicies.OnContentUpdatePolicy, NodeServicePolicies.OnAddAspectPolicy).

  • La méthode init() permet d’enregistrer les comportements
  • La méthode onAddAspect(...) permet d’exécuter le traitement lorsque l’aspect est ajouté : enregistrer la date courante dans la propriété ch:countStartedDate
  • La méthode onContentRead(...) qui enregistre une ressource contenant tous les noeuds pour lesquels il faut mettre à jour le compteur de lectures
  • La méthode onContentUpdate(...) qui enregistre une ressource contenant tous les noeuds pour lesquels il faut mettre à jour le compteur d’écritures
  • Le listener ContentHitsTransactionListener qui implémente afterCommit().
    • Si une ressource  pour les lectures est detectée le thread ContentHitsReadCountIncrementer est executé,
    • si une ressource  pour les écritures est detectée le thread ContentHitsWriteCountIncrementer est executé.
  • Le thread ContentHitsReadCountIncrementer désactive la policy sur l’aspect contentHits, incrémente le compteur de lectures et réactive la policy.
  • Le thread ContentHitsWriteCountIncrementer désactive la policy sur l’aspect contentHits, incrémente le compteur d’écritues et réactive la policy.

Ajouter la configuration suivante pour que les champs puissent s’afficher dans Share

<config evaluator="aspect" condition="ch:contentHits">
<forms>
<form>
<field-visibility>
<show id="ch:countStartedDate" />
<show id="ch:updateCount" />
<show id="ch:readCount" />
</field-visibility>
<appearance>
<field id="ch:countStartedDate" label="Count started date" description="Count started date"/>
<field id="ch:updateCount" label="Update count" description="Update count"/>
<field id="ch:readCount" label="Read count" description="Read count"/>
</appearance>
</form>
</forms>
</config>

L’ajout de l’aspect pourra se faire via l’action « Manage Aspects » ou via une nouvelle action (voir l’article Créer une action « Flag »)

contentHitsAspect
Voici les proriétés affichées après l’ajout de l’aspect. Les compteurs seront ensuite mis à jour lors des lectures et mises à jour du document.

A vous de jouer !

Publicités