Erreurs de validation DMN – Comment corriger (avec exemples & bonnes pratiques)

 Le DMN (Decision Model and Notation) est très puissant… mais aussi très strict.

Dans la majorité des incidents en production (Camunda, jBPM, Drools), la cause n’est pas le BPMN — ce sont les tables de décision invalides.

Le pire ?
👉 Un DMN peut être déployé correctement mais échouer à l’exécution.


1) Règles manquantes (Gap Error)

Problème

La table de décision ne couvre pas tous les cas possibles.

ÂgePrêt
<18Refuser
>18 ET <60Approuver

Que se passe-t-il pour âge = 60 ?
➡ Aucun résultat → incident / null / erreur 500

Correction

Ajouter une règle par défaut :

ÂgePrêt
<18Refuser
>=18 ET <60Approuver
sinonRevue manuelle

Recommandation

Toujours ajouter une règle fallback à la fin :

- (tiret = n’importe quelle valeur)

2) Règles qui se chevauchent (Overlap / Hit Policy)

Problème

Plusieurs règles correspondent à la même entrée.

SalaireStatut
>50000Gold
>30000Silver

Salaire = 70000 → 2 résultats ❌

Correction

Rendre les conditions exclusives:

>30000 AND <=50000
>50000

Recommandation

👉 90% des cas métier utilisent FIRST.


3) Erreurs de syntaxe FEEL

Le langage FEEL est la première cause d’échec runtime.

FauxCorrect
= "YES""YES"
age > = 18age >= 18
true()true
null()null

Checklist

✔ Pas de = dans la cellule
✔ Boolean = true / false
✔ String entre guillemets
✔ Nom variable exact BPMN


4) Types de données incorrects

DMN est strictement typé.

Entrée : "50000" (string)
Attendu : 50000 (number)

Erreur :

Cannot compare string and number

Correction

Caster les types :

number(salary)
string(customerType)
date(orderDate)

Recommandation

Ne jamais faire confiance aux données externes.


5) Mauvais mapping de sortie

DMN produit :

decisionResult

BPMN attend :

approvalStatus

➡ Processus bloqué

Correction

Mapper explicitement la variable dans le Business Rule Task.


6) Mauvaise utilisation du tiret (-)

Le tiret signifie ANY value, pas NULL.

PaysTaxe
-18%

Cela écrase toutes les autres règles.

Recommandation

Utiliser uniquement pour la dernière règle.


Stratégie de prévention en production

Tests unitaires DMN (obligatoire)

EntréeRésultat
Age 10Refuser
Age 30Approuver
Age 60Manuel

Bonnes pratiques entreprise

  • Utiliser FIRST

  • Ajouter règle par défaut

  • Caster les variables

  • Conditions exclusives

  • Versionner les décisions


Checklist de debug rapide

  1. Lire logs FEEL

  2. Vérifier variables

  3. Vérifier hit policy

  4. Tester cas limite

  5. Vérifier types

  6. Ajouter fallback


📚 Lectures recommandées

Pour mieux comprendre et éviter les incidents en production:

👉 https://shikhanirankari.blogspot.com/search/label/French

Consultez notamment :

Ces sujets sont directement liés aux échecs DMN en production.


Conseil final

BPMN échoue bruyamment.
DMN échoue silencieusement.

En appliquant :
✔ FIRST
✔ règle par défaut
✔ types stricts
✔ tests

Vous éliminez 95% des incidents DMN en production.


💼 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, Flowable), DMN/Drools.

📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com

🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium     


Comments

Popular posts from this blog

OOPs Concepts in Java | English | Object Oriented Programming Explained

Scopes of Signal in jBPM

jBPM Installation Guide: Step by Step Setup