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.



Cette architecture est couramment utilisée dans les environnements microservices modernes.

👉 environnements microservices modernes


📌 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.

📚 Lecture recommandée


💼 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     



🎥 Learn IT with Shikha on YouTube

Prefer learning through videos? Watch practical tutorials on Kafka, Camunda, Alfresco, Java, Spring Boot, Microservices and Enterprise Architecture.

▶ Subscribe to Learn IT with Shikha on YouTube

Comments

Popular posts from this blog

Top 50 Camunda BPM Interview Questions and Answers for Developers (2026 Guide)

10 BPMN Best Practices Every Camunda Developer Should Know

OOPs Concepts in Java | English | Object Oriented Programming Explained