Your Training Partner
Référence BPMN
Processus BPMN de traitement d'une commande: un événement de début de message « Commande reçue », un événement intermédiaire de message en capture « Paiement confirmé », un événement intermédiaire de minuterie « Le lendemain à 8h » et un événement de fin de message « Client notifié », séparés par trois tâches.

BPMN: la grammaire des événements

Un événement marque un fait qui survient pendant le déroulement d'un processus. Le cercle est le même pour tous; trois choses le spécialisent: sa position dans le flux, le sens dans lequel il traite le déclencheur et le déclencheur lui-même. Le standard en définit treize.

Le premier chapitre a posé deux événements, celui de début et celui de fin, tous deux sans déclencheur. Un événement est quelque chose qui « arrive » pendant le déroulement d’un processus1. Le terme couvre le début d’une activité, sa fin, le changement d’état d’un document, l’arrivée d’un message1. Ces faits affectent le déroulement du processus, ils ont d’ordinaire une cause ou un effet, et ils appellent en général une réaction1.

Les trois positions

Le standard distingue trois types principaux d’événement selon leur position1:

  • l’événement de début (start event) indique où un processus démarre2;
  • l’événement intermédiaire (intermediate event) indique où quelque chose survient entre le début et la fin3;
  • l’événement de fin (end event) indique où un chemin du processus s’achève4.

Les trois partagent la même forme de base, un cercle au centre ouvert dans lequel un marqueur se loge2. L’exigence de trait est normative dans les trois cas: un seul trait fin pour le début2, un double trait fin pour l’intermédiaire3, un seul trait épais pour la fin4. Le tracé du cercle est le seul discriminant quand le marqueur manque: le début et la fin neutres ne se séparent que par l’épaisseur du trait, l’intermédiaire neutre par son double trait.

Expédier une commandeDiagramme BPMN 2.0 : Expédier une commande. smartgecko.academyCommande reçuePréparerl’expéditionExpédition prêteRemettre autransporteurCommandeexpédiéesmartgecko.academy
Les trois positions dans un même flux. Aucun cercle ne porte de marqueur, donc les trois sont neutres, et ce diagramme est un modèle complet et valide.

Le standard décrit l’événement intermédiaire de cette figure comme un moyen de signaler un changement d’état du processus, à l’usage des méthodes de modélisation qui en tiennent compte3. Le jeton le traverse sans délai.

Deux positions supplémentaires existent: le bord d’une activité, où un événement intermédiaire se rattache, et l’événement de début d’un sous-processus événementiel. Le chapitre sur les événements de bord porte le mécanisme d’attachement, le caractère interruptif ou non, le sous-processus événementiel et la compensation. Ce chapitre-ci n’en retient que les contraintes qui décident de ce qu’un déclencheur peut faire.

Le nombre d’événements par niveau

Un niveau de processus peut porter plusieurs événements de début, chacun indépendant des autres: une instance est créée chaque fois que l’un d’eux est déclenché2. Le standard prévient qu’un processus à plusieurs événements de début est plus difficile à comprendre, et recommande d’employer cette possibilité avec parcimonie2.

Un niveau peut de même porter plusieurs événements de fin4. Silver en fait une règle de méthode: un événement de fin distinct par état final distinct du niveau5.

La capture et l’émission

À l’intérieur de ces trois positions, un événement existe sous deux formes1:

  • il capture un déclencheur (catch): tous les événements de début et certains événements intermédiaires;
  • il émet un résultat (throw): tous les événements de fin et certains événements intermédiaires.

Un résultat émis peut être capturé plus loin par un autre événement1. Le déclencheur transporte alors typiquement de l’information hors de la portée d’émission, vers la portée des événements qui capturent1.

Le marqueur plein signale l’émission, le marqueur vide la capture3.

Expédier une commandeDiagramme BPMN 2.0 : Expédier une commande. smartgecko.academyCommande reçuePréparerl’expéditionNotifier le clientAccusé deréception reçuRemettre autransporteurCommandeexpédiéesmartgecko.academy
Le même flux, l'événement intermédiaire neutre remplacé par un événement de message en émission, suivi d'un événement de message en capture.

Sur un événement d’émission, le déclencheur survient immédiatement, le message part par exemple, et le jeton repart par le flux de séquence sortant3. Sur un événement de capture, le jeton reste sur l’événement jusqu’à ce que le déclencheur survienne, puis il repart. Dumas et ses coauteurs décrivent le même mécanisme par le jeton qui demeure piégé dans le flux entrant, l’événement ne retenant jamais un jeton puisqu’il est instantané6.

