Your SlideShare is downloading. ×
0
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Drools
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Drools

4,533

Published on

Published in: Technology, Business
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
4,533
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
197
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Prez Flash :: JBoss Drools
    Règles Métiers
    Denis CHALLAS
  • 2. 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 SpecificLanguages)
    Généralistes (General PurposeLanguages)
    dynamiques : Groovy
    Parser : Antlr
    Moteurs de règles
    Offre Drools
    Expert, Flow (jBpm), Planer, Fusion(Event Processing), (BRMS/BPMS)
    Les alternatives
  • 3. Pourquoi recourir à un moteur de règles ?
  • 4. 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/
  • 5. 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/
  • 6. 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 SpecificLanguages)
    Généralistes (General PurposeLanguages)
    dynamiques : Groovy
    Moteurs de règles
    Offre Drools
    Expert, Flow (jBpm), Planer, Fusion(Event Processing), (BRMS/BPMS)
    Les alternatives
  • 7. 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
  • 8. 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 Peirce
    Philosophe américain
    1839-1914
  • 9. 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
  • 10.  PROgrammationLOGique
    Historique
    né dans les années 1960 
    programme de recherche américain sur le GPS (General ProblemSolving)
     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).
  • 11. 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).
  • 12. 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
  • 13. 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
    RETE : Nom commun
    Filet, rets, lacs, toile d’araignée.
    • rete jaculum, Plaute.
    filet de pêcheur, épervier.
    • quaenimis apparent retia, vitat avis, Ovide. R. A. 516
    l'oiseau évite les filets qui sont trop visibles.
    Piège.
    • qui albo rete alienaoppugnantbona, 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 measincidere, Charis.
    tomber dans mon piège.
  • 14. Algorithme RETE
    Algorithme de RETE-OO : chaînage « avant »
    Optimisation / Performance
    Image : https://oxygen.informatik.tu-cottbus.de/RealRules/?q=node/48
  • 15. 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 SpecificLanguages)
    Généralistes (General PurposeLanguages)
    dynamiques : Groovy
    Parser : Antlr
    Moteurs de règles
    Offre Drools
    Expert, Flow (jBpm), Planer, Fusion(Event Processing), (BRMS/BPMS)
    Les alternatives
  • 16. 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
  • 17. 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
  • 18. 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 };
  • 19. DSL
    Exemples de DSL
    • CSS, SQL, expression régulière
    • 20. Fichiers de configuration
    • 21. Langages dédiés de polices d'assurance vie,  de simulation de combat ,  de facturation
    http://martinfowler.com/bliki/DomainSpecificLanguage.html
  • 22. DSL : exemple saisie de formules (1/3)
    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).
  • 23. DSL : exemple saisie de formules (2/3)
    Un grand nombre de formules sont administrables
  • 24. 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/
  • 25. 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))
  • 26. DSL
    Exemple de l’éditeur DSL de Drools
  • 27. 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 { printlnit }
  • 28. 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
  • 29. 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 SpecificLanguages)
    Généralistes (General PurposeLanguages)
    dynamiques : Groovy
    Moteurs de règles
    Offre Drools
    Expert, Flow (jBpm), Planer, Fusion(Event Processing), (BRMS/BPMS)
    Les alternatives
  • 30. Moteurs de règles
  • 31. 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
  • 32. 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
  • 33. Drools Expert
    Démonstration
    smart-content-selection
    POC : http://salaboy.wordpress.com/2011/04/01/smart-content-selection-poc-drools-5-jbpm5/
  • 34. Drools Guvnor
    Guvnor – interface d’administration Web (Business Rules Management System)
  • 35. 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
  • 36. Drools Planner
    DroolsPlanner
    Moteur de planification automatique
    grâce à la définition de contraintes
    solver calcule et propose des solutions
  • 37. 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
  • 38. Drools Planner
    Principe utilisé
    Engendrer une permutation aléatoire (yi) des nombres de 1 à n. les couples (i, yi) représentent les positions des reines.
    On calcule le nombre de conflits. Si ce nombre est 0 alors c’est fini
    On choisit 2 reines en conflit. Si en permutant ces deux reines on diminue le nombre de conflits, alors on permute ces reines.
    Si on ne peut plus diminuer le nombre de conflits, on recommence tout. (1)
    • On atteint 100 000 reines
  • 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.
  • 39. Démonstration Enquête sur des lignes de transports
    Vue sous eclipse
    Vue du réseau RETE sous eclipse
  • 40. 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
  • 41. 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.
  • 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
  • 43. Questions ?
    Retrouvez nous sur le blog technique de Klee
    http://blog.kleegroup.com/teknics
    teKnics@kleegroup.com
    @teKnics_Klee

×