Passerelle parallèle (ET)
Un losange avec un « + » qui fork le jeton sur tous les chemins sortants en même temps — et attend tous sur le join.
Ce que fait une passerelle parallèle
Une passerelle parallèle est un losange avec un marqueur « + ». Au fork : quand le jeton arrive, un nouveau jeton est émis sur *chaque* flux de séquence sortant, sans condition. Pas de branche conditionnelle ; parallèle signifie « tout ceci, sans choix ». Sur le join, la passerelle fait l'inverse : elle attend un jeton sur chaque flux entrant avant de laisser passer un jeton unique.
La parallèle est la passerelle la plus simple à exécuter mais l'une des plus délicates à concevoir. Les vrais processus métier ont rarement des chemins vraiment indépendants — la plupart des « parallèles » s'avèrent inclusifs (optionnels) ou exclusifs (l'un ou l'autre). Avant de modéliser quelque chose en parallèle, demandez-vous : « Ces chemins se déclenchent-ils *tous* systématiquement, sans exception ? » Si non, vous voulez probablement une inclusive.
Les véritables scénarios parallèles
- Effets de bord indépendants sans ordre imposé — « notifier le client ET mettre à jour l'entrepôt ET tracer dans l'audit trail » pour chaque commande, dans n'importe quel ordre.
- Optimisation des délais — exécuter deux vérifications indépendantes en parallèle pour réduire de moitié la durée écoulée quand chacune prise seule prendrait des jours.
- Traitement de données en éventail — sous-processus parallèles qui traitent chacun une dimension différente de la même entrée.
Les passerelles parallèles dans LucidFlow
LucidFlow n'utilise les passerelles parallèles qu'avec parcimonie — uniquement quand le document source décrit un travail véritablement concurrent et inconditionnel (« en parallèle on notifie le client et on expédie la commande »). Quand le document est ambigu (« on peut lancer KYC et AML en parallèle »), le générateur préfère une passerelle inclusive parce que « peut » implique l'optionalité. Vous pouvez passer à la parallèle manuellement une fois que vous avez confirmé que le processus fait toujours les deux.
Questions fréquentes
Une passerelle parallèle peut-elle avoir des conditions sur ses flux sortants ?
Non. Les conditions sur les flux sortants d'une passerelle parallèle sont ignorées par la spec. Si vous avez besoin d'un branchement conditionnel, utilisez une exclusive ou une inclusive. Parallèle signifie « tout, toujours ».
Je veux de l'exécution parallèle avec un join conditionnel — c'est possible ?
C'est le pattern classique : fork parallèle pour distribuer le travail, join inclusif pour n'attendre que les branches qui comptent, avec des conditions sur les flux entrants. BPMN 2.0 supporte cela via la sémantique des flux conditionnels sur le join.
Ai-je besoin d'une passerelle parallèle en sortie pour synchroniser ?
Oui — si le travail en aval dépend de la fin de tous les chemins forqués. Si les chemins forqués sont « fire and forget » (chacun menant à son propre événement de fin), aucun join n'est nécessaire.