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énementDescription
Start Signal EventDémarre un processus lorsqu’un signal est reçu
Intermediate Catch Signal EventAttend la réception d’un signal
Intermediate Throw Signal EventEnvoie un signal à un autre processus
Boundary Signal EventInterrompt ou poursuit un flux lors de la réception

🧩 2️⃣ Vue d’ensemble des portées de signaux

PortéeVisibilitéDirection de communicationUtilisation typique
ProcessusDans le même processusParent ↔ Sous-processusCommunication locale
Défaut (Default)Dans le même conteneur KIEDiffusion interneCoordination inter-processus
ExterneHors du conteneur actuelCommunication distanteEntre plusieurs serveurs
Instance de projetDans la même instance de déploiementVersion limitéeCommunication 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-container signale à logistics-container que 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éeVisibilitéCommunicationNiveauExemple
ProcessusInstance uniqueLocaleProcessusParent ↔ Sous-processus
Défaut (Default)Tous les processus du même conteneurDiffusion interneConteneurOrder → Invoice
ExterneAutres serveursÀ distanceGlobalEntre KIE Servers
Instance de projetMême version déployéeVersion isoléeProjetDéploiement 1.0.0 uniquement

💻 8️⃣ Exemples REST selon la portée

PortéeEndpoint RESTExemple
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èmeCauseSolution
❌ Signal non reçuNom incorrect ou portée mal définieVérifier le signalRef dans BPMN
🔁 Déclenchement multiplePlusieurs événements Start Signal identiquesUtiliser des noms uniques
🚫 Signal ignoréMauvaise portée configuréeVérifier la propriété scope
🧩 Erreur REST 404Mauvais ID de conteneurVé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     


Comments

Popular posts from this blog

jBPM Installation Guide: Step by Step Setup

Scopes of Signal in jBPM

OOPs Concepts in Java | English | Object Oriented Programming Explained