Un événement intermédiaire peut avoir plusieurs flux de séquence entrants, ce qui produit un flux non contrôlé: l’événement s’active dès qu’un jeton arrive par l’un des chemins, sans attendre les autres, et un second jeton crée une seconde instance de l’événement3. Pour contrôler ce comportement, il faut faire converger les chemins sur une passerelle (gateway) placée avant l’événement3. La passerelle appartient à son propre chapitre.

L’interruption

Le troisième axe ne concerne que les deux positions du chapitre suivant. Un événement qui s’y place est interruptif ou non interruptif, et le trait de son cercle l’indique: continu dans le premier cas, interrompu dans le second7.

L’attribut derrière ce trait est cancelActivity pour un événement de bord7, et isInterrupting pour l’événement de début d’un sous-processus événementiel2. Au bord d’une activité, trois déclencheurs échappent au choix: l’erreur et l’annulation interrompent toujours, la compensation ne connaît pas ce choix puisqu’elle ne se déclenche qu’après l’achèvement de l’activité7. La liste diffère pour le début d’un sous-processus événementiel: l’erreur y reste toujours interruptive, la compensation y reste sans objet et l’annulation n’y est pas admise2.

L’acheminement du déclencheur

Entre la naissance d’un déclencheur et sa capture, le standard nomme cinq stratégies d’acheminement: la publication, la résolution directe, la propagation, l’annulation et la compensation8. Il n’en explique que quatre. Direct resolution n’apparaît qu’une fois dans le document, dans cette énumération, sans définition nulle part, et l’émission implicite de la minuterie et de la condition est la seule chose que le terme puisse recouvrir.

La publication. Un déclencheur publié peut être reçu par n’importe quel événement de capture, dans n’importe quelle portée du système où il est publié8. Le pool, le cadre qui porte un processus dans un diagramme, appartient à son propre chapitre. Les messages sont produits hors du pool dans lequel ils sont publiés; ils décrivent typiquement une communication entre processus de pools différents; quand un message doit atteindre une instance précise, la corrélation sert à l’identifier8. Les signaux sont produits dans le pool où ils sont publiés; ils servent typiquement à une diffusion générale au sein d’un processus, entre processus, entre pools et entre diagrammes8.

L’émission implicite. Les déclencheurs de minuterie et de condition sont émis implicitement: une fois activés, ils attendent qu’une condition de temps ou d’état devienne vraie pour déclencher l’événement de capture8. Aucun symbole ne les émet, ce qui explique qu’ils n’existent qu’en capture.

La propagation. Un déclencheur propagé remonte de l’endroit où il a été émis jusqu’à la portée englobante la plus proche qui porte un événement capable de le capturer8. Deux déclencheurs se propagent ainsi, distincts par leur gravité: l’erreur est critique et suspend l’exécution à l’endroit de l’émission, l’escalade reste non critique et l’exécution s’y poursuit8. Quand aucun événement de capture n’est trouvé, le déclencheur reste irrésolu8.

Le ciblage. La terminaison, la compensation et l’annulation visent un processus ou une instance d’activité déterminée8. La terminaison ordonne l’arrêt immédiat de toutes les activités du processus ou de l’activité visée, instances multiples comprises, sans compensation ni traitement d’événement8. La compensation d’une activité achevée avec succès déclenche son gestionnaire de compensation, le gestionnaire implicite d’un sous-processus appelant ceux de toutes les activités qu’il contient dans l’ordre inverse de leurs dépendances de flux de séquence8. L’annulation termine toutes les activités en cours et compense toutes les activités achevées avec succès dans le sous-processus auquel elle s’applique; si ce sous-processus est une transaction, la transaction est annulée8.

Invoquée sur une activité qui n’est pas encore achevée, ou qui ne s’est pas achevée avec succès, la compensation ne produit rien et aucune erreur n’est levée8.

Les treize déclencheurs

Un déclencheur se choisit dans une liste fermée. Le standard définit dix EventDefinition, l’annulation, la compensation, la condition, l’erreur, l’escalade, le message, le lien, le signal, la terminaison et la minuterie9. Trois cas de figure s’y ajoutent sans classe propre: l’événement neutre, qui ne porte aucune EventDefinition, l’événement multiple, qui en porte plus d’une, et l’événement multiple parallèle, qui en porte plus d’une et exige qu’elles se produisent toutes9. Treize marqueurs en tout, dont l’absence de marqueur.

Les treize déclencheursDiagramme BPMN 2.0 : Les treize déclencheurs. smartgecko.academyNeutreMessageMinuterieConditionSignalMultipleMultiple parallèleEscaladeLienCompensationErreurAnnulationTerminaisonsmartgecko.academy
Planche de référence des treize marqueurs, chacun dessiné dans la position où le lecteur le rencontrera le plus souvent. En haut, sept événements de début: neutre, message, minuterie, condition, signal, multiple, multiple parallèle. Au milieu, trois événements intermédiaires: escalade, lien, compensation. En bas, trois événements de fin: erreur, annulation, terminaison. L'annulation de fin n'est légale qu'à l'intérieur d'un sous-processus de transaction, que la planche ne dessine pas.

