Archyno
BPMNRéférence de notation

Les passerelles BPMN

Des losanges, et la marque à l'intérieur de chacun. Une passerelle ne fait jamais de travail : elle décide seulement combien des chemins sortants portent un jeton, ce qui se trouve être le véritable sujet de toute dispute sur un processus.

14 min de lectureBPMN 2.03 sur 7

La réponse courte

  • Une passerelle ne fait aucun travail. C'est la seule chose en BPMN qui change le nombre de jetons vivants, et tout le reste en découle.
  • Exclusive prend exactement un chemin sortant, parallèle les prend tous sans condition, inclusive prend chaque chemin dont la condition est vraie.
  • Une passerelle basée sur événement ne décide rien : elle attend, et le premier événement déclenché l'emporte tandis que les autres sont abandonnés.
  • À chaque divergence correspond une convergence de même type. Inclusive divergente vers parallèle convergente : blocage. Parallèle divergente vers exclusive convergente : tout ce qui suit s'exécute deux fois.
Un processus BPMN utilisant des passerelles. Après un événement de début sinistre reçu, une passerelle parallèle se divise en une tâche vérifier la police et une tâche vérifier la fraude. Une seconde passerelle parallèle les rejoint, puis une passerelle exclusive étiquetée couvert se divise en une tâche régler sur la branche oui et une tâche refuser sur la branche non.
Deux types de passerelle. Le plus divise en chemins qui s'exécutent tous, et le plus correspondant attend les deux ; la croix choisit exactement une branche et il n'y a ensuite rien à attendre.

01Une passerelle est une règle sur les jetons#

Le modèle d'exécution de BPMN est un jeton qui traverse le diagramme. La passerelle est la seule chose qui change le nombre de jetons : une division peut transformer un jeton en plusieurs, une convergence peut les ramener à un. Tout le reste en découle.

Une note sur le nom. La spécification dit passerelle (gateway) ; la plupart des gens disent porte et cherchent des portes. C'est la même chose, et le losange est le même losange - mais c'est passerelle qu'il faut mettre dans un titre de diagramme, car c'est le mot que liront tous les outils BPMN et tous les relecteurs.

Deux conséquences à retenir. D'abord, une passerelle ne fait aucun travail - elle évalue des conditions déjà calculées, et si vous voulez vérifier quelque chose, c'est une tâche avant la passerelle. Ensuite, une division a généralement besoin d'une convergence du même type, car ce qui a créé des jetons supplémentaires doit les réunir, faute de quoi ils courent séparément jusqu'à la fin.

02Les cinq types#

ÉlémentNotationCe que cela signifie
Exclusive (XOR)losange avec un X, ou videExactement un chemin sortant est pris. Les conditions sont évaluées dans l'ordre et la première vraie l'emporte. Le choix par défaut, et celui vers lequel se tourner en premier.
Parallèle (AND)losange avec un +Tous les chemins sortants sont pris, sans aucune condition. En convergence, elle attend chaque chemin entrant avant de continuer.
Inclusive (OR)losange avec un cercleChaque chemin dont la condition est vraie est pris - un, plusieurs ou tous. En convergence, elle attend exactement les chemins activés, ce qui est plus subtil qu'il n'y paraît et d'où viennent les interblocages.
À base d'événementspentagone dans un double cercleElle ne décide pas - elle attend. Le chemin dont l'événement survient en premier est pris et les autres sont abandonnés.
Complexelosange avec un astérisqueUne porte de secours pour les règles que les quatre autres n'expriment pas - « continuer quand trois des cinq approbations sont là ». Rare, et généralement le signe que le processus demande à être restructuré.

03Diviser, converger et joindre#

Le même symbole fait les deux, et lequel dépend seulement du nombre de flux sortants ou entrants. Une passerelle avec une entrée et trois sorties divise ; trois entrées et une sortie convergent.

Le vocabulaire mérite d'être fixé, car trois mots servent pour le cas convergent. Une passerelle parallèle convergente est une jointure : elle attend chaque branche. Une passerelle exclusive convergente est une fusion : elle n'attend rien et laisse passer chaque jeton. Les deux se dessinent comme le même losange qu'à la division, et appeler jointure une fusion est la façon dont un diagramme finit par affirmer terminé un travail qui n'a jamais tourné.

ÉlémentNotationCe que cela signifie
Fusion exclusiveplusieurs entrées, une sortieLaisse passer chaque jeton dès son arrivée. Elle n'attend pas, puisque une seule branche a de toute façon été prise.
Jointure parallèle (AND-join)plusieurs entrées, une sortieAttend chaque chemin entrant, puis émet un jeton. C'est elle qui bloque, et elle devrait bloquer volontairement. C'est la construction que l'on désigne habituellement par jointure en BPMN.
Fusion inclusiveplusieurs entrées, une sortieAttend exactement les branches activées en amont. Exige que le moteur raisonne sur tout le processus, et c'est la construction dont le comportement varie le plus d'un outil à l'autre.
Passerelle mixteplusieurs entrées, plusieurs sortiesLégal. Illisible. Divisez avec une passerelle et convergez avec une autre, et le diagramme vous dira lui-même ce qu'il fait.

