Lors de l'exécution d'un Workflow, ainsi que lors de sa signature, on dispose d'un contexte très riche, sous la forme de classes de variables et de variables locales en ligne. Ce contexte dépend du type de Workflow et du processus en cours (Workflow originel, signature, Workflow consécutif à un premier Workflow). Cette annexe décrit l'algorithme utilisé par le moteur de Workflow et détaille les variables utilisables à chaque stade.
Il est à noter que l'assistant de formule fournit une liste de variables issues du contexte pour bâtir des formules de façon la plus adaptée possible.
Un Workflow de type objet se décompose en une série d'étapes qui sont les suivantes :
Cette étape consiste à affecter des variables globales. On dispose notamment de la variable USRWRK qui correspond à l'utilisateur courant du workflow d'origine.
Dans cette étape, on évalue les formules données dans la règle, et on les stocke dans une variable dimensionnée nommée VALEXP. Ceci permet de disposer notamment de valeurs agrégées qui ne sont pas forcément utilisées comme critère de définition des destinataires, mais simplement utiles dans la suite du Workflow (par exemple pour décider de l'envoi d'un message en fonction de valeurs minimum, maximum, moyennes d'un élément).
Le nombre de valeurs calculées est connu par la variable NBCOL.
On recherche ensuite, à partir des valeurs calculées, la ligne de règle qui correspond, pour affecter le tableau de variables USER (indicé de 1 à 10 maximum).
Cette étape se décompose en plusieurs sous-étapes. Tout d'abord, on détermine un certain nombre de valeurs :
Ensuite, on vérifie les conditions d'exécution en tête du Workflow. Si ces conditions sont réalisées, on réalise les opérations suivantes :
Cette étape réalise les opérations suivantes :
Cette étape réalise la mise à jour de la ligne de suivi à traiter dans la table AWRKHISSUI. La transaction correspondante est séparée des précédentes (mais elle n'est exécutée que si les précédentes se sont bien passées).
Un Workflow de type signature est déclenché à la suite d'une action de signature (soit manuelle depuis le plan de travail, soit automatique via un autre événement de Workflow ou une notification via un clic sur un lien).
Les étapes correspondantes sont les suivantes :
Les variables héritées du contexte de signature sont affectées dans cette phase. Ces variables sont les suivantes :
NUMORG | numéro chronologique d'origine. |
USRORG | destinataire de l'événement d'origine. |
NUMSIG | chrono sur lequel a été déclenché le processus de signature. |
USRDES | destinataire du chrono sur lequel a été déclenché le processus de signature. |
USRWRK | utilisateur qui signe. |
MAIWRK | adresse de messagerie du signataire, lorsque la signature se fait par un lien http externe. |
LEVSIG | Niveau de signature (l'événement d'origine porte le numéro 0, les événements qui s'enchaînent portent les numéros successifs à partir de 1). |
RETORG | Clé de l'objet sur lequel a été déclenché le Workflow d'origine. |
CONTXT | Référence de l'icône de retour. |
CLEOBJ | Numéro du chrono signé. |
CTX(1..15) | Variables du contexte. |
S_USER | Destinataire ayant déclenché le Workflow d'origine. |
S_CLEOBJ | Clé de déclenchement (objet ou regroupement). |
S_ABREV | Abréviation de l'objet du Workflow d'origine. |
S_NBRUSR | Nombre d'utilisateurs définis dans la règle de Workflow d'origine |
La phase de signature d'un événement se fait par le processus suivant :
Ensuite, la transaction de signature à proprement parler est faite :
Lorsqu'un utilisateur signe un suivi, les variables disponibles dans le contexte sont les suivantes :
CHRONO | chrono de l'événement sur lequel on va faire une signature. |
USRDES | code utilisateur du destinataire. |
USRSIG | Code utilisateur du signataire. |
USRMAIL | adresse de messagerie du signataire, lorsque la signature se fait par un lien http externe. |
NUMORG | Chrono événement d'origine sur lequel a été fait la première signature. |
USRORG | Destinataire de cet événement. |
LEVSIG | Niveau de signature (l'événement d'origine porte le numéro 0, les événements qui s'enchaînent portent les numéros successifs à partir de 1). |
USRTOP | Destinataire principal (les autres sont des délégués). |
NUMGRP | Groupe de l'événement à signer. |
CTX(1..15) | Variables du contexte. |
S_USER | Destinataire ayant déclenché le Workflow d'origine. |
S_CLEOBJ | Clé de déclenchement (objet ou regroupement). |
S_ABREV | Abréviation de l'objet du Workflow d'origine. |
S_NBRUSR | Nombre d'utilisateurs définis dans la règle de Workflow d'origine |
Le tableau de variables REPCHR permet de savoir si d'autres destinataires du même événement ont déjà signé. On compte en fait le nombre de groupes (un groupe est égal à une ligne dans le tableau des signataires, dès qu'un délégué a signé, l'événement est signé et ne peut pas être signé une deuxième fois par un autre membre du même groupe).
On a alors :
REPCHR(0) = nombre de réponses qu'il reste à faire : si par exemple il y a 4 lignes de signataires dans la description de l'événement et qu'un seul a signé, cette valeur est égale à 3.
REPCHR(NO), où NO peut valoir de 1 à 10, donne le nombre de signataires qui ont répondu avec la réponse placée sur la ligne numéro NO dans le tableau des réponses.
Ces variables permettent notamment de conditionner les étapes suivantes par le fait que le dernier signataire en attente a répondu, ou de travailler sur des logiques majoritaires de signature.