Le tableau dit, pour chaque déclencheur, dans quelles positions du flux normal il est légal. Les positions du chapitre suivant, le bord d’une activité et le début d’un sous-processus événementiel, en sont absentes. Pour le neutre en intermédiaire, la case suit la table du standard, dont la section correspondante discute.

déclencheurdébutintermédiaire, captureintermédiaire, émissionfin
neutre (none)ouiouioui
message (message)ouiouiouioui
minuterie (timer)ouioui
escalade (escalation)ouioui
condition (conditional)ouioui
lien (link)ouioui
erreur (error)oui
annulation (cancel)oui
compensation (compensation)ouioui
signal (signal)ouiouiouioui
multiple (multiple)ouiouiouioui
multiple parallèle (parallel multiple)ouioui
terminaison (terminate)oui

Les trois comptes du standard se lisent dans ces colonnes. Sept types d’événement de début pour un processus de premier niveau2, neuf types d’événement de fin4, douze types d’événement intermédiaire dont dix sont admis dans le flux normal3, l’annulation et l’erreur étant les deux exclues.

L’événement neutre (none)

Un événement neutre ne porte aucune EventDefinition9. Le standard impose alors l’affichage sans marqueur2.

Le standard en décrit trois variantes: un événement de début, un événement intermédiaire de capture et un événement de fin9. La table des événements intermédiaires du flux normal présente pourtant le même symbole comme un événement d’émission3. Les deux passages se contredisent. Le dessin étant le même, le lecteur d’un diagramme n’en subit rien; l’outil, lui, sérialise une classe ou l’autre, et le métamodèle définit un événement neutre des deux côtés, dans la classe de capture comme dans celle d’émission1.

Trois règles de position s’y attachent9. L’événement de début neutre peut servir à un processus de premier niveau ou à tout type de sous-processus, à l’exception du sous-processus événementiel. L’événement intermédiaire neutre est réservé au flux normal, donc jamais au bord d’une activité. L’événement de fin neutre est admis dans n’importe quel processus ou sous-processus.

Silver ajoute deux règles de méthode. Un sous-processus doit démarrer sur un événement de début neutre, un déclencheur à cet endroit étant selon lui une violation du standard10. Et quand plusieurs chemins parallèles se terminent chacun sur un événement de fin neutre, mieux vaut les réunir sur un seul, sans passerelle de synchronisation, puisque la jonction est déjà implicite: un niveau de processus n’est achevé que lorsque tous ses chemins ont atteint un événement de fin10.

Le message

Le message occupe toutes les positions: les quatre du tableau, plus le bord d’une activité et le début d’un sous-processus événementiel7. Le signal et le multiple sont les deux autres déclencheurs dans ce cas. Son marqueur est une enveloppe2.

En événement de début, un message arrive d’un participant et démarre le processus2. Le participant dont le message provient peut être identifié en le reliant à l’événement par un flux de message, le trait discontinu que le chapitre sur les flux et les artefacts documente, dans la collaboration du processus2. Un événement de début peut être la cible de plusieurs flux de message, chacun représentant un mécanisme d’instanciation, et un seul suffit à démarrer une nouvelle instance2.

En événement intermédiaire, le message se capture ou s’émet3. L’événement peut porter un flux de message entrant ou sortant, jamais les deux3.

En événement de fin, un message est envoyé à un participant à la conclusion du processus4. Le résultat de l’événement de fin doit être Message ou Multiple dès qu’un flux de message en sort, et Multiple s’il en sort plus d’un4.

Le chapitre sur les tâches annonçait la comparaison entre la tâche de réception et l’événement intermédiaire de message en capture. Silver la tranche: les deux ont le même sens, ils attendent un message et reprennent dès qu’il arrive, avec une différence utilisable, qu’un événement de bord de minuterie se rattache à une tâche de réception et non à un événement de message11. Dumas et ses coauteurs recommandent de remplacer par des événements de message les activités qui ne font qu’envoyer ou recevoir, parce qu’elles ne représentent pas vraiment une unité de travail6.

La minuterie (timer)

Une date et une heure précises, ou un cycle régulier comme « tous les lundis à 9h », déclenchent une minuterie2. Son marqueur est une horloge2. Dumas et ses coauteurs rangent ce déclencheur sous le nom d’événement temporel, qui circule également en français6.

La minuterie est un déclencheur de capture, jamais d’émission: elle est admise en événement de début, en événement intermédiaire de capture et au bord d’une activité7. C’est la conséquence de son émission implicite.

