SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
2012-07-02   Soat: Drools Expert   1
2012-07-02   Soat: Drools Expert   2
De quoi allons nous parler?

⦿ Quand le moteur de règles vous sauve ?
        ⦿ Et quand il ne vous sauvera pas…
⦿ Comment écrire un moteur?
⦿ Comment écrire des règles?
⦿ Au delà des règles standards?




2012-07-02                  Soat: Drools Expert   3
IA: symboliste VS connexioniste

⦿ Symboliste:
        ⦿ Raisonnement logique
        ⦿ Apogée: systèmes expert
        ⦿ Nuance: la logique floue
⦿ Connexioniste:
        ⦿ Emergence
        ⦿ Réseaux de neurones



2012-07-02                 Soat: Drools Expert   4
JBoss Drools

⦿ Drools Expert: le moteur
⦿ Drools Guvnor: le BRMS
⦿ Drools jBPM: ordonnancer les packages
⦿ Drools Fusion: gestion des événements
⦿ Drools Planner: planifier (NP Complet donc
  heuristique)



2012-07-02                  Soat: Drools Expert   5
JBoss Drools




2012-07-02                  Soat: Drools Expert   6
JBoss Drools




2012-07-02                  Soat: Drools Expert   7
Quand s’en servir?

⦿ Le rêve du BA autonome:
        ⦿ Change oriented Application
        ⦿ IT pour le socle, BA pour les règles
⦿ Adapté aux gros volumes:
        ⦿ Algorithme de RETE
        ⦿ Peu de modifications de faits
⦿ Exemple: AAPT
        ⦿ Développé par Sungard
        ⦿ Validation Back office

2012-07-02                   Soat: Drools Expert   8
Quand ne pas s’en servir?

⦿ Peu de faits peu de règles
⦿ Quand chaque octet compte
⦿ Quand les faits changent
⦿ Quand les règles interagissent les unes avec
  les autres (working memory)
⦿ Quand les seuils sont stratégiques
⦿ NE PAS utiliser les DSL
⦿ NE PAS utiliser la version .Net

2012-07-02               Soat: Drools Expert     9
Présentation de l’application




2012-07-02                Soat: Drools Expert   10
Avengers: des gens bien

⦿ Données de référentiel:
        ⦿ Valider les informations
        ⦿ Ajouter une erreur fonctionnelle
⦿ Une initiative éthique:
        ⦿ Prendre la moyenne M des salaires
        ⦿ Pour chaque personne P
             ⦿ Si le salaire est inférieur à 0,5M
             ⦿ Si le salaire est supérieur à 2M
             ⦿ Ajouter une erreur fonctionnelle


2012-07-02                        Soat: Drools Expert   11
Première étape: Ecrire le moteur




2012-07-02               Soat: Drools Expert    12
Première étape: Ecrire le moteur

⦿ KnowledgeBuilder:
        ⦿ Ajouter les règles
        ⦿ Vérifier la compilation
⦿ KnowledgeBase:
        ⦿ Définir les packages à exécuter
⦿ Les sessions:
        ⦿ Stateless: un seul déclenchement
        ⦿ Statefull: les faits restent en mémoire

2012-07-02                   Soat: Drools Expert    13
Deuxième étape: coder les règles

⦿ Import
⦿ Déclarations et global
⦿ LHS:
        ⦿ Ne pas penser en terme de boucles
        ⦿ $var : Class( conditions, $var: attribute)
⦿ RHS:
        ⦿ Java
        ⦿ Accès à la working memory
⦿ Fonctions
        ⦿ Utilisation de function

2012-07-02                     Soat: Drools Expert     14
Sélection des éléments

⦿ Moyens:
        ⦿ Class (conditions)
        ⦿ Eval et fonctions externes
⦿ Autres utilisations:
        ⦿ Calcul de moyenne
        ⦿ Construction d’ensembles
        ⦿ Vérifier qu’une règle n’a pas été exécutée



2012-07-02                   Soat: Drools Expert       15
Interfaces avec les règles

⦿ Utilisation de global:
        ⦿ Objets déclarés dans la knowledge base
        ⦿ Récupérables après exécution
