Prez Flash :: JBoss Drools<br />Règles Métiers<br />Denis CHALLAS<br />
Implémenter les règles : un métier<br />Pourquoi recourir à un moteur de règles ?<br />Programmation  logique<br />Faits, ...
Pourquoi recourir à un moteur de règles ?<br />
Approche classique<br />Approche classique : impérative<br />le développeur écrit les règles métiers qui lui sont transmis...
Approche avec un moteur de règles : déclarative<br />le fonctionnel peut écrire ses règles<br />Web <br />Excel<br />Domai...
Implémenter les règles : un métier<br />Pourquoi recourir à un moteur de règles ?<br />Programmation  logique<br />Faits, ...
Programmation logique<br />SI PREMISSE ALORS CONCLUSION<br />Prémisse de la règle <br />Conditions d’application de la règ...
Histoire d’inférences<br />Moteur de règles est un système capable <br />de définir des règles  (= traitement)<br />et de ...
Programmation  logique<br />Moteur d’inférence<br />règles et faits injectés<br />cherche les règles applicables aux faits...
 PROgrammationLOGique<br />Historique<br />né dans les années 1960 <br />programme de recherche américain sur le GPS (Gene...
Chaînage “arrière”<br />Chaînage “arrière” ou back-tracking<br />Faits : éléments directement vérifiables<br />parent(paul...
Chaînage “arrière”<br />En pseudo langage<br />Fait<br />	 oiseau(Tweety) 	 	“Tweety est un oiseau”<br />Règle<br />      ...
Chaînage “avant”<br />Algorithme de RETE<br />1974 : Dr Charles L. Forgy de l'Université Carnegie Mellon,  publication de ...
Algorithme RETE<br />Algorithme de RETE-OO : chaînage « avant »<br />Optimisation  / Performance<br />Image : https://oxyg...
Implémenter les règles : un métier<br />Pourquoi recourir à un moteur de règles ?<br />Programmation  logique<br />Faits, ...
Programmation  logique<br />Pattern « Spécification »<br />Permet de décrire les règles indépendamment des données<br />Pe...
Expression Language<br />EL : Expression Language<br />langage de script permettant l'accès (get/set) à des composants Jav...
MVEL<br />MVFLEX Expression Language<br />Langage basé sur Java<br />Orienté utilisateur vs Developpeur java<br />Expose u...
DSL<br />Exemples de DSL<br /><ul><li>CSS, SQL, expression régulière
Fichiers de configuration
Langages dédiés de polices d'assurance vie,  de simulation de combat ,  de facturation</li></ul>http://martinfowler.com/bl...
DSL : exemple saisie de formules (1/3)<br />Les formules de révision sont administrables<br />Dans le cadre d’un projet po...
DSL : exemple saisie de formules (2/3)<br />Un grand nombre de formules sont administrables<br />
DSL : exemple saisie de formules (3/3)<br />ANother Tool for Language Recognition<br />Analyseur lexical  et parser<br />P...
DSL<br />Un DSL peut être une simple traduction d’un langage fonctionnel en un langage technique<br />The product "{produc...
DSL<br />Exemple de l’éditeur DSL de Drools<br />
Les langages de scripts<br />Langages généralistes<br />Autres types<br />Langages de script  : (abus de langage) programm...
EL, LANGAGE, DSL<br />Gestion d’un nombre  important de règles nécessite<br />Utiliser des pattern(s) de gestion des règle...
Implémenter les règles : un métier<br />Pourquoi recourir à un moteur de règles ?<br />Programmation  logique<br />Faits, ...
Moteurs de règles<br />
Drools<br />Expert – moteur de règles : ce module va exécuter les règles modélisées<br />Contient l’implémentation du mote...
Développement avec Drools<br />Développement sous Eclipse<br />Editeur de règles<br />Débogage de règles<br />Monitoring d...
Drools Expert<br />Démonstration <br />smart-content-selection<br />POC : http://salaboy.wordpress.com/2011/04/01/smart-co...
Drools Guvnor <br />Guvnor – interface d’administration Web (Business Rules Management System)<br />
Drools Guvnor<br />Guvnor<br />Gère les règles suivant différents environnements<br />Avec une interface graphique<br />Se...
Drools Planner<br />DroolsPlanner<br />Moteur de planification automatique  <br />grâce à la définition de contraintes <br...
Drools Planner<br />Exemple : N-reines<br />Il s’agit de mettre n reines sur un échiquier de taille n × n<br />sans qu’auc...
Drools Planner<br />Principe utilisé <br />Engendrer une permutation aléatoire (yi) des nombres de 1 à n. les couples (i, ...
Démonstration Enquête sur des lignes de transports<br />Vue sous eclipse<br />Vue du réseau RETE sous eclipse<br />
Drools Flow<br />jBPM/ Flow – Moteur de workflow<br />Les règles peuvent être écrite en MVEL (ou java)<br />Le moteur d’in...
Drools Fusion<br />Fusion – Gestion des événements<br />Centré sur le timing des événements<br />Cas d’utilisation<br />Bo...
Microsoft                                    .<br />Windows Workflow Foundation Rules Engine<br />Propose un moteur intégr...
Prochain SlideShare
Chargement dans…5
×

Drools

5 728 vues

Publié le

Publié dans : Technologie, Business
1 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
5 728
Sur SlideShare
0
Issues des intégrations
0
Intégrations
218
Actions
Partages
0
Téléchargements
230
Commentaires
1
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Drools

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

×