Trois attributs la paramètrent, timeDate pour une date et une heure, timeCycle pour un intervalle récurrent, timeDuration pour une durée; tous trois suivent le format ISO-8601, et ils s’excluent mutuellement dans un processus exécutable12. Aucun d’eux n’est visible dans le diagramme, de sorte que l’étiquette de l’événement porte l’information; Silver recommande d’y écrire la durée ou l’échéance13.

Silver précise le sens du symbole en flux normal: il représente un délai, « attendre pendant » ou « attendre jusqu’à », et l’attente d’un événement extérieur relève du message13.

L’escalade (escalation)

L’escalade signale un fait qui mérite une réaction sans arrêter le travail en cours. Son marqueur est une pointe de flèche14.

Elle occupe quatre positions: l’événement intermédiaire d’émission en flux normal3 et l’événement de fin4, plus le bord d’une activité et le début d’un sous-processus événementiel, traités au chapitre suivant14. Aucun événement de début de processus de premier niveau ne peut porter une escalade, la clause réservant l’escalade de début au déclenchement d’un sous-processus événementiel en ligne14.

Une escalade émise par un événement de fin n’affecte pas les autres chemins actifs4. Elle est capturée par un événement intermédiaire d’escalade portant le même escalationCode, ou aucun, placé au bord de l’activité englobante la plus proche dans la hiérarchie4. Quand aucune activité de la hiérarchie ne porte un tel événement, le comportement du processus n’est pas spécifié4. Un escalationRef transporte la charge utile de l’escalade9.

Pour Silver, l’escalade est en BPMN la contrepartie non interruptive de l’erreur, avec le même mécanisme d’émission et de capture15. Il signale aussi que peu d’outils la prennent en charge et que peu de modélisateurs en connaissent le sens, ce qui invite à la réserver aux cas qui l’exigent15.

La condition (conditional)

Un événement de condition se déclenche quand une condition devient vraie2. Le standard en donne deux exemples: « le S&P 500 varie de plus de 10 % depuis l’ouverture », « température supérieure à 300 °C »2. Son marqueur est une feuille de papier lignée2.

Comme la minuterie, la condition n’existe qu’en capture: événement de début, événement intermédiaire de capture, bord d’une activité7. Une contrainte de réarmement s’y ajoute pour l’événement de début: l’expression doit redevenir fausse, puis vraie, avant que l’événement puisse se déclencher à nouveau2.

Une seconde contrainte tient à la chronologie: l’expression d’un événement de début de condition ne peut se référer ni au contexte de données ni aux attributs d’instance du processus, puisque l’instance n’existe pas encore au moment où la condition est évaluée2. Elle peut en revanche se référer à des attributs statiques du processus et à l’état d’entités de l’environnement, la façon d’accéder à ces états étant hors du périmètre du standard2.

L’expression elle-même peut rester sous-spécifiée et se formuler en langue naturelle; un processus exécutable exige une expression formelle9.

Silver note que le signal ou le message décrivent souvent le même comportement, la différence tenant à qui surveille la donnée: le modèle de processus avec une condition, un système extérieur avec un signal ou un message16.

Le lien est un mécanisme pour raccorder deux portions d’un même processus17. Son usage est limité à un seul niveau de processus: un lien ne relie pas un processus parent à un sous-processus17. C’est le seul déclencheur dont les deux formes soient intermédiaires, toutes deux réservées au flux normal3. Le marqueur, une flèche horizontale sur la planche ci-dessus, est plein quand l’événement émet vers le lien cible et vide quand il capture depuis le lien source3.

Les règles d’appariement tiennent en quatre points3. Un événement de lien est source ou cible d’un flux de séquence, jamais les deux. À un lien source doit correspondre un lien cible de même nom. Plusieurs liens sources peuvent viser un même lien cible. Un lien source ne peut pas viser plusieurs liens cibles. Le nom est d’ailleurs obligatoire pour ce déclencheur9.

Configurer un produitDiagramme BPMN 2.0 : Configurer un produit. smartgecko.academyConfigurationdemandéeTester le produitAAEmballer leproduitProduit emballésmartgecko.academy
Une paire de liens portant le même nom, « A », comme la règle l'exige. Le flux de séquence s'arrête sur l'événement d'émission et reprend sur l'événement de capture, sans trait entre les deux.

Deux usages sont documentés: le connecteur de page, quand un niveau de processus dépasse la longueur d’une page imprimée, et l’objet de renvoi, qui raccourcit un flux de séquence trop long à suivre17. Un troisième vient des méthodes qui interdisent aux flux de séquence de remonter vers un objet antérieur: le lien permet alors d’écrire une boucle sans enfreindre cette règle17.

Le lien de capture est l’une des trois exceptions à la règle d’instanciation posée au premier chapitre: un objet de flux sans flux de séquence entrant est instancié au démarrage du processus, sauf s’il s’agit d’une activité de compensation, d’un lien en capture ou d’un sous-processus événementiel2.

