Camunda 7 DMN – Guide Complet avec Exemples (Tables de Décision, FEEL, Hit Policies)
DMN (Decision Model and Notation) est un standard puissant utilisé dans Camunda 7 pour automatiser les décisions métier à l’aide de tables de décision, du langage FEEL, et d’un moteur de décision performant.
Il permet de séparer clairement la logique métier de la logique de processus (BPMN) tout en rendant les règles plus lisibles pour les équipes fonctionnelles.
Ce guide explique comment créer, déployer et exécuter un modèle DMN complet dans Camunda 7 — via Modeler, Java, REST, et Spring Boot.
⭐ Qu’est-ce que le DMN ?
DMN est un langage standardisé destiné à :
✔ Externaliser les règles métier
✔ Simplifier les décisions complexes
✔ Rendre les règles compréhensibles par les utilisateurs métier
✔ Permettre l’automatisation via un moteur de décision
✔ Intégrer les décisions directement dans des workflows BPMN
Dans Camunda 7, le Decision Engine exécute les tables DMN et renvoie un résultat structuré.
1️⃣ Créer une Table de Décision dans Camunda Modeler
Une table DMN contient :
-
Des entrées (inputs)
-
Des règles
-
Un résultat (output)
-
Une hit policy
-
Des expressions FEEL
🎯 Exemple : Décision d'Approbation de Prêt
Inputs :
-
scoreCrédit
-
revenuMensuel
-
montantDemande
Table DMN :
| Score Crédit | Revenu | Montant | Résultat |
|---|---|---|---|
| > 700 | > 50000 | < 1 000 000 | APPROUVER |
| 600–700 | > 40000 | < 500000 | REVISION |
| < 600 | – | – | REJETER |
2️⃣ Hit Policies dans DMN
Hit Policy | Signification |
|---|---|
| U – Unique | Une seule règle doit correspondre |
| F – First | La première règle correspondante gagne |
| A – Any | Toute règle valide suffit |
| C – Collect | Renvoie plusieurs résultats (sum, min, max…) |
| P – Priority | La règle avec la priorité la plus élevée gagne |
| R – Rule Order | Résultats triés selon l'ordre des règles |
| O – Output Order | Triés selon la valeur de sortie |
La plupart des cas utilisent Unique ou First.
3️⃣ Expressions FEEL
DMN utilise FEEL pour écrire les conditions.
Exemples FEEL :
| Expression | Signification |
|---|---|
> 500 | Valeur supérieure à 500 |
[10..20] | Entre 10 et 20 |
<= 1000 | Inférieur ou égal |
"Or" | Valeur Or |
not("France") | Différent de France |
null | Valeur nulle |
4️⃣ Déployer un DMN dans Camunda 7
Placez votre fichier DMN dans :
Camunda déploie automatiquement tous les DMN trouvés dans resources.
5️⃣ Appeler un DMN depuis un Processus BPMN
Dans le BPMN:
1️⃣ Ajouter un Business Rule Task
2️⃣ Paramétrer :
-
Decision Ref =
loan_decision -
Result Variable =
loanResult -
Assignation des variables via input mappings
Exemple d’entrée dans le BPMN :
| Variable Processus | Entrée DMN |
|---|---|
${score} | scoreCrédit |
${salaire} | revenu |
${montant} | montant |
6️⃣ Exécuter un DMN via Java (DecisionService)
7️⃣ Exécuter un DMN via REST API
8️⃣ DMN + Spring Boot
Ajouter la dépendance :
Appel identique via DecisionService.
9️⃣ Exemple Réel : Classification du Risque Crédit
Inputs :
-
défauts passés
-
âge
-
revenu
-
pays
-
solde
Résultats DMN possibles :
-
RISQUE_FAIBLE
-
RISQUE_MOYEN
-
RISQUE_ELEVÉ
Le BPMN peut ensuite router automatiquement les cas selon le résultat.
🔟 Bonnes Pratiques DMN dans Camunda
✔ Utiliser FEEL au lieu de scripts
✔ Utiliser des noms d’entrées clairs
✔ Garder les tables simples et lisibles
✔ Éviter les règles qui se chevauchent
✔ Ajouter des tests unitaires DMN
✔ Organiser les DMN dans des dossiers dédiés
✔ Toujours définir une Result Variable dans BPMN
✔ Utiliser Priority (P) pour les modèles de scoring
❌ Erreurs Courantes à Éviter
❌ Mauvais mapping de variables
❌ Utilisation de scripts inutiles
❌ Hit Policy incorrecte
❌ DMN trop complexe ou trop long
❌ DecisionRef non configuré dans BPMN
🎉 Conclusion
Le DMN dans Camunda 7 permet :
✔ une automatisation claire et fiable
✔ une séparation propre des règles métier
✔ une meilleure maintenabilité
✔ une exécution rapide et évolutive
✔ une intégration fluide avec BPMN, Java, REST et Spring Boot
C’est un outil essentiel pour tout développeur ou architecte travaillant sur Camunda.
💼 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
Post a Comment