Fork me on GitHub

Module workflow unittree

Introduction

Ce module contient des tâches de workflow pour le plugin lutece-system-plugin-unittree.

Les tâches sont les suivantes :

  • assigner manuellement une ressource de workflow à une entité. L'utilisateur doit choisir l'entité cible dans le formulaire de la tâche.
  • assigner automatiquement une ressource de workflow à une entité. La tâche peut être utilisée dans une action automatique de workflow. Dans ce cas, il n'y a pas de formulaire de tâche.

Configuration

L'administrateur doit configurer les tâches. Un type d'assignation et au moins une sélection d'entité sont obligatoires.

Pour une assignation manuelle, plusieurs sélections d'entité peuvent être configurées. L'utilisateur choisira la sélection qu'il souhaite dans le formulaire de la tâche.

Pour une assignation automatique, une seule sélection d'entité peut être configurée.

Types d'assignation

Les types d'assignation sont les suivants :

  • Creation: indique la première assignation. Une chaine d'assignations est créée.
  • Escalade: la ressource est assignée à une entité ayant un niveau de compétence plus élevé. L'entité cible est ajoutée à la chaine d'assignations.
  • Désescalade: la ressource est assignée à une entité ayant un niveau de compétence plus faible. Souvent utilisé quand une ressource a été escaladée mais doit ensuite être traitée par l'entité émetttrice. Les entités correspondantes sont enlevées de la chaine d'assignations.
  • Transférer: la ressource est transférée à une entité. La chaine d'assignations est réinitialisée.

Sélections d'entité

Introduction

Une sélection d'entité permet de sélectionner l'entité cible. Une sélection d'entité peut être automatique et donc peut être utilisée dans la tâche pour assigner automatiquement une ressource à une entité. Toutes les sélections d'entités (automatiques ou non) peuvent être utilisées dans la tâche pour assigner manuellement une ressource à une entité.

Ce module contient les sélections d'entité suivantes :

  • Sélection d'une entité spécifique. Automatique. L'entité est choisie dans la configuration de la tâche. L'utilisateur ne peut pas sélectionner d'entité dans le formulaire de la tâche.
  • Sélection d'une entité parmi toutes les entités. Non automatique. L'utilisateur sélectionne l'entité cible dans une liste déroulante dans le formulaire de la tâche. Elle peut être utilisée pour transférer la ressource à une entité par exemple.
  • Sélection de l'entité parente. Automatique. Elle peut être utilisée pour l'escalade par l'exemple.
  • Sélection de l'entité émettrice. Automatique. Elle peut être utilisée pour la désescalade par exemple.

Créer une sélection d'entité

Si vous voulez utiliser votre propre sélection d'entité, il suffit d'implémenter l'interface fr.paris.lutece.plugins.workflow.modules.unittree.service.task.selection.IUnitSelection et de la déclarer en tant que bean dans le contexte Spring. Votre sélection d'entité sera alors présente dans la configuration des tâches d'assignation.

La méthode qui fait le travail est la méthode select( ... ). Elle retourne l'id de l'entité cible. Cette méthode n'est pas responsable du stockage de l'assignation. Ce stockage est réalisé par la tâche de workflow elle-même. Si cette méthode détecte que l'assignation n'est pas possible, elle doit lancer une fr.paris.lutece.plugins.workflow.modules.unittree.exception.AssignmentNotPossibleException.

La classe IUnitSelection utilise un handler de configuration pour gérer la partie configuration de la sélection d'entité dans la tâche d'assignation. Vous pouvez créer votre propre handler de configuration en implémentant l'interface fr.paris.lutece.plugins.workflow.modules.unittree.service.task.selection.IConfigurationHandler. Si votre sélection d'entité n'a pas de configuration, vous pouvez étendre la classe abstraite fr.paris.lutece.plugins.workflow.modules.unittree.service.task.selection.impl.AbstractEmptyConfigurationHandler. La seule chose à faire est de donner le titre de votre sélection d'entité.

La classe IUnitSelection utilise un handler de formulaire pour gérer le formulaire de tâche de la sélection d'entité dans la tâche d'assignation. Vous pouvez créer votre propre handler de formulaire en implémentant l'interface fr.paris.lutece.plugins.workflow.modules.unittree.service.task.selection.ITaskFormHandler. Pour les sélections automatiques, cela peut être une bonne idée de tester si l'assignation est possible dans la méthode getDisplayedForm( ... ) (en appelant la méthode select( ... )). Si l'assignation n'est pas possible, alors la méthode doit lancer une fr.paris.lutece.plugins.workflow.modules.unittree.exception.AssignmentNotPossibleException. Cela permet de cacher cette sélection dans le formulaire de la tâche.

Services

Le service fr.paris.lutece.plugins.workflow.modules.unittree.service.UnitAssignmentService permet de retrouver les entités d'assignation pour une ressource.

Il contient les méthodes suivantes :

  • findCurrentAssignment( ... ): donne l'assignation courante dans la chaine d'assignations.
  • findAssignments( ... ): donne la chaine d'assignations.

Utilisation

Les tâches de workflow sont utilisées pour assigner la ressource à des entités. Le service UnitAssignmentService est utilisé pour retrouver les entités d'assignation pour la ressource.