Silver le tient pour une aide au dessin davantage que pour un véritable événement: la paire n’émet ni ne capture réellement un déclencheur, elle abrège un flux de séquence, et elle ne s’emploie donc que là où un flux de séquence serait admis18.

L’erreur (error)

Une erreur signale une défaillance qui interrompt le travail. Son marqueur est un éclair14.

L’erreur est admise en trois positions: l’événement de fin4, le bord d’une activité7 et le début d’un sous-processus événementiel14. Elle est exclue du flux normal, en capture comme en émission3. Elle interrompt toujours, aucune variante non interruptive n’existant ni au bord d’une activité ni pour un sous-processus événementiel7.

Un événement de fin d’erreur produit une erreur nommée et termine tous les fils d’exécution actifs du sous-processus concerné4. L’erreur est capturée par un événement intermédiaire d’erreur portant le même errorCode, ou aucun, placé au bord de l’activité englobante la plus proche dans la hiérarchie4. Si aucune activité de la hiérarchie ne porte un tel événement, le comportement du processus n’est pas spécifié, et le système d’exécution peut définir un traitement additionnel, couramment la terminaison de l’instance4. Une charge utile peut accompagner l’erreur9.

Dumas et ses coauteurs décrivent le motif standard: l’événement de fin d’erreur interrompt le sous-processus qui l’englobe et lève l’exception, un événement de bord la capture, et une branche sortante, le flux d’exception, porte la procédure de rétablissement19.

L’annulation (cancel)

L’annulation ne s’emploie que dans les sous-processus de transaction, que le chapitre sur les sous-processus traite20. Deux variantes existent: un événement intermédiaire de capture et un événement de fin20.

L’événement intermédiaire d’annulation ne se rattache qu’au bord d’un sous-processus de transaction, donc il est exclu du flux normal20. L’événement de fin d’annulation ne s’emploie qu’à l’intérieur d’un sous-processus de transaction20. L’annulation interrompt toujours l’activité à laquelle elle se rattache7.

Atteindre un événement de fin d’annulation indique que la transaction doit être annulée, ce qui déclenche l’événement intermédiaire d’annulation placé au bord du sous-processus, et indique aussi qu’un message d’annulation du protocole de transaction doit partir vers les entités impliquées dans la transaction4. L’effet est celui décrit sous « Le ciblage »8.

Le marqueur est une croix21. Silver le décrit comme une forme particulière de l’erreur, réservée au cas où la cause de l’échec se trouve à l’intérieur de la transaction plutôt qu’après son achèvement21.

La compensation

Compenser, c’est défaire le travail d’une activité déjà achevée. Le chapitre sur les tâches a introduit le marqueur d’activité correspondant; le déclencheur d’événement en est l’autre moitié. Son marqueur est un double triangle14.

Quatre variantes existent: un événement de début, un événement intermédiaire en capture et en émission, un événement de fin22. La compensation de début est exclue d’un processus de premier niveau et admise pour un sous-processus événementiel. La compensation intermédiaire de capture ne se rattache qu’au bord d’une activité, donc elle est absente du flux normal. La compensation intermédiaire d’émission est admise dans le flux normal. La compensation de fin s’emploie dans n’importe quel processus ou sous-processus22.

L’activité à compenser peut être désignée par un activityRef. Sans cette désignation, la compensation est diffusée à toutes les activités achevées visibles depuis l’événement, dans l’ordre inverse de leurs flux de séquence4. Un second attribut, waitForCompletion, décide si l’événement intermédiaire d’émission attend la fin de la compensation déclenchée, ce qui est le comportement par défaut, ou s’il la déclenche et poursuit immédiatement22.

Une activité n’est compensable qu’à une condition: porter un événement de compensation à son bord, ou contenir un sous-processus événementiel de compensation4. Ce mécanisme complet appartient au chapitre suivant.

Le signal

Un signal est un déclencheur diffusé sans destinataire désigné: tout événement de capture qui porte le même signal le reçoit. Le standard le compare à une fusée de détresse tirée dans le ciel, que remarque et à laquelle réagit quiconque s’y intéresse3. Son marqueur est un triangle2.

Le signal est légal dans les quatre positions du tableau, plus le bord d’une activité7 et le début d’un sous-processus événementiel14. Face au message, le signal n’a pas de cible déterminée, de sorte que plusieurs processus peuvent porter des événements de début déclenchés par le même signal diffusé2. Face à l’erreur, le signal désigne une condition générale et non erronée pour interrompre des activités, l’achèvement d’une autre activité par exemple, avec une portée plus large que celle de l’erreur3.

