drools

42
Prez Flash :: JBoss Drools Règles Métiers Denis CHALLAS

Upload: klee-group

Post on 04-Dec-2014

4.912 views

Category:

Technology


7 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Drools

Prez Flash :: JBoss DroolsRègles Métiers

Denis CHALLAS

Page 2: Drools

© 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

Page 3: Drools

© 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

Page 4: Drools

© 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/

Page 5: Drools

© 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/

Page 6: Drools

© 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

Page 7: Drools

© 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

Page 8: Drools

© 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

Page 9: Drools

© 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

Page 10: Drools

© 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).

Page 11: Drools

© 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).

Page 12: Drools

© 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

Page 13: Drools

© 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.

Page 14: Drools

© 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

Page 15: Drools

© 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

Page 16: Drools

© 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

Page 17: Drools

© 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

Page 18: Drools

© 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 };

Page 19: Drools

© 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

Page 20: Drools

© 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)

Page 21: Drools

© 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

Page 22: Drools

© 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/

Page 23: Drools

© 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))

Page 24: Drools

© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 24 / 42

DSL

Exemple de l’éditeur DSL de Drools

Page 25: 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 }

Page 26: Drools

© 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

Page 27: Drools

© 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

Page 28: Drools

© Klee Group 16/06/2011 Direction Technique Présentation Moteurs de règles 28 / 42

Moteurs de règles

Page 29: Drools

© 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

Page 30: Drools

© 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

Page 31: Drools

© 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/

Page 32: Drools

© 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)

Page 33: Drools

© 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

Page 34: Drools

© 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

Page 35: Drools

© 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

Page 36: Drools

© 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

Page 37: Drools

© 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.

Page 38: Drools

© 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

Page 39: Drools

© 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

Page 40: 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.

Page 41: Drools

© 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

Page 42: Drools

© 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