Les processus

Les processus BPMN 2.0

Déploiement

Une définition de processus peut être déployée dans le moteur en ajoutant un document de classe BPMNDiagram.

Les tâches

Les types de tâches supportés du standard BPMN 2.0 sont listés dans cette section.

Les tâches utilisateurs

Une User Task est une tâche d’un processus qui implique un utilisateur. Ce type permet de modéliser une action devant être effecutée par un utilisateur.

Une User Task peut être traitée directement à partir de l’interface graphique FlowerDocs lorsqu’elle possède un paramètre classId.


Pour ce type de tâche, des informations supplémentaires peuvent être définies :

  • Assignee : l’identifiant de l’utilisateur auquel assigner la tâche
  • ACL : l’identifiant de l’ACL afin de définir la sécurité de la tâche (si aucune ACL n’est définie, celle définie au niveau de sa classe est utilisée)
  • GroupCandidate :

Les tâches de type service

Une Service Task permet l’invocation de code Java depuis un processus. Elle permet d’exécuter un Java Delegate précisé à l’aide de l’attribut camunda:delegateExpression avec une valeur du type ${delegateName}.

FlowerDocs fournit un ensemble de Java Delegate permettant de profiter des différentes fonctionnalités depuis un processus. Ils sont listés dans une section suivante de la documentation.

Les tâches de type script

Une Script Task est définie à partir d’un script et d’un language de script. L’intégration de Camunda dans FlowerDocs Core supporte uniquement le format javascript à l’aide du moteur Nashorn. La syntaxe JavaScript et des classes Java chargées dans la JVM peuvent ainsi être utilisées pour ajouter de la logique spécifique au sein d’un processus.

Pour faciliter le développement, un objet accessible à travers la variable util est mis à disposition dont les méthodes exposées sont listées ici.

Des nouvelles variables peuvent ainsi être calculées à partir des données du processus. La variable retournée par un script peut être mise à disposition au niveau de l’exécution du processus en définissant son nom grâce l’attribut camunda:resultVariable.


<bpmn2:scriptTask id="Task_1nisf8b" name="Format date" scriptFormat="javascript" camunda:resultVariable="date">
    <bpmn2:script>
    var date = new java.util.Date(java.lang.Long.parseLong("0"));
    var simpleDateFormat = new java.text.SimpleDateFormat("dd/MM/yyyy");
    simpleDateFormat.format(date); 
    </bpmn2:script>
</bpmn2:scriptTask>

<bpmn2:scriptTask id="Task_1nisf8a" name="Initiate case" scriptFormat="javascript" camunda:resultVariable="folder">
    <bpmn2:script>
    var builder = com.flower.docs.common.component.ComponentBuilder; 
    var Category = com.flower.docs.domain.component.Category; 
    builder.component(Category.fromValue('FOLDER')).name('myFolder').classId('Folder').build();
    </bpmn2:script>
</bpmn2:scriptTask>


Plus de détails peuvent être consultés sur la documentation Camunda.

Les tâches de type règle métier

Une tâche Business Rule Task exécute un ensemble de règles grâce au moteur de décision supportant le standard DMN 1.1. Ce type de tâche requiert l’identifiant d’une définition d’un diagramme DMN.

Plus de détails sur l’exécution de table de décisions peuvent être consultés dans la section dédiée.

Enchaînements

Les différentes étapes sont reliées entre elles grâce à différents éléments permettant le déroulement d’un processus.

Les transitions

Une transition (ou sequence flow) permet de passer d’une étape à une autre. Ces transitions peuvent être conditionnées par les variables du processus. Typiquement les transitions, en sortie d’une User Task, peuvent être conditionnées par la réponse sélectionnée par un utilisateur.

Les gateways

Les gateways contrôlent les enchaînements entre différents sequence flows.

Les parallel gateways permettent de joindre plusieurs branches parallèles fusionnant automatiquement les tâches des différentes branches. L’ensemble des tags, pièces jointes et participants sont ainsi récupérés en sortie de la gateway.

Fin d’un processus

La fin d’un processus est déterminée par le déclenchement d’un événement de fin (ou End Event). Lors d’une fin de processus, il est possible de déclencher la génération d’une empreinte du processus. L’empreinte générée permet de stocker de manière figée les informations à conserver d’un processus.

Pour plus détail sur les empreintes de processus, consultez la documentation du JavaDelegate concerné.