Silver ajoute deux mises en garde de méthode. Attacher un flux de message à un événement de signal est incorrect, le lien entre l’émetteur et le récepteur n’étant suggéré que par la concordance des étiquettes23. Et le signal se réserve aux cas où le message, l’erreur ou l’escalade ne conviennent pas, parce que la moitié d’une paire de signaux se trouve souvent hors du modèle23.

Le multiple

Un événement multiple porte plus d’une EventDefinition9. Son marqueur est un pentagone2.

Le sens dépend de la position24. En événement de début, il existe plusieurs façons de démarrer le processus, une seule suffit. En événement de fin, il y a plusieurs conséquences à l’achèvement, toutes se produisent. En événement intermédiaire de capture, un seul déclencheur suffit; en émission, tous les résultats sont émis. Au bord d’une activité, un seul déclencheur suffit.

Les événements qui transportent des données, dont le multiple, obéissent à une contrainte d’appariement: il doit y avoir une entrée de données par EventDefinition pour un événement d’émission, une sortie de données par EventDefinition pour un événement de capture, l’ordre des EventDefinition et celui des entrées ou sorties décidant des correspondances1.

Silver rappelle que le multiple est une forme distincte sans être un élément sémantique distinct. Il demande que l’étiquette énumère les conditions de déclenchement possibles25. Il oppose deux constructions: le multiple s’emploie quand tous les déclencheurs ouvrent le même chemin, et plusieurs événements de début simples s’emploient quand chaque déclencheur en ouvre un différent25.

Le multiple parallèle (parallel multiple)

Le multiple parallèle porte lui aussi plusieurs EventDefinition, avec l’exigence que toutes se produisent9. L’attribut parallelMultiple doit valoir true24. Le marqueur est un signe plus évidé2.

Il n’existe qu’en capture: événement de début, événement intermédiaire de capture, bord d’une activité24, ce qui le sépare du multiple ordinaire.

Silver le situe: ajouté pendant la phase de finalisation de BPMN 2.0, très rarement employé, absent des deux palettes de sa méthode25.

La terminaison (terminate)

La terminaison est le seul déclencheur qui n’existe qu’en événement de fin4. Son EventDefinition ne porte aucun attribut supplémentaire9.

L’atteindre ordonne l’arrêt immédiat de toutes les activités du processus, instances multiples comprises, sans compensation ni traitement d’événement4. La portée de cet arrêt est le niveau où l’événement se trouve: déclenchée depuis un sous-processus, la terminaison n’abolit que ce sous-processus, la propagation ne se faisant que vers le bas26.

Le marqueur est un disque plein26.

Dumas et ses coauteurs en donnent l’usage caractéristique: interrompre le processus en évitant qu’un jeton reste piégé devant une synchronisation que plus rien n’atteindra26. Silver resserre: réserver la terminaison au cas où sa sémantique est réellement nécessaire, c’est-à-dire une exception sur l’un des chemins parallèles d’un niveau de processus, plutôt que d’en faire la marque de tout état final d’exception27.

Les déclencheurs et les classes de conformité

Le standard définit deux sous-classes de conformité, qui sélectionnent une partie des treize déclencheurs.

Sa sous-classe descriptive, la plus restreinte des deux, n’admet parmi les événements que l’événement de début et l’événement de fin neutres, l’événement de début et l’événement de fin de message, l’événement de début de minuterie et l’événement de fin de terminaison28. Quatre déclencheurs, l’absence de marqueur comprise, dans deux positions: la descriptive ne contient aucun événement intermédiaire28.

La sous-classe analytique contient toute la descriptive et ouvre les positions intermédiaires28. Cinq déclencheurs s’y ajoutent, le lien, le signal, l’erreur, l’escalade et la condition, ce qui porte le total à neuf. Le message et la minuterie y gagnent leurs formes intermédiaires et de bord, les cinq nouveaux venus entrant chacun dans une sélection de positions que le tableau 2.2 énumère ligne à ligne28. L’annulation, la compensation, le multiple et le multiple parallèle ne figurent dans aucune des deux sous-classes.

Ces sous-classes contraignent d’abord les outils: le standard énonce les critères qu’un outil doit satisfaire pour revendiquer la prise en charge d’une sous-classe28. Silver franchit le pas et en tire un conseil de modélisation, avec un sous-ensemble encore plus petit: la minuterie, le message et l’erreur sont selon lui les trois types à connaître réellement, et ils forment un ensemble restreint et facile à apprendre29. Le chapitre sur les niveaux de modélisation reprend cette question.

Traiter une commandeDiagramme BPMN 2.0 : Traiter une commande. smartgecko.academyCommande reçueVérifier lacommandePaiementconfirméPréparerl’expéditionLe lendemain à8hRemettre autransporteurClient notifiésmartgecko.academy
Quatre événements déclenchés sur une seule ligne: le processus démarre sur un message, attend un message, attend une échéance, puis se termine en envoyant un message.