⦿ Passer des faits en paramètres:
⦿ Déclarer des structures:
        ⦿ POJO utilisables
        ⦿ Manipulables avec FactType



2012-07-02                 Soat: Drools Expert     16
Utilisation de la working memory

⦿ Mémoire partagée:
        ⦿ Chaque règle peut l’utiliser
        ⦿ On utilise un FactHandler, pas un objet
⦿ Arbre de RETE:
        ⦿ Alpha node. Ex: getName().equals(« Stark »)
        ⦿ Beta node: a.getName().equals(b.getName())
        ⦿ Global node: not exists
        ⦿ Reconstruit à chaque modification de la WM

2012-07-02                  Soat: Drools Expert         17
From

⦿ From accumulate: le couteau suisse
        ⦿ Conditions sur une seule classe
        ⦿ Initialisations
        ⦿ Boucle for
        ⦿ Retract
        ⦿ Result
⦿ Autres from
        ⦿ From collect, from

2012-07-02                  Soat: Drools Expert   18
Les pièges à considérer

⦿ Boucler:
        ⦿ Ajouter un fait en WM
        ⦿ Risque de boucle au delete
⦿ Coder deux règles (si alors sinon)
        ⦿ Prendre l’ensemble des faits qui matchent
        ⦿ Dans le then, séparer les cas
⦿ Attention: des surprises avec l’Agenda
        ⦿ Utiliser la salience

2012-07-02                   Soat: Drools Expert      19
A suivre… L’arbre de Rete


2012-07-02            Soat: Drools Expert   20
Les types de noeuds

⦿ Les nœuds alpha
        ⦿ Sélection de faits individuels
        ⦿ Object Type Node: Choisir sa classe
        ⦿ Hiérarchie de classes par condition
⦿ Les nœuds Beta:
        ⦿ Nœuds de jointure
        ⦿ Exemple: Person(name == p.name)
⦿ Memory Node:
        ⦿ Alpha: référence vers les faits qui matchent
        ⦿ Beta: référence vers les tuples qui matchent


2012-07-02                    Soat: Drools Expert        21
RETE: le graphe des noeuds




2012-07-02               Soat: Drools Expert   22
Attendez, si vous êtes encore
             réveillés, il reste la logique floue
2012-07-02                 Soat: Drools Expert      23
D’autres façons de penser




2012-07-02               Soat: Drools expert   24
Utilisation de la logique floue

⦿ Exemple: Validation d’un référentiel BO
        ⦿ Evolution du forex EUR/USD
        ⦿ Règle: ramené sur 5j, évolution < 1,0%
        ⦿ Quelle différence entre 0,99 et 1,01?
⦿ Exemple: stratégie momentum
        ⦿ Vendre les titres qui ont un faible rendement
          depuis longtemps
        ⦿ Acheter les titres ayant un rendement élevé
          depuis peu de temps


2012-07-02                  Soat: Drools Expert           25
Les contrôleurs flous
⦿       Source: Franck Dernoncourt (developpez.com)




2012-07-02                                            Soat: Drools Expert   26
Fuzzification: la partie difficile

⦿ Trouver les fonctions de fuzzyfication idoines
⦿ Solutions:
        ⦿ Ranking, modèles
        ⦿ Apprentissage (réseaux de neurones)
⦿ Exemple:




2012-07-02                 Soat: Drools Expert    27
Raisonner en logique floue




                       Soat: Drools Expert. Source: Franck
2012-07-02                                                   28
                         Dernoncourt, developpez.com
Merci




2012-07-02    Soat: Drools Expert   29

Más contenido relacionado

La actualidad más candente

Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoiPerf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoipkernevez
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1ATHMAN HAJ-HAMOU
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103MRamo2s
 
Jpa Spring Hibernate
Jpa Spring HibernateJpa Spring Hibernate
Jpa Spring Hibernatezaheryamak
 
Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?PALO IT
 
Spring Batch 17-05-2011
Spring Batch 17-05-2011Spring Batch 17-05-2011
Spring Batch 17-05-2011Normandy JUG
 
Softshake 2015 Comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Softshake 2015 Comment ne plus rajouter de ram a vos jvm sans savoir pourquoiSoftshake 2015 Comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Softshake 2015 Comment ne plus rajouter de ram a vos jvm sans savoir pourquoipkernevez
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilanteejug
 