04Compter les jetons dans le diagramme ci-dessus#

Tout ce qui précède est une seule compétence : posez le doigt sur l'événement de début et comptez. Voici le processus de sinistre en tête de page, parcouru pas à pas, avec le nombre de jetons vivants après chaque étape.

  1. « Claim received » survient. Un jeton. Il est sur le flux vers la première passerelle.
  2. La division parallèle. Deux jetons. Aucune condition n'est évaluée et rien n'est choisi - une division parallèle émet toujours un jeton par flux sortant.
  3. Vérification de police et de fraude en cours. Toujours deux. Elles sont réellement concurrentes : le diagramme n'affirme rien sur celle qui finit en premier, et n'en a pas besoin.
  4. La jointure parallèle. Retour à un. Le jeton arrivé en premier y attend. À l'arrivée du second, la jointure consomme les deux et en émet un.
  5. « Covered ? » Un jeton, une branche. Une passerelle exclusive ne change jamais le compte - seulement le flux sur lequel se trouve le jeton.
  6. Indemniser ou refuser, puis la fin. Zéro. L'instance de processus est terminée quand le dernier jeton est consommé par un événement de fin.

Cassez-le maintenant délibérément, car les deux bugs classiques se voient au seul comptage.

Rendez la première passerelle exclusive et laissez la jointure parallèle. La division émet désormais un jeton, donc une seule vérification tourne. La jointure parallèle en attend toujours deux. Rien n'arrive jamais sur le second flux, et le sinistre reste dans la jointure pour la durée de vie du système. C'est l'interblocage, et il aura coûté un marqueur changé.

Laissez la division parallèle et rendez la jointure exclusive. Deux jetons arrivent et une fusion exclusive n'attend rien : les deux passent directement. « Covered ? » est évalué deux fois, la tâche d'indemnisation tourne deux fois, et le client est payé deux fois. C'est pire que l'interblocage, car un interblocage s'annonce et un double paiement non.

05La passerelle à base d'événements#

Une passerelle événementielle. Après une tâche demander les documents, une passerelle événementielle mène à deux événements récepteurs : un événement de message documents reçus et une minuterie de quatorze jours. Le chemin du message continue vers une tâche évaluer le sinistre ; celui de la minuterie vers une tâche clore comme incomplet.
Rien n'est décidé ici. La passerelle attend, les deux événements font la course, et celui qui survient en premier prend son chemin tandis que l'autre est abandonné.

C'est la construction qui rend « on attend les documents, mais pas éternellement » exprimable en une seule image. Toute autre façon de le dessiner - un événement temporisateur en bordure d'une tâche d'attente, une boucle avec condition - soit duplique la logique de délai, soit la cache.

Deux règles l'accompagnent. Les cibles d'une passerelle à base d'événements doivent être des événements intermédiaires de réception ou des tâches receive, jamais de simples tâches : la passerelle est une course entre des choses qui arrivent, et une tâche n'arrive pas. Et les branches doivent être réellement exclusives dans le temps, ce qu'elles sont automatiquement - la première survenue élimine les autres.

06Conditions et flux par défaut#

Les conditions vivent sur les flux de séquence sortants, pas sur la passerelle. Écrivez-les comme de courtes expressions qu'un lecteur peut évaluer - amount > 10000, policy status = active - et placez-les sur la ligne près de la passerelle plutôt que près de la cible.

Exactement une branche d'une passerelle divergente devrait être le flux par défaut, tracé avec une petite barre sur sa base. Il est pris quand aucune autre condition ne tient, et c'est lui qui empêche un processus de caler sur une passerelle où les données se sont révélées être quelque chose que personne n'avait prévu.

À utiliser quand

  • Exclusive quand un seul chemin s'applique - la plupart du temps
  • Parallèle quand les deux chemins doivent tourner sans dépendre l'un de l'autre
  • À base d'événements quand le processus attend et que l'extérieur décide
  • Un flux par défaut sur chaque passerelle divergente exclusive ou inclusive

Préférer autre chose quand

  • Inclusive là où exclusive suffirait - cela coûte en clarté et ajoute un risque d'interblocage
  • Complexe, presque toujours - restructurez plutôt
  • Une passerelle juste après une passerelle sans rien entre elles
  • Des conditions écrites en paragraphes de prose sur l'étiquette du flux

07Quand la réponse n'est pas une passerelle du tout#

Qui vient d'apprendre les passerelles y recourt pour toutes les bifurcations du monde, et le résultat est un diagramme composé à 40 % de losanges. Quatre autres constructions BPMN expriment mieux une décision dans les cas ci-dessous, et les connaître fait l'essentiel de la différence entre un modèle de processus qui tient sur une page et un qui n'y tient pas.