Cette figure tient dans la sous-classe analytique.

Le chapitre suivant

. L'événement rattaché à la bordure d'une activité BPMN: trait continu et trait interrompu, le sous-processus événementiel et le mécanisme de compensation.

Notes et références


  1. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5 « Events »: la définition de l’événement, les trois types principaux selon la position, et la distinction entre les événements qui capturent un déclencheur et ceux qui émettent un résultat. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.2 « Start Event »: le trait fin, la forme commune aux trois positions, les sept types de déclencheur de début pour un processus de premier niveau (tableau 10.84) avec la description en toutes lettres des marqueurs enveloppe, horloge, papier ligné, triangle, pentagone et signe plus, la multiplicité des événements de début, l’attribut isInterrupting (tableau 10.87), les exceptions à la règle d’instanciation, et les règles de connexion des flux de message. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  3. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.4 « Intermediate Event »: le double trait fin, les douze types d’événement intermédiaire, les dix admis dans le flux normal (tableau 10.89) avec le remplissage du marqueur, le comportement du jeton à l’émission et à la capture, l’exclusion de l’annulation et de l’erreur du flux normal, le flux non contrôlé en cas de flux entrants multiples, les règles d’appariement des liens, et les règles de connexion des flux de message. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  4. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.3 « End Event »: le trait épais, les neuf types de résultat (tableau 10.88) avec le comportement de l’erreur, de l’escalade, de l’annulation, de la compensation, du signal, de la terminaison et du multiple, la multiplicité des événements de fin, et la règle liant le résultat aux flux de message sortants. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  5. Bruce Silver, BPMN Method and Style, 2e édition, règle de méthode: un événement de fin distinct par état final distinct d’un niveau de processus. ↩︎

  6. Marlon Dumas, Marcello La Rosa, Jan Mendling et Hajo A. Reijers, Fundamentals of Business Process Management, 2e édition, Springer, 2018, §4.2: le jeton piégé dans le flux entrant d’un événement intermédiaire, le caractère instantané de l’événement, et le remplacement des activités qui ne font qu’envoyer ou recevoir par des événements de message. Le §4.2.2 s’intitule « Temporal Events » et range la minuterie sous ce nom. ↩︎ ↩︎ ↩︎

  7. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.4 « Intermediate Event », tableaux 10.90 à 10.92: le trait continu de l’événement interruptif face au trait interrompu du non interruptif, l’attribut cancelActivity et ses valeurs possibles déclencheur par déclencheur, l’erreur et l’annulation toujours interruptives, la compensation hors du choix. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  8. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.1 « Concepts »: les cinq stratégies d’acheminement d’un déclencheur, la différence entre message et signal quant au pool d’origine, l’émission implicite de la minuterie et de la condition, la propagation critique de l’erreur face à l’escalade non critique, et le ciblage de la terminaison, de la compensation et de l’annulation. La même clause porte les tableaux 10.82 et 10.83 des attributs communs aux événements de capture et d’émission, ainsi que la sous-clause « Data Modeling and Events », d’où vient la contrainte d’appariement entre EventDefinition et entrées ou sorties de données. direct resolution n’apparaît que dans l’énumération des cinq stratégies, sans définition ailleurs dans le document. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  9. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.5 « Event Definitions »: la liste des dix EventDefinition, l’événement neutre défini par l’absence de définition et l’événement multiple par la présence de plusieurs, les trois variantes de l’événement neutre avec leurs positions, l’expression d’un événement conditionnel, la charge utile de l’erreur et de l’escalade, le nom obligatoire du lien, et l’absence d’attribut supplémentaire pour l’annulation et la terminaison. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  10. Bruce Silver, BPMN Method and Style, 2e édition: un sous-processus démarre sur un événement de début neutre, et plusieurs chemins parallèles se terminant sur des événements de fin neutres gagnent à être réunis sur un seul, la jonction étant implicite. ↩︎ ↩︎

  11. Bruce Silver, BPMN Method and Style, 2e édition: la tâche de réception et l’événement intermédiaire de message en capture ont le même sens, avec une différence, qu’un événement de bord de minuterie se rattache à la tâche et non à l’événement. ↩︎

  12. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.5 « Event Definitions », tableau 10.101: timeDate, timeCycle et timeDuration, au format ISO-8601, mutuellement exclusifs lorsque l’attribut isExecutable du processus vaut true↩︎

  13. Bruce Silver, BPMN Method and Style, 2e édition: l’événement intermédiaire de minuterie représente un délai, et la durée ou l’échéance s’écrit dans l’étiquette puisque les attributs ne sont pas visibles dans le diagramme. ↩︎ ↩︎

  14. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.2 « Start Event », tableau 10.86 « Event Sub-Process Start Event Types »: les neuf déclencheurs admis, la restriction de l’escalade de début au sous-processus événementiel en ligne, et la description des marqueurs pointe de flèche pour l’escalade, éclair pour l’erreur et double triangle pour la compensation. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  15. Bruce Silver, BPMN Method and Style, 2e édition: l’escalade est la contrepartie non interruptive de l’erreur, avec le même mécanisme d’émission et de capture, et elle reste peu prise en charge par les outils. ↩︎ ↩︎

  16. Bruce Silver, BPMN Method and Style, 2e édition: l’événement conditionnel désigne une condition de données surveillée en continu, un signal ou un message décrivant souvent le même comportement selon qui surveille la donnée. ↩︎

  17. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.5 « Event Definitions », sous-clause « Link Event Definition »: le raccordement de deux portions d’un même processus, la limitation à un seul niveau, le connecteur de page, l’objet de renvoi et l’écriture d’une boucle sans flux de séquence remontant. ↩︎ ↩︎ ↩︎ ↩︎

  18. Bruce Silver, BPMN Method and Style, 2e édition: la paire de liens est une aide au dessin, raccourci visuel d’un flux de séquence, employable partout où un flux de séquence le serait. ↩︎

  19. Marlon Dumas, Marcello La Rosa, Jan Mendling et Hajo A. Reijers, Fundamentals of Business Process Management, 2e édition, Springer, 2018, §4.3.2: l’événement de fin d’erreur qui interrompt le sous-processus englobant, l’événement de bord qui capture l’exception, et le flux d’exception qui porte la procédure de rétablissement. ↩︎

  20. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.5 « Event Definitions », sous-clause « Cancel Event »: les deux variantes, le rattachement au seul bord d’un sous-processus de transaction et l’emploi de l’événement de fin au seul intérieur d’un tel sous-processus. ↩︎ ↩︎ ↩︎ ↩︎

  21. Bruce Silver, BPMN Method and Style, 2e édition: l’annulation, marquée d’une croix, est une forme particulière de l’erreur réservée aux sous-processus de transaction, employée quand la cause de l’échec est intérieure à la transaction. ↩︎ ↩︎

  22. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.5 « Event Definitions », sous-clause « Compensation Event » et tableau 10.94: les quatre variantes avec leurs positions autorisées, l’attribut activityRef et l’attribut waitForCompletion↩︎ ↩︎ ↩︎

  23. Bruce Silver, BPMN Method and Style, 2e édition: un flux de message ne se rattache pas à un événement de signal, la correspondance entre émetteur et récepteur passant par les étiquettes, et le signal se réserve aux cas où le message, l’erreur ou l’escalade ne conviennent pas. ↩︎ ↩︎

  24. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §10.5.5 « Event Definitions », sous-clauses « Multiple Event » et « Parallel Multiple Event »: le sens du multiple position par position, et l’exigence que tous les déclencheurs se produisent pour le multiple parallèle avec l’attribut parallelMultiple à true↩︎ ↩︎ ↩︎

  25. Bruce Silver, BPMN Method and Style, 2e édition: le multiple est une forme distincte sans être un élément sémantique distinct, son étiquette énumère les déclencheurs possibles, plusieurs événements de début simples s’emploient quand chaque déclencheur ouvre un chemin différent, et le multiple parallèle reste très rarement employé. ↩︎ ↩︎ ↩︎

  26. Marlon Dumas, Marcello La Rosa, Jan Mendling et Hajo A. Reijers, Fundamentals of Business Process Management, 2e édition, Springer, 2018, §4.3.1: le disque plein de l’événement de terminaison, la propagation vers le bas de la hiérarchie seulement, et l’emploi typique pour éviter qu’un jeton reste piégé devant une jonction. ↩︎ ↩︎ ↩︎

  27. Bruce Silver, BPMN Method and Style, 2e édition: réserver la terminaison au cas où sa sémantique est nécessaire, une exception sur l’un des chemins parallèles d’un niveau de processus. ↩︎

  28. OMG, Business Process Model and Notation (BPMN), version 2.0.2, §2.2.2 « BPMN Process Elements », tableau 2.1 « Descriptive Conformance Sub-Class Elements and Attributes » et tableau 2.2 « Analytic Conformance Sub-Class Elements and Attributes », ainsi que les critères qu’un outil doit satisfaire pour revendiquer une sous-classe. §2.2.1 « BPMN Process Types » établit que la sous-classe analytique contient toute la descriptive. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  29. Bruce Silver, BPMN Method and Style, 2e édition: la minuterie, le message et l’erreur sont les trois types d’événement qu’il faut réellement connaître, un sous-ensemble restreint et facile à apprendre; il traite les autres ensuite. ↩︎

BPMN: les sous-processus
Toute la référence
BPMN: les événements de bord et la compensation