La fonction de workflow parallèle est une fonction puissante, qui permet de fractionner une instance du workflow en chemins parallèles, puis de fusionner ceux-ci à nouveau par la suite. Elle gère les concepts suivants :
•Fractionnement en plusieurs chemins traités en parallèle (un processus de fabrication dans lequel plusieurs tâches doivent être exécutées simultanément, par exemple).
•Tâche unique devant être traitée par plusieurs utilisateurs (un contrat que doivent approuver plusieurs responsables, par exemple).
La variable de workflow est une composante fondamentale des workflows parallèles. Le fractionnement d'une instance entraîne la création de variables qui progressent tout au long du workflow. Un même workflow peut posséder un nombre illimité de variables parcourant le processus. L'utilisateur du workflow ne voit aucune différence entre une variable et une instance standard. La boîte de réception du workflow recense toutes les tâches et la réclamation de l'une d'elles entraîne l'ouverture de la boîte de dialogue de tâche, comme auparavant. La tâche Fusionner attend que le nombre configuré de variables soient présentes avant de les fusionner en une même instance.
Il est possible de créer des workflows parallèles à l'aide de quatre tâches spéciales : Fractionner, Fractionnement par utilisateurs, Fusionner et Abandon de fusion. Chaque tâche Fractionner doit être associée à une tâche Fusionner, pour garantir la fusion du nombre configuré de variables.
Ce premier exemple simple illustre le fractionnement d'une instance du workflow en plusieurs chemins à l'aide des tâches Fractionner et Fusionner.. Dans cet exemple, un contrat est envoyé au Directeur financier et au Directeur des ventes pour approbation. Si sa valeur est supérieure à 100 000 €, le contrat est également envoyé au PDG. La tâche Fusionner calcule dynamiquement le nombre de variables inachevées et attend que le nombre approprié de variables (configuré dans les paramètres de la tâche Fusionner) soit renvoyé avant de les fusionner à nouveau.
Il n'est cependant pas nécessaire qu'une même tâche Fractionner soit fusionnée en une seule tâche Fusionner. Il est possible de fusionner différentes variables de l'instance du workflow à tout moment au cours du processus. Chaque tâche Fusionner calcule dynamiquement les variables qui sont potentiellement inachevées et attend que le nombre configuré de variables soit présent. L'exemple ci-dessous illustre le même processus, mais lorsque le Directeur financier et le Directeur des ventes ont approuvé le contrat, celui-ci doit être envoyé à un relecteur pour une vérification finale. La première tâche Fusionner calcule dynamiquement les variables inachevées et attend celles en provenance des deux directeurs avant d'exécuter la fusion. Elle « sait » qu'une troisième variable a été créée à l'intention du PDG, mais comme il est impossible de la fusionner, elle n'est pas prise en compte. De même, la dernière tâche Fusionner vérifie dynamiquement le nombre de variables susceptibles d'être encore inachevées. Dans le cas des contrats inférieurs à 100 000 €, elle « sait » qu'elle doit uniquement attendre la variable en provenance du relecteur, mais pour les contrats supérieurs à cette somme, elle attend les variables en provenance du relecteur ET du PDG.
|
Nous allons à présent examiner la tâche Abandon de fusion, qui annule tous les fractionnements actifs. Ainsi, lors de la négociation d'un contrat, si l'autre partie décide brusquement d'arrêter les négociations, aucune des autres tâches n'a plus lieu d'être et le workflow doit se terminer. Lorsqu'une tâche Abandon de fusion est déclenchée, elle « collecte » TOUTES les variables inachevées et les fusionne. Dans l'exemple ci-dessous, dès l'annulation du contrat, TOUTES les variables actives du processus sont immédiatement collectées, où qu'elles se trouvent, et fusionnées. Cela signifie que les tâches du workflow sont effacées de la boîte de réception du workflow de l'utilisateur et que le workflow passe à la tâche suivante (en l'occurrence, il s'agit de mettre fin au workflow).
|
Pour finir, examinons à présent la tâche Fractionnement par utilisateurs, qui permet d'attribuer dynamiquement des fractionnements lors de l'exécution. Plutôt que de créer des tâches manuelles pour chaque responsable, par exemple, la tâche Fractionnement par utilisateurs permet de fractionner le workflow en fonction des utilisateurs affectés à la tâche manuelle qui la suit.
Dans l'exemple ci-dessous, le contrat est acheminé vers une tâche Fractionnement par utilisateurs, qui fractionne automatiquement le workflow pour obtenir le nombre de variables requis par la tâche manuelle.
Il n'existe qu'une seule tâche d'approbation, mais chaque utilisateur affecté reçoit une variable indépendante et peut exécuter la tâche, comme avec la tâcheFractionner standard. Une fois que tous les utilisateurs concernés ont terminé la tâche, elle est fusionnée à nouveau.Â
Il serait également possible d'utiliser une tâche Abandon de fusion, auquel cas, dès qu'un responsable rejette le contrat, toutes les variables seraient collectées et le fractionnement annulé.
|
1. Chaque tâche Fractionner doit être associée à une tâche Fusionner correspondante au moins. Dans l'exemple ci-dessous, aucune tâche Fusionner n'est définie, et la définition du processus n'est donc pas valide.
2. Au sein d'un processus Fractionner/Fusionner, il est impossible de décrire une boucle pour revenir au fractionnement ou à une tâche le précédant. Une telle boucle pourrait créer des variables superflues.
|
Les boucles sont bien entendu autorisées, mais elles doivent figurer au sein du processus de fractionnement/fusion ou se trouver totalement en dehors de celui-ci. Dans l'exemple ci-dessous, la boucle Verify - Send for Approval est valide, car elle intervient en dehors du processus de fractionnement/fusion.
|
3. Deux tâches Fusionner ne doivent jamais être connectées par une transition car chacune d'elles attendrait d'abord que l'autre se termine.
Â
|
|