La actualidad más candente (11)

Presentation JPA
Presentation JPAPresentation JPA
Presentation JPA
 
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoiPerf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103
 
Jpa Spring Hibernate
Jpa Spring HibernateJpa Spring Hibernate
Jpa Spring Hibernate
 
Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?
 
Spring Batch 17-05-2011
Spring Batch 17-05-2011Spring Batch 17-05-2011
Spring Batch 17-05-2011
 
Softshake 2015 Comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Softshake 2015 Comment ne plus rajouter de ram a vos jvm sans savoir pourquoiSoftshake 2015 Comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Softshake 2015 Comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilan
 
Jpa(1)
Jpa(1)Jpa(1)
Jpa(1)
 

Destacado

Pintadas callejeras
Pintadas callejerasPintadas callejeras
Pintadas callejerasPlof
 
Ensayo
EnsayoEnsayo
Ensayolaura
 
Trabajo sobre los siglos xix y xx. Biografía de Ferrer i Guardia
Trabajo sobre los siglos xix y xx. Biografía de Ferrer i GuardiaTrabajo sobre los siglos xix y xx. Biografía de Ferrer i Guardia
Trabajo sobre los siglos xix y xx. Biografía de Ferrer i Guardiaerzafire
 
Evitemos+las+emociones+toxicas+(lv)
Evitemos+las+emociones+toxicas+(lv)Evitemos+las+emociones+toxicas+(lv)
Evitemos+las+emociones+toxicas+(lv)Carlos Posada
 
Practica1 roxanna cuéllar
Practica1 roxanna cuéllarPractica1 roxanna cuéllar
Practica1 roxanna cuéllarPAOLA CUELLAR
 
Taller de programación clase #8
Taller de programación   clase #8Taller de programación   clase #8
Taller de programación clase #8Carlos Posada
 
C:\Documents And Settings\Alumno\Mis Documentos\Ayelenes
C:\Documents And Settings\Alumno\Mis Documentos\AyelenesC:\Documents And Settings\Alumno\Mis Documentos\Ayelenes
C:\Documents And Settings\Alumno\Mis Documentos\Ayelenesayelencondori
 
Participation des populations et renouvellement des pratiques paysagistes. Un...
Participation des populations et renouvellement des pratiques paysagistes. Un...Participation des populations et renouvellement des pratiques paysagistes. Un...
Participation des populations et renouvellement des pratiques paysagistes. Un...Mission Val de Loire
 
Comer bien la fruta
Comer bien la frutaComer bien la fruta
Comer bien la frutaPlof
 

Destacado (20)

Pintadas callejeras
Pintadas callejerasPintadas callejeras
Pintadas callejeras
 
Iconografia
IconografiaIconografia
Iconografia
 
Ensayo
EnsayoEnsayo
Ensayo
 
álbum de fotografías iesfa
álbum de fotografías iesfaálbum de fotografías iesfa
álbum de fotografías iesfa
 
Trabajo sobre los siglos xix y xx. Biografía de Ferrer i Guardia
Trabajo sobre los siglos xix y xx. Biografía de Ferrer i GuardiaTrabajo sobre los siglos xix y xx. Biografía de Ferrer i Guardia
Trabajo sobre los siglos xix y xx. Biografía de Ferrer i Guardia
 
Jean-Paul Volle
Jean-Paul VolleJean-Paul Volle
Jean-Paul Volle
 
Evitemos+las+emociones+toxicas+(lv)
Evitemos+las+emociones+toxicas+(lv)Evitemos+las+emociones+toxicas+(lv)
Evitemos+las+emociones+toxicas+(lv)
 
Proceso de lectura
Proceso de lecturaProceso de lectura
Proceso de lectura
 
Practica1 roxanna cuéllar
Practica1 roxanna cuéllarPractica1 roxanna cuéllar
Practica1 roxanna cuéllar
 
Taller de programación clase #8
Taller de programación   clase #8Taller de programación   clase #8
Taller de programación clase #8
 
Arroces
ArrocesArroces
Arroces
 
