Les portées (Scopes) des signaux dans jBPM 7
💡 Introduction
Les signaux dans jBPM 7 sont essentiels pour créer des processus orientés événements et asynchrones.
Ils permettent de démarrer, reprendre ou coordonner plusieurs processus sans lien direct.
Mais la portée d’un signal détermine jusqu’où il se propage et qui peut le recevoir.
Dans ce guide, nous verrons les quatre portées disponibles dans jBPM 7 :
-
🔹 Portée Processus
-
🔹 Portée Défaut (Default)
-
🔹 Portée Externe
-
🔹 Portée Instance de projet
🧠 1️⃣ Qu’est-ce qu’un signal dans jBPM ?
Un signal est un événement nommé qui peut être émis (Throw) ou capté (Catch) pendant l’exécution d’un processus.
| Type d’événement | Description |
|---|---|
| Start Signal Event | Démarre un processus lorsqu’un signal est reçu |
| Intermediate Catch Signal Event | Attend la réception d’un signal |
| Intermediate Throw Signal Event | Envoie un signal à un autre processus |
| Boundary Signal Event | Interrompt ou poursuit un flux lors de la réception |
🧩 2️⃣ Vue d’ensemble des portées de signaux
| Portée | Visibilité | Direction de communication | Utilisation typique |
|---|---|---|---|
| Processus | Dans le même processus | Parent ↔ Sous-processus | Communication locale |
| Défaut (Default) | Dans le même conteneur KIE | Diffusion interne | Coordination inter-processus |
| Externe | Hors du conteneur actuel | Communication distante | Entre plusieurs serveurs |
| Instance de projet | Dans la même instance de déploiement | Version limitée | Communication entre versions identiques |
⚙️ 3️⃣ Portée Processus (locale)
📘 Définition
Un signal avec portée de processus reste limité à une seule instance de processus (ou à ses sous-processus).
Il n’est pas visible en dehors de ce flux.
📋 Cas d’usage
-
Communication entre un processus parent et un sous-processus.
-
Activation d’un sous-processus via un signal.
🖼️ Exemple – Portée Processus
💡 Seul ce processus (ou ses sous-processus) capte le signal.
🧩 4️⃣ Portée Défaut (Default)
📘 Définition
La portée par défaut permet de diffuser un signal à toutes les instances de processus dans le même conteneur KIE.
C’est la portée la plus utilisée pour la communication inter-processus.
📋 Cas d’usage
-
Un processus OrderProcess envoie un signal “OrderReady”
pour démarrer le processus InvoiceProcess du même projet.
🖼️ Exemple – Portée Défaut
💡 Le signal est reçu par tous les processus écoutant “OrderReady” dans le même déploiement.
🌍 5️⃣ Portée Externe
📘 Définition
La portée externe permet d’envoyer un signal en dehors du conteneur KIE actuel,
vers un autre serveur ou une autre application, via REST ou JMS.
📋 Cas d’usage
-
Le conteneur
finance-containersignale àlogistics-containerque le paiement est validé. -
Utilisé pour la communication inter-serveurs.
🖼️ Exemple – Portée Externe
💡 Un sous-processus d’événement (Event Subprocess) capture le signal externe envoyé depuis un autre système.
🧱 6️⃣ Portée Instance de projet
📘 Définition
La portée d’instance de projet limite la diffusion d’un signal aux processus appartenant au même déploiement (version).
Ainsi, si plusieurs versions du même projet sont déployées (1.0.0, 1.1.0), le signal ne touchera que celle correspondante.
📋 Cas d’usage
-
Plusieurs versions d’un même KJAR sont actives.
-
Vous voulez éviter que les signaux d’une version affectent une autre version.
🖼️ Exemple – Portée Instance de projet
💡 Les signaux circulent uniquement à l’intérieur de la version de projet correspondante.
🧮 7️⃣ Tableau comparatif des portées
| Portée | Visibilité | Communication | Niveau | Exemple |
|---|---|---|---|---|
| Processus | Instance unique | Locale | Processus | Parent ↔ Sous-processus |
| Défaut (Default) | Tous les processus du même conteneur | Diffusion interne | Conteneur | Order → Invoice |
| Externe | Autres serveurs | À distance | Global | Entre KIE Servers |
| Instance de projet | Même version déployée | Version isolée | Projet | Déploiement 1.0.0 uniquement |
💻 8️⃣ Exemples REST selon la portée
| Portée | Endpoint REST | Exemple |
|---|---|---|
| Processus | /server/containers/{id}/cases/instances/{pid}/signal/{signal} | Signal vers une seule instance |
| Défaut | /server/containers/{id}/signal/{signal} | Diffusion dans un conteneur |
| Externe | /server/signal/{signal} | Signal global entre serveurs |
| Instance de projet | /server/containers/{deployment}/signal/{signal} | Signal limité à un déploiement |
⚠️ 9️⃣ Erreurs fréquentes
| Problème | Cause | Solution |
|---|---|---|
| ❌ Signal non reçu | Nom incorrect ou portée mal définie | Vérifier le signalRef dans BPMN |
| 🔁 Déclenchement multiple | Plusieurs événements Start Signal identiques | Utiliser des noms uniques |
| 🚫 Signal ignoré | Mauvaise portée configurée | Vérifier la propriété scope |
| 🧩 Erreur REST 404 | Mauvais ID de conteneur | Vérifier le nom du déploiement |
🧠 🔟 Bonnes pratiques
✅ Utiliser Process Scope pour les communications internes.
✅ Employer Default Scope pour la coordination entre processus du même conteneur.
✅ Préférer Project Instance Scope quand plusieurs versions coexistent.
✅ Réserver External Scope pour les communications inter-serveurs.
✅ Harmoniser les noms de signaux (signalRef) entre tous les BPMN.
✅ Documenter chaque signal dans le projet.
👉 Regardez “Les portées des signaux dans jBPM 7” en action:
Démo en direct expliquant le comportement de chaque type de signal selon différentes portées.
👉 Code source: Branches · LearnITWithShikha/SignalsExamples
LearnITWithShikha/SignalsExamples at ExternalScopeExample
🏁 Conclusion
🎯 Les signaux dans jBPM 7 offrent une approche puissante pour orchestrer plusieurs processus de manière asynchrone et réactive.
💬 “Un bon signal, bien configuré, rend vos processus autonomes et synchronisés.”
En maîtrisant les quatre portées (Processus, Défaut, Externe, Instance de projet),
vous pouvez construire des systèmes BPM fiables, modulaires et évolutifs.
💼 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, 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


.png)
.png)

Comments
Post a Comment