drools
DESCRIPTION
TRANSCRIPT
Prez Flash :: JBoss DroolsRègles Métiers
Denis CHALLAS
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 2 / 42
Implémenter les règles : un métier
Pourquoi recourir à un moteur de règles ?
Programmation logique Faits, Règles Pattern Spécification Inférence : description du problème
Backtracking : Prolog Performance : Algorithme de RETE/RETEOO
Les langages De scripts (EL : Expression Language)
EL-JSP, MVEL, OGNL Dédiés métier (DSL : Domain Specific Languages) Généralistes (General Purpose Languages)
dynamiques : Groovy Parser : Antlr
Moteurs de règles Offre Drools
Expert, Flow (jBpm), Planer, Fusion(Event Processing), (BRMS/BPMS) Les alternatives
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 3 / 42
Pourquoi recourir à un moteur de règles ?
• Dire « ce que je fais » plutôt que « comment je fais »
• Décrire les règles métiers sous une forme compréhensible par les personnes
Programmer
de manière déclarative
• Les règles métiers du code de l’application
• Les règles métiers deviennent indépendantes de la génération du logicielExternaliser
• Un changement des règles métiers au sein de l’applicationAppliquer à chaud
• Proposer une interface utilisateur pour administrer les règles métiers
• Créer de la souplesse au niveau de l’administrationAdministrer
• Centraliser les règles métiers dans un dépôt particulier• Centraliser la gestion de la connaissance• Partager avec d’autres applications• Conserver et ré-exploiter l’historique des règles métiers
Centraliser la gestion
de la connaissance
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 4 / 42
Approche classique
Approche classique : impérative
le développeur écrit les règles métiers qui lui sont transmises par le fonctionnel
Image : http://blog.piaction.com/2009/11/gestion-des-regles-metiers-avec-drools-5/
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 5 / 42
Approche avec un moteur de règles : déclarative
le fonctionnel peut écrire ses règles
Web
Excel
Domain Specific Language
Image : http://blog.piaction.com/2009/11/gestion-des-regles-metiers-avec-drools-5/
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 6 / 42
Implémenter les règles : un métier
Pourquoi recourir à un moteur de règles ?
Programmation logique Faits, Règles Pattern Spécification Inférence : description du problème
Backtracking : Prolog Performance : Algorithme de RETE/RETEOO Parser : Antlr
Les langages De scripts (EL : Expression Language)
EL-JSP, MVEL, OGNL Dédiés métier (DSL : Domain Specific Languages) Généralistes (General Purpose Languages)
dynamiques : Groovy
Moteurs de règles Offre Drools
Expert, Flow (jBpm), Planer, Fusion(Event Processing), (BRMS/BPMS) Les alternatives
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 7 / 42
Programmation logique
SI PREMISSE ALORS CONCLUSION
Prémisse de la règle
Conditions d’application de la règle
Pour déclencher
Vérification des attributs en prémisse
Conclusions
Actions à envisager
Modification du fait, souvent l’ajout de nouveaux faits
Si la règle est déclenchée
Affecter des valeurs à des attributs
Exemple
SI voiture_couleur = rouge ET voiture_marque = Ferrari ALORS conducteur = heureux
Fait ( ensemble d’attributs) : voiture_couleur, voiture_marque et conducteur
Valeur : rouge, Ferrari et heureux
La résolution est acquise lorsque l’ensemble des faits n’est plus dans le moteur
Différentes variantes existent :
planner : calcul d’un minimum de contraintes levées
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 8 / 42
Histoire d’inférences
Moteur de règles est un système capable
de définir des règles (= traitement)
et de les appliquer à des faits ( = données)
Moteur d’Inférence
opération mentale, ou jugement, qui consiste à tirer une conclusion
sur des propositions tenues pour vraies (prémisses)
à partir de règles de base
en concluant à la vérité
3 types d'inférence :
la déduction : utiliser dans la programmation logique
l'induction : loi générale à partir d’observations
l'abduction : hypothèse explicative d’une observation
formalisés par Peirce en 1903
Charles Sanders PeircePhilosophe américain
1839-1914
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 9 / 42
Programmation logique
Moteur d’inférence
règles et faits injectés
cherche les règles applicables aux faits (pattern matching)
optimise l’exécution de règles en les agençant de la manière la plus efficace possible (agenda).
Utile Logique nécessitant un nombre important de « if »
Trouve une solution basée sur un nombre important de règles
Image : http://docs.jboss.org/drools/release/5.2.0.CR1/drools-expert-docs/html/ch01.html
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 10 / 42
PROgrammation LOGique
Historique
né dans les années 1960
programme de recherche américain sur le GPS (General Problem Solving)
Prolog II — inventé par Alain Colmerauer à Marseille dans les années 1970
Le moteur d’inférence
détermine les étapes de la résolution des problèmes
propositionnelle par chaînage avant, arrière, mixte
En Prolog : chaînage arrière
parent(paul,jean). parent(jean,anne). parent(anne,marie).
homme(paul). homme(jean).
pere(X,Y) :- parent(X,Y), homme(X).
grand_pere(X,Y) :- pere(X,Z), parent(Z,Y).
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 11 / 42
Chaînage “arrière”
Chaînage “arrière” ou back-tracking Faits : éléments directement vérifiables
parent(paul, jean).
parent(jean, jacques).
Règles : prémises basés sur des faits ou autres règles
anc(X,Y):-parent(X,Y).
anc(X,Y) :- parent(X,Z), anc(Z,Y).
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 12 / 42
Chaînage “arrière”
En pseudo langage
Fait
oiseau(Tweety) “Tweety est un oiseau”
Règle
( ∀ x) oiseau(x) ⇒ vole(x) “Tous les oiseaux volent”
Est-ce que vole(Tweety) Oui
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 13 / 42
Chaînage “avant”
Algorithme de RETE
1974 : Dr Charles L. Forgy de l'Université Carnegie Mellon, publication de 1982
Algorithme de filtrage par motif
Evite d’exécuter toutes les prémisses de toutes les réglés
Utiliser par de nombreux systèmes experts tels que Clips, Jess, JBoss Rules, Soar
Cas Singulier Pluriel
Nominatif rete retia
Vocatif rete retia
Accusatif rete retia
Génitif retis retium
Datif retī retibus
Ablatif retī retibus
RETE : Nom commun1. Filet, rets, lacs, toile d’araignée.
• rete jaculum, Plaute.filet de pêcheur, épervier.
• quae nimis apparent retia, vitat avis, Ovide. R. A. 516l'oiseau évite les filets qui sont trop visibles.2. Piège.
• qui albo rete aliena oppugnant bona, Plaute.qui se servent du rôle des procès comme filet pour s'emparer du bien d'autrui (= qui savent soustraire fort habilement le bien d'autrui).
• in retes meas incidere, Charis.tomber dans mon piège.
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 14 / 42
Algorithme RETE
Algorithme de RETE-OO : chaînage « avant »
Optimisation / Performance
Image : https://oxygen.informatik.tu-cottbus.de/RealRules/?q=node/48
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 15 / 42
Implémenter les règles : un métier
Pourquoi recourir à un moteur de règles ?
Programmation logique Faits, Règles Inférence : description du problème
Backtracking : Prolog Performance : Algorithme de RETE/RETEOO
Les langages Pattern « Spécification »
De scripts (EL : Expression Language) EL-JSP, MVEL, OGNL
Dédiés métier (DSL : Domain Specific Languages) Généralistes (General Purpose Languages)
dynamiques : Groovy
Parser : Antlr
Moteurs de règles Offre Drools
Expert, Flow (jBpm), Planer, Fusion(Event Processing), (BRMS/BPMS) Les alternatives
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 16 / 42
Programmation logique
Pattern « Spécification »Permet de décrire les règles indépendamment des données
Permet de ré-utiliser les règles
Pas d’outil supplémentaire Facile à mettre en œuvre Adaptable dans tous les langages OO Par d’apprentissage d’un outil
Ne contient pas de moteur d’inférence Pas de gestion logique, ni d’optimisation Demande d’un développement spécifique pour exécuter ces règles
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 17 / 42
Expression Language
EL : Expression Language
langage de script permettant l'accès (get/set) à des composants Java (les JavaBeans)
http://download.oracle.com/javaee/1.4/tutorial/doc/JSPIntro7.html
Exemple JSP 2
${unBean.unChamp}
${customer.age + 20}
le nom est ${unBean.nom} et l'age est ${unBean.age}
Exemple
${MonObjet.maPropriete != null}
OGNL : Object-Graph Navigation Language
Utiliser par des framework de templating, …
Tapestry, Spring Web Flow, MyBatis
Et encore
Jakarta JXPath, Jexel, Java Expression Language (JEXL), JUEL, JEval
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 18 / 42
MVEL
MVFLEX Expression Language
Langage basé sur Java
Orienté utilisateur vs Developpeur java
Expose un model typé (java) et dynamique
Exemple de modification de deux variables
modify ( m ) {message = "Goodbye cruel world",status = Message.GOODBYE };
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 19 / 42
DSL
Langages•Défini par une grammaire•Ensemble robuste d'outils•Améliorer la productivité et la qualité de l'ingénierie logicielle
Langages généralistes •Java, .Net, EL …•Doit répondre à l’ensemble des algorithmes
Langages dédiés •Domain Specific Language (DSL)•Spécifique à un domain fonctionnel données
Exemples de DSL
• CSS, SQL, expression régulière
• Fichiers de configuration
• Langages dédiés de polices d'assurance vie, de simulation de combat , de facturation
http://martinfowler.com/bliki/DomainSpecificLanguage.html
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 20 / 42
Les formules de révision sont administrables
Dans le cadre d’un projet pour un de ses clients, Klee a développé un assistant permettant de saisir des formules comptables (dite de révision).
DSL : exemple saisie de formules (1/3)
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 21 / 42
DSL : exemple saisie de formules (2/3)
Un grand nombre de formules sont administrables
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 22 / 42
DSL : exemple saisie de formules (3/3)
ANother Tool for Language Recognition
Analyseur lexical et parser
Permet de décrire une grammaire
Générer ensuite une librairie : .Net, Java
Permet de parser un DSL particulier
Ici fonction mathématique spécifique au client
Référence
http://www.antlr.org/
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 23 / 42
DSL
Un DSL peut être une simple traduction d’un langage fonctionnel en un langage technique
The product "{product}" gains focus more than {times} in {minutes} minutes
Equivalent
$list: List( $n: size == {times} ) from accumulate( $visit: ProductFocusGainedEvent(product.category == "{product}")over window:time({minutes}m) from entry-point "visit-product-stream",collectList($visit))
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 24 / 42
DSL
Exemple de l’éditeur DSL de Drools
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 25 / 42
Les langages de scripts
Langages généralistes
Autres types
Langages de script : (abus de langage) programmation interprétée, statique
Permet de manipuler les fonctionnalités d'un système informatique
Evite la phase de compilation
Les évolutions des langages : quasi langage de programmation
Ajout Boucle, opérateur
BASIC, PHP, Lisp, JavaScript
Langages dynamiques
la compilation exécutée au runtime
évaluation et la modification du programme
Groovy : précompile ou à la volée, surcharge opérateur, typage dynamique
list = ["Rod", "Carlos", "Chris"]
shorts = list.findAll { it.size() <= 4 }
shorts.each { println it }
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 26 / 42
EL, LANGAGE, DSL
Gestion d’un nombre important de règles nécessite
Utiliser des pattern(s) de gestion des règles pour l’optimisation
Evaluer toutes les règles brutalement dégrade les performances
Limiter la traduction de règle métier dans un langage informatique
Coût de développement, Coût de maintenance
Proposer un langage proche du fonctionnel
Utilisation de DSL
Compilation à l’exécution
Image : http://parisjug.org/xwiki/bin/download/Meeting/20101109/PresentationBRMSGenigraphJUGParis20101109.pdf
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 27 / 42
Implémenter les règles : un métier
Pourquoi recourir à un moteur de règles ?
Programmation logique Faits, Règles Pattern Spécification Inférence : description du problème
Backtracking : Prolog Performance : Algorithme de RETE/RETEOO Parser : Antlr
Les langages De scripts (EL : Expression Language)
EL-JSP, MVEL, OGNL Dédiés métier (DSL : Domain Specific Languages) Généralistes (General Purpose Languages)
dynamiques : Groovy
Moteurs de règles Offre Drools
Expert, Flow (jBpm), Planer, Fusion(Event Processing), (BRMS/BPMS)
Les alternatives
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 28 / 42
Moteurs de règles
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 29 / 42
Drools
Expert – moteur de règles : ce module va exécuter les règles modélisées
Contient l’implémentation du moteur
algorithme de RETE
La gestion des règles
Langage MVEL
Permet de lancer le moteur en java
À partir de fichier
DRL : liste des règles
DSL : contient le langage métier si utiliser
DSLR : liste des règles en langage DSL
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 30 / 42
Développement avec Drools
Développement sous Eclipse
Editeur de règles
Débogage de règles
Monitoring du moteur
Démonstration live (Voir écran suivant)
Règle dynamique: par re-charchement du package
Règle écrite en DSL
Editeur succin proposé dans la demo
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 31 / 42
Drools Expert
Démonstration
smart-content-selection
POC : http://salaboy.wordpress.com/2011/04/01/smart-content-selection-poc-drools-5-jbpm5/
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 32 / 42
Drools Guvnor
Guvnor – interface d’administration Web (Business Rules Management System)
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 33 / 42
Drools Guvnor
Guvnor
Gère les règles suivant différents environnements
Avec une interface graphique
Se repose sur Drools Expert
Hiérarchisation des règles
Qui peut utiliser Guvnor
Expert fonctionnel
Expert ou administrateurs de règles
Développeurs
Quand utiliser Guvnor
Gérer des versions et des déploiements
Ne pas appeler les développeurs
Non lié au déploiement du cœur applicatif
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 34 / 42
Drools Planner
Drools Planner
Moteur de planification automatique
grâce à la définition de contraintes
solver calcule et propose des solutions
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 35 / 42
Drools Planner
Exemple : N-reines
Il s’agit de mettre n reines sur un échiquier de taille n × n
sans qu’aucune reine ne soit en prise (4 < n <1000000)
Résolution par programme déterministe récursif
Je place une reine , j’avance d’une colonne
=> blocage à partir de n = 20
En optimisant, en cas d’erreur je reviens et choisi un autre chemin
=> blocage à partir de n = 100, voir 5000 avec autres optims
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 36 / 42
Drools Planner
Principe utilisé
1. Engendrer une permutation aléatoire (yi) des nombres de 1 à n. les couples (i, yi) représentent les positions des reines.
2. On calcule le nombre de conflits. Si ce nombre est 0 alors c’est fini
3. On choisit 2 reines en conflit. Si en permutant ces deux reines on diminue le nombre de conflits, alors on permute ces reines.
4. Si on ne peut plus diminuer le nombre de conflits, on recommence tout. (1)
• On atteint 100 000 reines
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 37 / 42
Drools Planner
Démonstration « Enquête sur des lignes de transports »
Klee pour un de ses clients a mis en œuvre Planner afin de résoudre une planification d’enquêtes en prenant en compte des contraintes fonctionnelles exprimées sous la forme de 4 règles métiers
Règle 1
Entre deux enquêtes successives concernant la même ligne, il doit y avoir un intervalle minimum de X jours
Règle 2
Deux vacations successives concernant la même ligne doivent alterner matin/ après-midi
Règle 3
Deux vacations successives concernant la même ligne doivent alterner de prestataire
Règle 4
Deux vacations successives concernant la même ligne doivent alterner de jour de la semaine
Calcul des conflits
Addition du nombre de règles enfreintes pour obtenir l'opposé du score.
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 38 / 42
Démonstration Enquête sur des lignes de transports
Vue sous eclipse
Vue du réseau RETE sous eclipse
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 39 / 42
Drools Flow
jBPM/ Flow – Moteur de workflow
Les règles peuvent être écrite en MVEL (ou java)
Le moteur d’inférence est celui de Drools
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 40 / 42
Drools Fusion
Fusion – Gestion des événements
Centré sur le timing des événements
Cas d’utilisation
Bourse : trading
Tarif téléphonique
Détection de fraude
…
Algorithme CEP
Complex Event Processing
système d’évènement proche de CEP avec la possibilité de gérer des évènement changeant dans le temps.
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 41 / 42
Microsoft .
Windows Workflow Foundation Rules Engine
Propose un moteur intégré dans la plateforme .Net
Un moteur de workflow
Un moteur de règles
Les outils d’édition avec Visual Studio
© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 42 / 42
Questions ?
Retrouvez nous sur le blog technique de Klee
http://blog.kleegroup.com/teknics
[email protected]@teKnics_Klee