BPMN Event Subprocess expliqué avec exemple réel

Dans un workflow BPMN, il arrive qu’un événement doive être traité sans casser le flux principal.

Exemples :

  • Un client annule une commande pendant l’approbation

  • Un paiement expire

  • Un SLA est dépassé

  • Une escalade urgente est déclenchée

Pour cela, on utilise un Event Subprocess.


📌 Qu’est-ce qu’un Event Subprocess ?

Un Event Subprocess est un sous-processus déclenché par un événement à l’intérieur d’une instance en cours d’exécution.

Il peut :

  • Interrompre le processus

  • Ou s’exécuter en parallèle

Il n’a pas besoin de séquence entrante.


🖼️ Diagramme Event Subprocess


🧠 Pourquoi pas un Boundary Event ?

Boundary Event → attaché à une tâche
Event Subprocess → attaché à tout le processus

Donc l’event subprocess écoute globalement.


🔥 Types d’Event Subprocess


1️⃣ Interrupting Event Subprocess

Lorsqu’il est déclenché :

👉 Le flux principal s’arrête

Utilisé pour :

  • Annulation de commande

  • Détection fraude

  • Arrêt d’urgence


2️⃣ Non-Interrupting Event Subprocess

Lorsqu’il est déclenché :

👉 Le flux principal continue
👉 Le sous-processus s’exécute en parallèle

Utilisé pour :

  • Notifications

  • Rappels

  • SLA

  • Logs


🖼️ Interrupting vs Non-Interrupting


🛠 Exemple réel – Traitement de commande

Processus principal :

Réception commande → Approbation → Expédition

Mais le client peut annuler à tout moment.

On ajoute :

Event Subprocess → Message CANCEL_ORDER


Comportement

Si le message arrive :

  • L’approbation s’arrête

  • L’expédition s’arrête

  • La commande passe en statut annulé


🧾 Exemple BPMN XML

<bpmn:subProcess id="cancelSubprocess" triggeredByEvent="true"> <bpmn:startEvent id="cancelEvent"> <bpmn:messageEventDefinition messageRef="CancelMessage"/> </bpmn:startEvent> <bpmn:scriptTask id="cancelOrder" name="Annuler la commande"/> </bpmn:subProcess>

🖼️ Scénario d’annulation


🛠 Exemple SLA (Non-Interrupting)

Cas :

Le manager n’approuve pas sous 24h.

Déclencheur : Timer Event

Résultat :

  • Email de rappel

  • Log d’escalade

  • Processus continue


⚠️ Erreurs fréquentes

❌ Utiliser boundary event pour annulation globale
❌ Confondre interrupting et non-interrupting
❌ Ajouter une séquence entrante

Un event subprocess ne doit pas avoir de flux entrant.


🔐 Bonnes pratiques

✔ Message events pour triggers externes
✔ Timer events pour SLA
✔ Sous-processus court
✔ Logique métier minimale


🎯 Conclusion

L’Event Subprocess permet de gérer :

  • Annulations

  • Timeouts

  • Escalades

  • Exceptions

Il rend les workflows réactifs aux événements réels.

💼 Support professionnel disponible

Si vous rencontrez des problèmes sur des projets réels liés au développement backend d’entreprise ou à l’automatisation des workflows, je propose des services de conseil payants, de débogage en production, de support projet et de formations ciblées.

Les technologies couvertes incluent Java, Spring Boot, PL/SQL, Azure, CMS, ainsi que l’automatisation des workflows (jBPM, Camunda BPM, RHPAM).

📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com

🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium     



Comments

Popular posts from this blog

Scopes of Signal in jBPM

OOPs Concepts in Java | English | Object Oriented Programming Explained

jBPM Installation Guide: Step by Step Setup