Sites


Lutece : guide développeur

Intégrer le moteur de workflow à un plugin

Utiliser les services de workflow dans un plugin

Le service de workflow de lutece permet de gèrer le cycle de vie des ressources d'un site. il est notamment utilisé par des plugins destinés à gérer des demandes utilisateurs tels que directory, rendez-vous ...

Pour utiliser ce service dans un plugin, il est nécessaire de fournir au moteur de workflow un type de ressource sur lequel sera appliqué le ou les workflows ainsi qu'un identifiant de ressource.

Dans l'exemple du plugin directory, afin de connaitre l'état d'une demande, le plugin fournit au moteur de workflow l'identifiant de la demande ainsi que la chaine de caractères "DIRECTORY_RECORD" représentant les fiches d'un directory.

Initialiser/obtenir l'état d'une ressource 

Afin d'obtenir l'état d'une ressource il faut faire appel à la méthode getState du service de workflow en fournissant l'identifiant de la ressource, le type de ressource, l'identifiant du workflow.

Dans le cas ou la ressource n'a pas d'état, le service de workflow lui affecte l'état initial. Les différents états d'un workflow ainsi que les transitions sont administrables dans les interfaces back office du plugin workflow.

import fr.paris.lutece.portal.service.workflow.WorkflowService;

WorkflowService.getInstance( ).getState( idResource, WORKFLOW_RESOURCE_TYPE, idWorkflow, -1 );

Obtenir les actions disponibles pour une ressource 

Afin d'obtenir l'ensemble des actions disponibles pour une ressource en fonction de son état, il faut faire appel à la méthode getActions du service de workflow en fournissant l'identifiant de la ressource, le type de ressource, l'identifiant du workflow ainsi que l'objet Lutèce représentant l'utilisateur souhaitant  récupérer ces informations.

import fr.paris.lutece.portal.service.workflow.WorkflowService;
WorkflowService.getInstance( ).getActions( idResource, RESOURCE_TYPE, idWorkflow, getUser( ) );

Exécuter une action sur une ressource

Pour déclencher une action sur une ressource il est nécessaire de faire appel à la méthode doProcessAction en fournissant l'identifiant de ressource, le type de ressource, l'identifiant de l'action ainsi qu'un paramètre indiquant s'il est nécessaire que le service de workflow vérifie que l'utilisateur est autorisé à effectuer cette action (dans l'appel ci dessous c'est la variable isAutomatic qui fournit cette information).

import fr.paris.lutece.portal.service.workflow.WorkflowService;

WorkflowService.getInstance().doProcessAction( idResource, WORKFLOW_RESOURCE_TYPE, idAction,-1, request, locale, isAutomatic );

Déclenchement des actions automatiques associées à une ressource 

Le plugin workflow permet d'associer à un état des actions automatiques. Lorsqu'une ressource arrive dans un état possédant des actions automatiques, ces dernières sont éxécutées. Ces traitements sont effectués de manière asynchrone par un daemon du plugin workflow.

Dans le cas où il est nécessaire que ces actions soient déclenchées de manière immédiate, la méthode executeActionAutomatic doit être utilisée.

Cette méthode prend en paramètre l'identifiant de la ressource, le type de ressource et l'identifiant du workflow.

import fr.paris.lutece.portal.service.workflow.WorkflowService;

WorkflowService.getInstance( ).executeActionAutomatic( idResource, WORKFLOW_RESOURCE_TYPE, idWorkflow, -1 )

Récupérer l'historique d'une ressource 

Il est possible de récupérer l'historique des actions et des états d'une ressource en utilisant la méthode  getDisplayDocumentHistory.

import fr.paris.lutece.portal.service.workflow.WorkflowService;
 
WorkflowService.getInstance( ).getDisplayDocumentHistory( idResource, WORKFLOW_RESOURCE_TYPE, idWorkflow, request, getLocale( ) );

Gérer les workflows associés à un plugin

Pour pouvoir créer des workflows il faut d'abord s'assurer que le plugin-workflow est installé et activé dans le back office de Lutèce.

Pour cela il faut avoir ajouté la dépendance suivante dans le fichier pom.xml de son site.

 <dependency>
  <groupId>fr.paris.lutece.plugins</groupId>
  <artifactId>plugin-workflow</artifactId>
  <version>[3.0.0,)</version>
  <type>lutece-plugin</type>
</dependency>

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.