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.
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 );
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( ) );
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 );
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 )
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( ) );
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.