Tutoriel jBPM DMN – Utiliser les Fonctions DMN (Fonctions FEEL)
🚀 Introduction
Dans jBPM, DMN (Decision Model and Notation) est utilisé pour modéliser les règles métier, les calculs, et la logique de décision.
L’un des éléments les plus puissants dans DMN est l’utilisation des fonctions, écrites en :
-
FEEL (Friendly Enough Expression Language)
-
Java (via intégration avancée)
-
Fonctions externes exposées au modèle
Dans ce blog, nous allons nous concentrer sur les fonctions FEEL, les plus utilisées et les plus simples à maintenir dans jBPM.
🧩 Qu’est-ce qu’une Fonction DMN ?
Une fonction DMN est un bloc logique réutilisable qui peut :
✔ recevoir des paramètres
✔ exécuter un calcul
✔ retourner un résultat
Les fonctions peuvent être utilisées dans :
-
les expressions littérales,
-
les tables de décisions,
-
les contexts,
-
ou comme fonctions nommées dans le modèle.
jBPM supporte :
-
les fonctions FEEL intégrées,
-
les fonctions FEEL personnalisées,
-
les boxed functions (fonctions écrites directement dans le modèle).
🔵 1. Fonctions FEEL intégrées
Le langage FEEL inclut un très grand nombre de fonctions prêtes à l’emploi.
👉 Fonctions FEEL courantes :
| Fonction | Utilité |
|---|---|
string() | Convertit en texte |
number() | Convertit en nombre |
lower(), upper() | Mise en minuscule / majuscule |
contains(text, substring) | Vérifie une sous-chaîne |
substring(text, start, length) | Extrait du texte |
sum(list) | Somme d'une liste |
min() / max() | Minimum / Maximum |
today() / now() | Dates et heure |
duration() | Différence entre dates |
🟢 Exemple : utiliser une fonction FEEL dans une table de décision
🧾 Cas d’usage
Calculer un prix final après remise.
Expression FEEL :
Exemple dans une table de décision :
| Montant | Remise (%) | Sortie |
|---|---|---|
| > 1000 | 10 | amount - (amount * 0.10) |
| <= 1000 | 5 | amount - (amount * 0.05) |
🟡 2. Fonctions FEEL personnalisées
🟡 A. Boxed Function (fonction écrite dans le modèle)
Exemple : calculer un âge
Appel :
Résultat :
🟡 B. Fonction nommée réutilisable (dans un Context)
Exemple :
Appel :
🔴 3. Fonctions Java dans DMN (avancé)
DMN peut appeler des méthodes Java lorsque vous exposez ces fonctions via :
-
WorkItemHandlers
-
Extensions runtime
-
Import Java dans le modèle DMN
Exemple fonction Java :
Appel dans DMN :
📘 Exemple complet : fonction DMN de calcul de remise
Fonction FEEL :
Table de décision utilisant la fonction :
| Montant | Remise | Résultat |
|---|---|---|
| >1000 | 10 | calculate(amount, discount) |
| <=1000 | 5 | calculate(amount, discount) |
🔗 Utilisation d’une fonction DMN dans un workflow jBPM
Workflow BPMN :
Variables récupérées depuis la décision DMN :
📊 Résumé des fonctionnalités DMN
| Fonctionnalité | Support jBPM | Description |
|---|---|---|
| Fonctions FEEL intégrées | ✅ | Très utilisées |
| Fonctions FEEL personnalisées | ✅ | Logique métier réutilisable |
| Boxed functions | ✅ | DMN standard |
| Fonctions Java | ⚠️ | Avancé / nécessite intégration |
| Fonctions script | ❌ | Non DMN standard |
👉 Regardez “DMN” en action:
démo live complète des composants DMN
🎬 YouTube: Learn IT with Shikha video 1
🎬 YouTube: Learn IT with Shikha video 2
👉 Source code: LearnITWithShikha/DMNExamples
🎯 Conclusion
Les fonctions DMN dans jBPM permettent de :
✔ Centraliser la logique métier
✔ Réduire la duplication
✔ Rendre les modèles plus lisibles
✔ Simplifier les règles complexes
✔ Améliorer la réutilisabilité
Les fonctions FEEL sont les plus puissantes pour garder un modèle DMN propre et parfaitement aligné avec les règles métier.
DMN + FEEL = une logique claire, réutilisable et professionnelle.
💼 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).
🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium
Comments
Post a Comment