Emilie Grenaud
Emilie GrenaudEmilie Grenaud
Emilie Grenaud
 
Laurent Pigache
Laurent PigacheLaurent Pigache
Laurent Pigache
 
C:\Documents And Settings\Alumno\Mis Documentos\Ayelenes
C:\Documents And Settings\Alumno\Mis Documentos\AyelenesC:\Documents And Settings\Alumno\Mis Documentos\Ayelenes
C:\Documents And Settings\Alumno\Mis Documentos\Ayelenes
 
Matar, es asesinar
Matar, es asesinarMatar, es asesinar
Matar, es asesinar
 
2012 02-05 auxiliardirectores
2012 02-05 auxiliardirectores2012 02-05 auxiliardirectores
2012 02-05 auxiliardirectores
 
Participation des populations et renouvellement des pratiques paysagistes. Un...
Participation des populations et renouvellement des pratiques paysagistes. Un...Participation des populations et renouvellement des pratiques paysagistes. Un...
Participation des populations et renouvellement des pratiques paysagistes. Un...
 
Comer bien la fruta
Comer bien la frutaComer bien la fruta
Comer bien la fruta
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativos
 
MANEJO DEL CBR
MANEJO DEL CBRMANEJO DEL CBR
MANEJO DEL CBR
 

Similar a 3 t drools

