Configuration
Propriétés de configuration
Le fichier de propriétés du plugin (workflow.properties) permet de configurer
les paramètres suivants :
- daemon.automaticActionDaemon.interval : Intervalle d’exécution du démon de traitement des actions automatiques (en secondes)
- daemon.automaticActionDaemon.onstartup : Active (1) ou désactive (0) l’exécution du démon au démarrage
- daemon.archiveDaemon.interval : Intervalle d’exécution du démon d’archivage (en secondes)
- daemon.archiveDaemon.onstartup : Active (1) ou désactive (0) l’exécution du démon au démarrage
- workflow.itemsPerPage : valeur par défaut du pagineur
Démons à activer
Le plugin fournit les démons suivants qui doivent être activés dans l’interface d’administration :
- AutomaticActionDaemon : Démon qui traite les actions automatiques en attente.
Il parcourt les ressources éligibles et exécute les actions automatiques configurées dans les workflows.
Caches
Le plugin utilise plusieurs caches pour optimiser les performances :
- Cache des workflows (WorkflowCache)
- Cache des états (StateCache)
- Cache des actions (ActionCache)
Ces caches sont gérés automatiquement et peuvent être activés ou vidés via l’interface d’administration si nécessaire.
Utilisation
Droits d’administration
Le droit suivant doit être accordé pour accéder à la gestion des workflows :
- WORKFLOW_MANAGEMENT : Gestion des workflows
RBAC d’administration (pour les rôles)
Les droits RBAC suivants sont disponibles et doivent être associés à des rôles personnalisés pour gérer chaque workflow séparément :
- WORKFLOW_STATE_TYPE : Gestion des états
- WORKFLOW_ACTION_TYPE : Gestion des actions
Rôles
Les rôles sont définis dans les tables CORE_ADMIN_ROLE et CORE_ADMIN_ROLE_RESOURCE pour
contrôler l’accès aux différentes fonctionnalités du workflow.
Groupes de travail
Les workflows peuvent être affectés à des groupes de travail.
Services Java
Principaux services exposés par le plugin :
- WorkflowService
- getState(int idResource, String resourceType, int idWorkflow, Integer externalParentId) :
Récupère l’état actuel d’une ressource (ou initialise la ressource dans l’état initial lors du premier appel)
- doProcessAction(int idResource, String resourceType, int idAction, Integer externalParentId,
HttpServletRequest request, Locale locale, boolean isAutomatic) :
Exécute une action sur une ressource
- getActions(int idResource, String resourceType, int idWorkflow, AdminUser user) :
Récupère les actions disponibles pour une ressource
- getDisplayDocumentHistory(int idResource, String resourceType, int idWorkflow,
HttpServletRequest request, Locale locale) :
Affiche l’historique des actions
- getResourceIdListByIdState(int idState, String resourceType) :
Récupère la liste des ressources dans un état donné
- ...
- StateService
- findByResource(int idResource, String resourceType, int idWorkflow) :
Récupère l’état d’une ressource
- getStatesListByIdWorkflow(int idWorkflow) :
Liste les états d’un workflow
- ...
- ActionService
- getListActionByIdStateBefore(int idStateBefore, int idWorkflow) :
Liste les actions disponibles depuis un état
- TaskService
- getListTaskByIdAction(int idAction, Locale locale) :
Liste les tâches d’une action
- ResourceHistoryService
- getAllHistoryByResource(int idResource, String resourceType, int idWorkflow) :
Récupère l’historique complet d’une ressource
- getLastHistoryResource(int idResource, String resourceType, int idWorkflow) :
Récupère la dernière entrée de l’historique
Tâches du workflow
Le plugin fournit plusieurs types de tâches extensibles pouvant être associées aux
actions :
- TaskAssignment : Affectation de ressources aux utilisateurs ou groupes de travail
- TaskComment: Ajout de commentaires aux ressources
- TaskNotification: Envoi de notifications par email
- taskArchiveArchivage
- taskConfirmActionMessage de confirmation
- taskChoice : Choix permettant de définir l'étape suivante
Chaque tâche peut être configurée via l’interface d’administration et possède son propre
ensemble de paramètres. Il est possible de créer de nouvelles tâches personnalisées en étendant la
classe abstraite Task de la bibliothèque library-workflow-core.
Intégration dans un plugin
Pour intégrer le workflow dans un plugin personnalisé, il suffit d’utiliser le WorkflowService en
fournissant :
- Un identifiant unique de ressource (idResource)
- Un type de ressource sous forme de chaîne (resourceType)
- L’identifiant du workflow à utiliser (idWorkflow)
Exemple d’intégration :
import fr.paris.lutece.portal.service.workflow.WorkflowService;
// Initialiser l’état de la ressource
WorkflowService.getInstance().getState(idResource, "MY_RESOURCE_TYPE", idWorkflow, -1);
// Récupérer les actions disponibles
Collection<Action> actions = WorkflowService.getInstance()
.getActions(idResource, "MY_RESOURCE_TYPE", idWorkflow, adminUser);
// Exécuter une action
WorkflowService.getInstance().doProcessAction(idResource, "MY_RESOURCE_TYPE",
idAction, -1, request, locale, false);