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.
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 };
21. Langages dédiés de polices d'assurance vie, de simulation de combat , de facturationhttp://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))
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
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
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.
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