Comment faire du Data SEO sans savoir programmer ?
Comment faire du Data SEO sans savoir programmer ?Comment faire du Data SEO sans savoir programmer ?
Comment faire du Data SEO sans savoir programmer ?Vincent Terrasi
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...
[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...
[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...Worteks
 
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...lyonjug
 
Retour d'expérience développement jeux android
Retour d'expérience développement jeux androidRetour d'expérience développement jeux android
Retour d'expérience développement jeux androidjodem
 
Présentation des initiatives Drupal 8 - Fev 12
Présentation des initiatives Drupal 8 - Fev 12Présentation des initiatives Drupal 8 - Fev 12
Présentation des initiatives Drupal 8 - Fev 12Drupal Asso France
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveCedric Vidal
 
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...OCTO Technology
 
Working effectively with legacy code
Working effectively with legacy codeWorking effectively with legacy code
Working effectively with legacy codeMathieu Gandin
 
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...mbrechet
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Horacio Gonzalez
 
Performances Java et OpenDJ - LyonJUG Janv. 2012
Performances Java et OpenDJ - LyonJUG Janv. 2012Performances Java et OpenDJ - LyonJUG Janv. 2012
Performances Java et OpenDJ - LyonJUG Janv. 2012Ludovic Poitou
 
[POSS 2018] Comment unifier ses dashboards par Grafana
[POSS 2018] Comment unifier ses dashboards par Grafana[POSS 2018] Comment unifier ses dashboards par Grafana
[POSS 2018] Comment unifier ses dashboards par GrafanaWorteks
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsChristophe Villeneuve
 
Des poneys à Liberation.fr
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.frliberation_dev
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 

Similar a 3 t drools (20)

Comment faire du Data SEO sans savoir programmer ?
Comment faire du Data SEO sans savoir programmer ?Comment faire du Data SEO sans savoir programmer ?
Comment faire du Data SEO sans savoir programmer ?
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...
[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...
[POSS 2018] Passer d'un écosystème baremetal à un univers micro services et d...
 
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
 
Retour d'expérience développement jeux android
Retour d'expérience développement jeux androidRetour d'expérience développement jeux android
Retour d'expérience développement jeux android
 
Jcom02.ppt
Jcom02.pptJcom02.ppt
Jcom02.ppt
 
Présentation des initiatives Drupal 8 - Fev 12
Présentation des initiatives Drupal 8 - Fev 12Présentation des initiatives Drupal 8 - Fev 12
Présentation des initiatives Drupal 8 - Fev 12
 
D8 update-2-22-12
D8 update-2-22-12D8 update-2-22-12
D8 update-2-22-12
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehave
 
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...
 
Working effectively with legacy code
Working effectively with legacy codeWorking effectively with legacy code
Working effectively with legacy code
 
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
LemonLDAP::NG 1.2
LemonLDAP::NG 1.2LemonLDAP::NG 1.2
LemonLDAP::NG 1.2
 
Performances Java et OpenDJ - LyonJUG Janv. 2012
Performances Java et OpenDJ - LyonJUG Janv. 2012Performances Java et OpenDJ - LyonJUG Janv. 2012
Performances Java et OpenDJ - LyonJUG Janv. 2012
 
[POSS 2018] Comment unifier ses dashboards par Grafana
[POSS 2018] Comment unifier ses dashboards par Grafana[POSS 2018] Comment unifier ses dashboards par Grafana
[POSS 2018] Comment unifier ses dashboards par Grafana
 
Django by mrjmad
Django by mrjmadDjango by mrjmad
Django by mrjmad
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtools
 
Des poneys à Liberation.fr
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.fr
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 

3 t drools

  • 1. 2012-07-02 Soat: Drools Expert 1
  • 2. 2012-07-02 Soat: Drools Expert 2
  • 3. De quoi allons nous parler? ⦿ Quand le moteur de règles vous sauve ? ⦿ Et quand il ne vous sauvera pas… ⦿ Comment écrire un moteur? ⦿ Comment écrire des règles? ⦿ Au delà des règles standards? 2012-07-02 Soat: Drools Expert 3
  • 4. IA: symboliste VS connexioniste ⦿ Symboliste: ⦿ Raisonnement logique ⦿ Apogée: systèmes expert ⦿ Nuance: la logique floue ⦿ Connexioniste: ⦿ Emergence ⦿ Réseaux de neurones 2012-07-02 Soat: Drools Expert 4
  • 5. JBoss Drools ⦿ Drools Expert: le moteur ⦿ Drools Guvnor: le BRMS ⦿ Drools jBPM: ordonnancer les packages ⦿ Drools Fusion: gestion des événements ⦿ Drools Planner: planifier (NP Complet donc heuristique) 2012-07-02 Soat: Drools Expert 5
  • 6. JBoss Drools 2012-07-02 Soat: Drools Expert 6
  • 7. JBoss Drools 2012-07-02 Soat: Drools Expert 7
  • 8. Quand s’en servir? ⦿ Le rêve du BA autonome: ⦿ Change oriented Application ⦿ IT pour le socle, BA pour les règles ⦿ Adapté aux gros volumes: ⦿ Algorithme de RETE ⦿ Peu de modifications de faits ⦿ Exemple: AAPT ⦿ Développé par Sungard ⦿ Validation Back office 2012-07-02 Soat: Drools Expert 8
  • 9. Quand ne pas s’en servir? ⦿ Peu de faits peu de règles ⦿ Quand chaque octet compte ⦿ Quand les faits changent ⦿ Quand les règles interagissent les unes avec les autres (working memory) ⦿ Quand les seuils sont stratégiques ⦿ NE PAS utiliser les DSL ⦿ NE PAS utiliser la version .Net 2012-07-02 Soat: Drools Expert 9
  • 11. Avengers: des gens bien ⦿ Données de référentiel: ⦿ Valider les informations ⦿ Ajouter une erreur fonctionnelle ⦿ Une initiative éthique: ⦿ Prendre la moyenne M des salaires ⦿ Pour chaque personne P ⦿ Si le salaire est inférieur à 0,5M ⦿ Si le salaire est supérieur à 2M ⦿ Ajouter une erreur fonctionnelle 2012-07-02 Soat: Drools Expert 11
  • 12. Première étape: Ecrire le moteur 2012-07-02 Soat: Drools Expert 12
  • 13. Première étape: Ecrire le moteur ⦿ KnowledgeBuilder: ⦿ Ajouter les règles ⦿ Vérifier la compilation ⦿ KnowledgeBase: ⦿ Définir les packages à exécuter ⦿ Les sessions: ⦿ Stateless: un seul déclenchement ⦿ Statefull: les faits restent en mémoire 2012-07-02 Soat: Drools Expert 13
  • 14. Deuxième étape: coder les règles ⦿ Import ⦿ Déclarations et global ⦿ LHS: ⦿ Ne pas penser en terme de boucles ⦿ $var : Class( conditions, $var: attribute) ⦿ RHS: ⦿ Java ⦿ Accès à la working memory ⦿ Fonctions ⦿ Utilisation de function 2012-07-02 Soat: Drools Expert 14
  • 15. Sélection des éléments ⦿ Moyens: ⦿ Class (conditions) ⦿ Eval et fonctions externes ⦿ Autres utilisations: ⦿ Calcul de moyenne ⦿ Construction d’ensembles ⦿ Vérifier qu’une règle n’a pas été exécutée 2012-07-02 Soat: Drools Expert 15
  • 16. Interfaces avec les règles ⦿ Utilisation de global: ⦿ Objets déclarés dans la knowledge base ⦿ Récupérables après exécution ⦿ Passer des faits en paramètres: ⦿ Déclarer des structures: ⦿ POJO utilisables ⦿ Manipulables avec FactType 2012-07-02 Soat: Drools Expert 16
  • 17. Utilisation de la working memory ⦿ Mémoire partagée: ⦿ Chaque règle peut l’utiliser ⦿ On utilise un FactHandler, pas un objet ⦿ Arbre de RETE: ⦿ Alpha node. Ex: getName().equals(« Stark ») ⦿ Beta node: a.getName().equals(b.getName()) ⦿ Global node: not exists ⦿ Reconstruit à chaque modification de la WM 2012-07-02 Soat: Drools Expert 17
  • 18. From ⦿ From accumulate: le couteau suisse ⦿ Conditions sur une seule classe ⦿ Initialisations ⦿ Boucle for ⦿ Retract ⦿ Result ⦿ Autres from ⦿ From collect, from 2012-07-02 Soat: Drools Expert 18
  • 19. Les pièges à considérer ⦿ Boucler: ⦿ Ajouter un fait en WM ⦿ Risque de boucle au delete ⦿ Coder deux règles (si alors sinon) ⦿ Prendre l’ensemble des faits qui matchent ⦿ Dans le then, séparer les cas ⦿ Attention: des surprises avec l’Agenda ⦿ Utiliser la salience 2012-07-02 Soat: Drools Expert 19
  • 20. A suivre… L’arbre de Rete 2012-07-02 Soat: Drools Expert 20
  • 21. Les types de noeuds ⦿ Les nœuds alpha ⦿ Sélection de faits individuels ⦿ Object Type Node: Choisir sa classe ⦿ Hiérarchie de classes par condition ⦿ Les nœuds Beta: ⦿ Nœuds de jointure ⦿ Exemple: Person(name == p.name) ⦿ Memory Node: ⦿ Alpha: référence vers les faits qui matchent ⦿ Beta: référence vers les tuples qui matchent 2012-07-02 Soat: Drools Expert 21
  • 22. RETE: le graphe des noeuds 2012-07-02 Soat: Drools Expert 22
  • 23. Attendez, si vous êtes encore réveillés, il reste la logique floue 2012-07-02 Soat: Drools Expert 23
  • 24. D’autres façons de penser 2012-07-02 Soat: Drools expert 24
  • 25. Utilisation de la logique floue ⦿ Exemple: Validation d’un référentiel BO ⦿ Evolution du forex EUR/USD ⦿ Règle: ramené sur 5j, évolution < 1,0% ⦿ Quelle différence entre 0,99 et 1,01? ⦿ Exemple: stratégie momentum ⦿ Vendre les titres qui ont un faible rendement depuis longtemps ⦿ Acheter les titres ayant un rendement élevé depuis peu de temps 2012-07-02 Soat: Drools Expert 25
  • 26. Les contrôleurs flous ⦿ Source: Franck Dernoncourt (developpez.com) 2012-07-02 Soat: Drools Expert 26
  • 27. Fuzzification: la partie difficile ⦿ Trouver les fonctions de fuzzyfication idoines ⦿ Solutions: ⦿ Ranking, modèles ⦿ Apprentissage (réseaux de neurones) ⦿ Exemple: 2012-07-02 Soat: Drools Expert 27
  • 28. Raisonner en logique floue Soat: Drools Expert. Source: Franck 2012-07-02 28 Dernoncourt, developpez.com
  • 29. Merci 2012-07-02 Soat: Drools Expert 29