DMN (Decision Model and Notation) dans jBPM

 💡 Introduction

Dans les processus métier modernes, de nombreuses décisions reposent sur des règles : approbations, calculs de risque, évaluations d’éligibilité ou tarifications dynamiques.

Au lieu d’écrire ces règles directement dans le code Java, ⚙️ jBPM permet de les gérer de manière visuelle et indépendante grâce à 📊 DMN (Decision Model and Notation).

Cette approche sépare la logique de processus (BPMN) de la logique de décision (DMN) — pour une automatisation plus flexible, maintenable et orientée métier.


🧩 1️⃣ Qu’est-ce que DMN ?

DMN signifie Decision Model and Notation, une norme de l’OMG (Object Management Group).

Elle permet de modéliser les règles métiers et les décisions sous forme de tables de décision (Decision Tables) au lieu de les coder manuellement.

En résumé :

BPMN définit comment le processus s’exécute.
DMN définit quelle décision doit être prise.


⚙️ 2️⃣ DMN dans l’écosystème jBPM

jBPM s’intègre nativement avec le moteur Drools DMN, ce qui permet :

  • de créer vos décisions dans un modèle DMN,

  • de les déployer dans un projet KIE,

  • et de les exécuter depuis un processus BPMN ou une API Java.

📦 Structure type d’un projet :

src/main/resources/ ├── processes/ │ └── MonProcessus.bpmn ├── decisions/ │ └── DecisionTable.dmn └── META-INF/ └── kie-deployment-descriptor.xml

🧱 3️⃣ Structure d’un modèle DMN

Un modèle DMN contient généralement :

  • 🧾 Input Data — les données d’entrée nécessaires

  • ⚙️ Decision Table — la logique des règles

  • 🧮 Expressions FEEL (Friendly Enough Expression Language) — pour les conditions et calculs

Exemple : Table de décision pour une demande de prêt

Âge du demandeurRevenuRésultat
< 18-"Rejeté"
>= 18 et < 60>= 50000"Approuvé"
>= 18 et < 60< 50000"Révision"
>= 60-"Revue Senior"

🧠 4️⃣ Créer un modèle DMN dans Business Central

1️⃣ Allez dans Design → Create → DMN Model
2️⃣ Définissez vos données d’entrée (ex. AgeDemandeur, Revenu)
3️⃣ Ajoutez un nœud Decision Table
4️⃣ Renseignez les règles comme ci-dessus
5️⃣ Déployez le projet

🎯 Variable de sortie → DecisionResult


🔗 5️⃣ Intégrer DMN à un processus BPMN

Vous pouvez exécuter un modèle DMN directement depuis un processus BPMN.

➡️ Dans le concepteur BPMN :

  1. Ajoutez une tâche Business Rule

  2. Sélectionnez le type d’implémentation : DMN

  3. Choisissez votre modèle DMN et le nom de la décision

  4. Mappez les variables d’entrée/sortie

🎬 Exemple de flux :

Start → Tâche Utilisateur (Collecte de données)Tâche Règle Métier (Évaluation DMN)Tâche de Service (Résultat) → End

💻 6️⃣ Exécuter DMN depuis du code Java

KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.getKieClasspathContainer(); KieSession kSession = kContainer.newKieSession(); DMNRuntime dmnRuntime = KieRuntimeFactory.of(kSession).get(DMNRuntime.class); DMNModel model = dmnRuntime.getModel("http://example.com/dmn", "LoanApproval"); DMNContext context = dmnRuntime.newContext(); context.set("ApplicantAge", 30); context.set("Income", 60000); DMNResult result = dmnRuntime.evaluateAll(model, context); System.out.println("Décision : " + result.getContext().get("DecisionResult"));

Sortie console :

Décision : Approuvé

🧩 7️⃣ Utiliser FEEL dans DMN

Le langage FEEL (Friendly Enough Expression Language) est utilisé pour les expressions et conditions dans les tables DMN.

Exemples :

Revenu > 50000 AgeDemandeur in [18..60] if Revenu < 30000 then "Rejeté" else "Approuvé"

Vérification de null :

if Revenu = null then "Données manquantes"

📈 8️⃣ Cas d’utilisation réels

✔️ Approbation de crédit ou de prêt
✔️ Gestion des sinistres d’assurance
✔️ Calculs de tarification dynamique
✔️ Détection de fraude et évaluation de risque
✔️ Validation d’éligibilité en RH ou santé

DMN permet aux analystes métier de mettre à jour les règles sans modifier le code Java.


🧩 9️⃣ Combinaison BPMN + DMN

La vraie puissance vient de leur combinaison :

ComposantRôle
BPMN ProcessusDéfinit le flux métier
DMN ModèleDéfinit les règles de décision
Business Rule TaskFait le lien entre les deux

🚀 Exemple :
Le processus collecte les données → les envoie à DMN → DMN renvoie le résultat → BPMN oriente le flux selon la décision.


🧰 10️⃣ Tester votre modèle DMN

Dans Business Central, vous pouvez :

  • Utiliser l’outil Test Scenarios

  • Fournir différentes valeurs d’entrée

  • Visualiser les résultats directement

En Java, il suffit de modifier le contexte (DMNContext) et d’observer les sorties.


🧩 11️⃣ Exemple d’arborescence projet

MonProjet/ ├── src/main/resources │ ├── process.bpmn │ └── decision.dmn ├── pom.xml └── target/

🧠 12️⃣ Avantages de DMN avec jBPM

FonctionnalitéAvantage
🧾 Règles visuellesLisibles par les analystes
⚙️ RéutilisablesPartageables entre processus
🔍 TransparentesPas de logique cachée
🔄 Faciles à maintenirModifiables sans recompilation
🔗 IntégréesFonctionnent nativement avec BPMN

👉 Regardez “Activer DMN dans jBPM” en action:

Voici une courte vidéo pour mieux comprendre l’intégration de DMN dans jBPM :🎬 YouTube: Learn IT with Shikha

🎬 YouTube: Learn IT with Shikha video 1


🎬 YouTube: Learn IT with Shikha video 2

👉 Code source LearnITWithShikha/DMNExamples

🏁 Conclusion

🎯 En intégrant DMN (Decision Model and Notation) avec jBPM, vous rendez vos processus plus intelligents et évolutifs.

Vos règles deviennent dynamiques, auditables et centralisées, permettant aux équipes techniques et métiers de collaborer efficacement.

💬 En résumé :
BPMN pilote le flux.
DMN pilote la décision.

💼 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