BPMN: les sous-processus
Un sous-processus est à la fois une activité de son processus parent et un processus complet. Il se referme pour tenir en un symbole et s'ouvre pour montrer son détail. Son tracé de bordure sépare quatre familles: le sous-processus, l'activité d'appel, le sous-processus événementiel et la transaction. Une cinquième, le sous-processus ad hoc, se reconnaît à un marqueur.
Une tâche est atomique. Quand le travail qu’elle nomme se décompose en un enchaînement d’étapes, le symbole change.
Le sous-processus (sub-process)
Un sous-processus est une activité dont le détail interne est modélisé avec des activités, des passerelles (gateway), des événements et des flux de séquence1. C’est un objet graphique du processus contenant, qui peut s’ouvrir sur un processus de niveau inférieur1.
Il délimite en outre une portée: visibilité des attributs, portée transactionnelle, exceptions, événements et compensation1.
Le symbole reprend la forme de la tâche, le rectangle à coins arrondis, et le standard impose un seul trait fin1. Trois autres tracés sont réservés, chacun à un sous-processus particulier1:
- le trait épais à l’activité d’appel (call activity);
- le pointillé au sous-processus événementiel (event sub-process);
- le double trait à la transaction.
Le sous-processus ad hoc garde le trait fin et se signale par un marqueur.
Ce symbole correspond à l’embedded sub-process de BPMN 1.21. Le nom survit dans une partie des outils et de la littérature.
La vue réduite (collapsed)
Un sous-processus réduit masque son détail. Un marqueur le distingue de la tâche: le standard impose un petit carré portant un signe plus, au bas du symbole et centré1.
La vue développée (expanded)
Un sous-processus développé montre son détail à l’intérieur de la vue du processus qui le contient1. Le contenu prend la place du marqueur.
Les deux figures décrivent le même modèle. Silver l’établit sur la sérialisation: le XML des deux vues est identique2. Le choix relève de la mise en page.
Le niveau enfant
Le contenu d’un sous-processus forme un niveau enfant, ce que Silver appelle le child level2. Il se dessine de deux façons: à l’intérieur du symbole développé, comme sur la figure précédente, ou sur un diagramme séparé auquel le symbole réduit renvoie par un hyperlien2. La seconde, qu’il appelle la modélisation hiérarchique, tient le processus de bout en bout sur une page et repousse chaque détail d’un cran2.
Une règle vaut dans les deux cas: un flux de séquence ne franchit pas la bordure d’un sous-processus. Le standard l’énonce dans son tableau des éléments étendus3. Silver en fait l’une des règles fondamentales de la notation2.
Le contrôle passe donc par les événements. À l’arrivée du flux de séquence sur le symbole parent, le processus repart de l’événement de début du niveau enfant; quand il atteint l’événement de fin de ce niveau, il reprend sur le flux de séquence sortant du symbole parent2.
L’événement de début d’un sous-processus est de ce fait neutre. Le standard l’écrit: l’événement de début neutre s’emploie pour tous les sous-processus, intégrés comme appelés, les autres déclencheurs restant hors d’usage puisque le jeton venu du processus parent tient lieu de déclencheur4. Silver y insiste, en la donnant pour une règle du standard plutôt que pour une règle de style2.
Le sous-processus développé sans étiquette
Un sous-processus développé sans étiquette, contenant des activités qu’aucun flux de séquence ne relie, montre un groupe d’activités parallèles sous une forme compacte; le standard appelle cet usage une parallel box1. Il se passe d’événement de début, d’événement de fin et des flux qui y mèneraient. Le standard y voit la raison pour laquelle ces deux événements sont optionnels1.
Silver en précise le comportement: toutes les activités enfants deviennent exécutables ensemble, dans un ordre indifférent, et toutes doivent être achevées pour que le sous-processus le soit5. Il range la construction parmi les héritages de BPMN 1.0 et la juge de peu d’utilité5.
Les marqueurs du sous-processus
Les trois marqueurs posés par le chapitre sur les tâches s’appliquent au sous-processus. Le standard compte cinq marqueurs de sous-processus1. Le premier est celui de la vue réduite, le petit carré au signe plus. Les quatre autres sont la boucle, les instances multiples, la compensation et le marqueur ad hoc. Un sous-processus réduit peut porter jusqu’à trois de ces quatre-là, dans toutes les combinaisons sauf la boucle avec les instances multiples1. Une tâche en porte au plus deux6.
Tous les marqueurs présents sont groupés, l’ensemble étant centré au bas du symbole1.
Le sous-processus ad hoc (ad-hoc sub-process)
Un sous-processus ad hoc rassemble des activités entre lesquelles aucune relation de séquence n’est exigée7. Le modèle définit l’ensemble des activités; leur ordre et leur nombre d’exécutions sont déterminés par les exécutants7.
Le marqueur est un tilde, au bas du symbole et centré7. Il se combine avec n’importe quel autre7.
Les activités y sont généralement déconnectées. Pendant l’exécution, une ou plusieurs d’entre elles peuvent être actives, chacune pouvant s’exécuter plusieurs fois7. Les exécutants décident du moment où chacune commence7.
L’exemple du standard est la rédaction d’un chapitre de livre: rechercher le sujet, écrire le texte, le corriger, produire les graphiques, les insérer, organiser les références7. Des dépendances existent, écrire avant de corriger, sans qu’une instance de l’écriture corresponde à une instance de la correction: la correction est rare et porte sur le texte produit par plusieurs écritures7.
Dumas emploie la construction pour la répétition non contrôlée, le client qui s’informe de l’avancement de sa commande, modifie ses coordonnées ou l’annule, jusqu’à ce qu’une condition soit remplie8.
Silver donne le critère d’achèvement: le sous-processus ad hoc est achevé quand l’exécutant le déclare achevé, sans que toutes les activités enfants aient à être exécutées5.
Les attributs
Trois attributs paramètrent le comportement7.
orderingvautparallelpar défaut: un nombre quelconque d’activités du sous-processus, de zéro à leur totalité, peut s’exécuter en parallèle. La valeursequentialrestreint l’exécution à une activité à la fois, restriction que le standard rattache au partage d’une ressource.completionConditionporte une expression: quand elle s’évalue à true, le processus est terminé.cancelRemainingInstancesne s’applique qu’en ordonnancement parallèle. Il décide du sort des instances en cours au moment où la condition d’achèvement devient vraie.
Le contenu autorisé
Le standard restreint les éléments BPMN utilisables à l’intérieur7.
- L’activité doit y figurer.
- L’objet de données (data object), le flux de séquence, l’association, l’association de données, le groupe, le flux de message (message flow, en source ou en cible), la passerelle et l’événement intermédiaire peuvent y figurer.
- L’événement de début, l’événement de fin, les conversations et les liens de conversation (graphiquement) ainsi que les activités de chorégraphie ne doivent pas y figurer.
L’absence des deux événements se voit sur la figure, et Dumas la signale comme la contrepartie de l’ordre libre8. Un ordre partiel reste exprimable par des flux de séquence: en ajouter un entre deux tâches impose qu’une exécution de la première soit suivie d’une exécution de la seconde, sans exigence d’immédiateté7. Un objet de données placé en entrée d’une tâche contraint de la même façon, puisque l’exécutant ne peut pas la démarrer sans cette entrée7.
Silver relève que le sous-processus ad hoc figure hors des sous-classes descriptive et analytique5, ce que les tableaux 2.1 et 2.2 du standard confirment9.
L’activité d’appel (call activity)
L’activité d’appel marque l’endroit d’un processus où un processus global ou une tâche globale est utilisé10. Elle sert d’enveloppe à l’invocation, et son activation transfère le contrôle à l’élément appelé10.
Quand elle appelle un processus, la forme est celle du sous-processus, réduite si le détail de l’appelé est masqué, développée s’il est disponible, avec un trait épais dans les deux cas10.
L’activité d’appel de BPMN 2.0 correspond au reusable sub-process de BPMN 1.210.
L’activité d’appel doit déclarer exactement les mêmes entrées, sorties, ensembles d’entrées et ensembles de sorties que l’élément appelé10. Les erreurs et les escalades remontent de l’élément appelé vers l’activité d’appel, où elles se traitent sur la bordure10.
L’activité d’appel peut aussi redéfinir des propriétés de l’élément appelé: quand elle déclare ses propres ressources, celles de l’appelé sont ignorées10.
Pour Silver, un sous-processus employé par plusieurs processus gagne à être défini dans son propre fichier, puis appelé depuis chacun d’eux, la solution intégrée obligeant à répliquer la définition et à maintenir les copies synchronisées11. Dumas va plus loin: son choix par défaut est le processus global, parce qu’il autorise la réutilisation à l’échelle d’un référentiel et qu’une modification du modèle global se propage d’elle-même à tous les processus qui l’invoquent12. Il note le revers: une variante propre à un processus reste intégrée à son parent12.
La tâche globale (global task)
Une tâche globale est une définition de tâche réutilisable et atomique, appelable depuis n’importe
quel processus par une activité d’appel13. Le standard n’en définit que quatre:
GlobalUserTask, GlobalManualTask, GlobalScriptTask et
GlobalBusinessRuleTask13.
Elle n’a pas de symbole propre et se lit à travers l’activité d’appel qui l’invoque. Le standard impose alors la forme de la tâche avec un trait épais, ainsi que le marqueur du type de tâche globale appelée: une activité d’appel qui invoque une tâche utilisateur globale porte l’icône de la tâche utilisateur10.
Silver tempère l’intérêt de la construction hors modèle exécutable: dans un modèle descriptif ou analytique, la définition d’une tâche se réduit à son type et à son nom. En BPMN exécutable, une définition de tâche utilisateur porte ses données et son interface, et la partager entre plusieurs points d’appel devient utile11.
La transaction
Une transaction est un sous-processus dont le comportement est régi par un protocole transactionnel,
WS-Transaction par exemple14. Sa bordure est un double trait fin14.
L’attribut method porte le protocole, sous forme d’URI technique pour un processus
exécutable14.
La transaction demande un autre exemple. La figure suivante reprend le processus une fois la commande vérifiée et fait de la réservation du transport une transaction. Elle emprunte deux symboles à des chapitres à venir: la passerelle exclusive, qui sépare les deux issues de la réservation, et l’événement de bord (boundary event), qui porte ici l’annulation.
Les trois issues
- L’achèvement normal se lit comme un flux de séquence sortant de la transaction14.
- L’annulation soumet les activités contenues aux actions d’annulation, qui peuvent inclure un retour en arrière du processus et la compensation de certaines activités14. Les autres façons d’interrompre le sous-processus, une erreur, une minuterie ou ce qui vaudrait pour une activité non transactionnelle, laissent la compensation de côté14.
- Le hazard, l’incident grave, couvre le cas où le succès comme l’annulation propre sont hors d’atteinte. Il se note par un événement intermédiaire d’erreur: l’activité est interrompue sans compensation et le flux repart de cet événement14.
Les deux signaux d’annulation
- Un événement de fin d’annulation (cancel end event) atteint à l’intérieur du sous-processus, dont c’est le seul emplacement légal14.
- Un message d’annulation reçu par le protocole qui soutient l’exécution14.
L’événement intermédiaire d’annulation (cancel intermediate event) attaché à la bordure dirige ensuite le flux, une fois le retour en arrière effectué et toute la compensation terminée14. Son seul emplacement légal est la bordure d’une transaction14. Le chapitre sur les événements de bord reprend le mécanisme d’attachement.
Le retour au processus parent
Quand chaque chemin a atteint un événement de fin autre qu’une annulation, le flux attend avant de remonter au processus parent: le protocole vérifie d’abord que tous les participants ont achevé leur part14. Le plus souvent c’est le cas et le flux remonte. L’un des participants peut cependant rencontrer un problème qui provoque une annulation ou un hazard, auquel cas le flux part vers l’événement intermédiaire correspondant, alors même que la transaction paraissait achevée14.
Aucun autre sous-processus ne bascule ainsi après coup.
Le sous-processus événementiel
Un sous-processus dont l’attribut triggeredByEvent vaut true est un sous-processus
événementiel (event sub-process), tracé en pointillé1. Il se déclenche par son propre
événement de début plutôt que par le flux du processus parent. Le chapitre sur les événements de
bord le traite avec les déclencheurs qu’il admet.
Le choix du niveau
Deux repères aident à décider quand descendre d’un cran.
Le premier est la taille. Dumas rappelle qu’au-delà d’une trentaine d’objets de flux, activités, événements et passerelles réunis, la probabilité d’erreur augmente, et il fait de ce seuil sa règle empirique de décomposition15. Réduire un sous-processus est l’un des moyens les plus efficaces d’améliorer la lisibilité d’un modèle15.
Silver ajoute trois usages qui n’ont rien à voir avec l’encombrement2. Le sous-processus réduit sert de tenant-lieu quand le détail reste à découvrir, ce qui laisse le modèle de bout en bout valide. Il découpe la gouvernance, chaque partie du processus revenant à un responsable distinct qui la maintient. Il délimite enfin la portée d’un gestionnaire d’exception: un événement attaché à un sous-processus se déclenche pour n’importe quelle étape qu’il contient.
Le second est la classe de conformité. La sous-classe descriptive, la plus restreinte des deux, admet le sous-processus dans ses deux vues ainsi que l’activité d’appel9. Le sous-processus ad hoc et la transaction figurent hors de la descriptive comme de l’analytique9. Ces sous-classes fixent ce qu’un outil doit prendre en charge pour revendiquer le niveau9: un modèle qui s’en tient à la descriptive n’utilise que des éléments que tout outil revendiquant cette sous-classe doit prendre en charge.
Au-delà de la bordure
Trois des quatre tracés de bordure sont désormais lus. Le quatrième, le pointillé du sous-processus événementiel, demande d’abord la grammaire des événements: leur position dans le flux, ce qu’ils capturent ou émettent et les treize déclencheurs que le standard définit.
Le chapitre suivant
BPMN: la grammaire des événements. Les treize déclencheurs d'événement BPMN, leur position dans le flux, la capture et l'émission et les traits qui séparent début, intermédiaire et fin.
Notes et références
OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.3.5 « Sub-Processes ». Cette clause porte la définition du sous-processus, la portée qu’il délimite, l’obligation du trait fin unique et les trois tracés réservés à l’activité d’appel, au sous-processus événementiel et à la transaction. Elle porte aussi les vues réduite et développée, le marqueur en petit carré au signe plus centré en bas, l’usage dit parallel box avec la raison qu’il donne au caractère optionnel des événements de début et de fin, les cinq marqueurs avec leurs règles de combinaison et de groupement, la correspondance avec l’embedded sub-process de BPMN 1.2, ainsi que l’attribut
triggeredByEventdu tableau 10.20. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎Bruce Silver, BPMN Method and Style, 2e édition, Cody-Cassidy Press, 2011: l’identité du XML entre vue réduite et vue développée, le child level et son expansion sur un diagramme hyperlié comme alternative à l’expansion en ligne, le passage du contrôle par l’événement de début puis par l’événement de fin du niveau enfant. Silver y ajoute l’interdiction faite au flux de séquence de franchir la bordure, l’événement de début neutre donné pour une règle du standard, ainsi que les usages du sous-processus au-delà de l’encombrement: tenant-lieu, découpage de la gouvernance, portée d’un gestionnaire d’exception. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
OMG, Business Process Model and Notation (BPMN), version 2.0.2, §7.3.2 « Extended BPMN Modeling Elements », tableau 7.2, ligne Expanded Sub-Process: « Sequence Flows cannot cross the boundary of a Sub-Process ». ↩︎
OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.2 « Start Event », tableau 10.85 « Sub-Process Start Event Types », ligne None: l’événement de début neutre s’emploie pour tous les sous-processus, intégrés comme appelés. Les autres déclencheurs restent hors d’usage, le jeton venu du processus parent tenant lieu de déclencheur. ↩︎
Bruce Silver, BPMN Method and Style, 2e édition: le comportement de la parallel box, le sous-processus ad hoc comme variante achevée quand l’exécutant la déclare achevée, sans que toutes les activités enfants aient été exécutées. Silver range les deux constructions parmi les héritages de BPMN 1.0 et les juge de peu d’utilité; il relève aussi que l’ad hoc ne figure ni dans la sous-classe descriptive ni dans l’analytique. ↩︎ ↩︎ ↩︎ ↩︎
OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.3.3 « Tasks »: une tâche porte un marqueur ou deux, la boucle et les instances multiples s’excluant. ↩︎
OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.3.5 « Ad-Hoc Sub-Process »: l’absence de relation de séquence exigée, le marqueur tilde avec ses combinaisons, puis
ordering,completionConditionetcancelRemainingInstancesau tableau 10.22. La même sous-clause porte l’exemple du chapitre de livre, les listes d’éléments qui doivent, peuvent et ne doivent pas figurer à l’intérieur, ainsi que l’effet contraignant d’un flux de séquence ou d’un objet de données ajouté. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎Marlon Dumas et coll., Fundamentals of Business Process Management, 2e édition, §4.1.2 « Uncontrolled Repetition »: le sous-processus ad hoc pour des activités répétables sans ordre fixé, la condition d’achèvement portée par une annotation, l’ordre partiel exprimable par des flux de séquence. Dumas note aussi qu’on ne peut pas y représenter d’événement de début ni de fin. ↩︎ ↩︎
OMG, Business Process Model and Notation (BPMN), version 2.0.2, §2.2.2 « BPMN Process Elements ». Le tableau 2.1 « Descriptive Conformance Sub-Class Elements and Attributes » porte
subProcess (expanded),subProcess (collapsed)etCallActivity. Le tableau 2.2, qui ajoute les éléments de la classe analytique, ne mentionne ni le sous-processus ad hoc ni la transaction. La clause précise que les critères d’une sous-classe s’appliquent à l’outil qui en revendique la prise en charge. ↩︎ ↩︎ ↩︎ ↩︎OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.3.6 « Call Activity »: l’appel d’un processus global ou d’une tâche globale, le trait épais, les formes réduite et développée, l’affichage du marqueur du type de tâche globale appelée. La même clause porte la correspondance avec le reusable sub-process de BPMN 1.2, la correspondance exacte exigée entre les entrées et les sorties, la redéfinition des ressources, ainsi que la remontée des erreurs et des escalades vers la bordure de l’activité d’appel. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Bruce Silver, BPMN Method and Style, 2e édition: définir dans son propre fichier un sous-processus employé par plusieurs processus plutôt que d’en répliquer la définition. Silver juge en outre l’intérêt de la tâche globale limité hors modèle exécutable. ↩︎ ↩︎
Marlon Dumas et coll., Fundamentals of Business Process Management, 2e édition, §3.6 « Process Model Reuse »: le processus global comme choix par défaut, la propagation automatique d’une modification aux processus appelants, ainsi que le cas de la variante qui reste intégrée. ↩︎ ↩︎
OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.3.7 « Global Task »: définition de tâche réutilisable et atomique, appelable par une activité d’appel depuis n’importe quel processus. La clause donne la liste fermée des quatre types. ↩︎ ↩︎
OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.3.5 « Transaction »: le double trait fin, l’attribut
methodau tableau 10.21, les trois issues. La même sous-clause porte les deux signaux d’annulation, l’événement intermédiaire d’annulation réservé à la bordure d’une transaction, ainsi que la vérification du protocole avant le retour au processus parent. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎Marlon Dumas, Marcello La Rosa, Jan Mendling et Hajo A. Reijers, Fundamentals of Business Process Management, 2e édition, Springer, 2018, §3.5 « Process Decomposition »: le seuil empirique d’une trentaine d’objets de flux et la réduction d’un sous-processus comme moyen de lisibilité. ↩︎ ↩︎