ÉlémentNotationCe que cela signifie
Flux de séquence conditionnelun petit losange à la base d'un fluxUne condition écrite directement sur un flux quittant une tâche, sans passerelle. Juste pour une étape optionnelle - « envoyer un reçu si le client en a demandé un » - et faux dès qu'il y en a deux, car il n'y a nulle part où mettre un défaut et rien n'empêche les deux de se déclencher.
Événement de bordureun cercle sur le bord d'une tâchePour ce qui interrompt un travail déjà en cours : un délai, une erreur, une annulation. Une passerelle ne peut poser sa question qu'entre deux tâches, donc modéliser « si cela échoue à mi-parcours » avec une passerelle revient à inventer une boucle d'interrogation qui n'existe pas.
Sous-processus événementielun rectangle arrondi en pointillésPour ce qui peut survenir à tout moment plutôt qu'à un endroit connu - le client annule, le régulateur réclame le dossier. Dessiner cela avec des passerelles signifie une passerelle après chaque tâche.
Tâche de règle métierune tâche avec un marqueur de tableQuand la décision, c'est quarante règles et non une question. Une tâche pointant vers une table de décision dit « ce sont les règles tarifaires qui décident » et laisse les règles là où elles peuvent changer sans redessiner le processus.

Quatre façons d'exprimer une décision qui ne sont pas un losange. Chacune garde hors du diagramme quelque chose qu'une passerelle y aurait traîné.

Le test est de savoir si la bifurcation fait partie du processus ou d'une décision. Un sinistre qui part en traitement accéléré ou en revue manuelle est du processus : les deux chemins diffèrent et un lecteur doit voir les deux. Savoir dans laquelle des neuf bandes de risque il tombe est une décision : les chemins sont ensuite identiques, et le mettre sur le diagramme coûte huit losanges pour dire une chose. Voyez comment dessiner un diagramme BPMN pour savoir où cette limite se situe en pratique.

08Erreurs courantes#

  1. Division parallèle, fusion exclusive. La division a fait deux jetons ; la fusion exclusive les laisse passer tous les deux, et tout ce qui suit arrive deux fois.
  2. Division inclusive, jointure parallèle. L'interblocage ci-dessus. Faites correspondre vos passerelles.
  3. Du travail dans la passerelle. Un losange intitulé « Valider et router » est une tâche et une passerelle sous un seul contour. Séparez-les.
  4. Branches non étiquetées. Deux lignes quittant un losange sans rien d'écrit obligent le lecteur à deviner, et la moitié devinera mal.
  5. Pas de flux par défaut. La seule entrée à laquelle personne n'a pensé arrive, et le jeton n'a nulle part où aller.
  6. Des tâches simples après une passerelle à base d'événements. Ce n'est pas légal, et cela signifie généralement qu'une passerelle exclusive était voulue.

Les passerelles et les événements sont les deux moitiés du contrôle de flux en BPMN : les passerelles décident, les événements attendent et interrompent. Un processus modélisé avec les seules passerelles tend à grossir en longues chaînes d'interrogation ; celui qui utilise les événements de bordure là où il le devrait reste bien plus proche de ce qui se passe vraiment.

En une ligne chacun

  1. 01Une passerelle change le nombre de jetons existants et ne fait aucun travail elle-même.
  2. 02Exclusive prend un chemin, parallèle les prend tous, inclusive prend les vrais.
  3. 03La passerelle à base d'événements ne décide pas - elle fait courir des événements de réception.
  4. 04Faites correspondre chaque division à une convergence du même type.
  5. 05Division inclusive vers une jointure parallèle : l'interblocage classique.
  6. 06Nommez la passerelle comme une question et étiquetez chaque branche d'une réponse.

09Questions fréquentes#

Quelle différence entre une passerelle exclusive et inclusive ?

Une passerelle exclusive, marquée d'un X, emprunte exactement un chemin sortant. Une passerelle inclusive, marquée d'un cercle, évalue chaque condition sortante et emprunte toutes celles qui sont vraies, soit une, plusieurs ou toutes.

Que fait une passerelle parallèle ?

Une passerelle parallèle, marquée d'un plus, emprunte tous les chemins sortants sans condition, puisqu'elle n'a rien à évaluer. Utilisée en fusion, elle attend un jeton sur chaque chemin entrant avant de continuer : c'est ainsi que l'on modélise quand toutes les branches sont terminées.

Qu'est-ce qu'une passerelle basée sur événement ?

Une passerelle dont chaque chemin sortant commence par un événement intermédiaire de réception, le premier événement survenu décidant du chemin emprunté. C'est ainsi que l'on modélise une course, par exemple une réponse ou un délai dépassé, selon ce qui arrive en premier.

Pourquoi une passerelle inclusive se bloque-t-elle ?

Parce qu'une fusion inclusive attend exactement les branches que sa division correspondante a activées, et elle ne peut savoir lesquelles que si les deux sont bien appariées. Divisez avec une passerelle inclusive et fusionnez avec une parallèle : la fusion attendra pour toujours une branche qui n'a jamais tourné.

Les passerelles BPMN font-elles du travail ?

Non. Une passerelle ne fait que router des jetons : elle n'exécute jamais d'activité et ne prend jamais de temps. Ce qu'une passerelle semble décider a été calculé par l'activité qui la précède, et les conditions sur les flux sortants ne font que lire ce résultat.

Dans cette série

À lire aussi

Tous les articles