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

Más contenido relacionado

La actualidad más candente

Writing php extensions in golang
Writing php extensions in golangWriting php extensions in golang
Writing php extensions in golangdo_aki
 
OrientDB introduction - NoSQL
OrientDB introduction - NoSQLOrientDB introduction - NoSQL
OrientDB introduction - NoSQLLuca Garulli
 
Angular 10 course_content
Angular 10 course_contentAngular 10 course_content
Angular 10 course_contentNAVEENSAGGAM1
 
Indexing & Query Optimization
Indexing & Query OptimizationIndexing & Query Optimization
Indexing & Query OptimizationMongoDB
 
Angular 8
Angular 8 Angular 8
Angular 8 Sunil OS
 
Spring data presentation
Spring data presentationSpring data presentation
Spring data presentationOleksii Usyk
 
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...Ruby Meditation
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQLMark Wong
 
Java Lambda Expressions.pptx
Java Lambda Expressions.pptxJava Lambda Expressions.pptx
Java Lambda Expressions.pptxSameerAhmed593310
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
 
Clean Code - The Next Chapter
Clean Code - The Next ChapterClean Code - The Next Chapter
Clean Code - The Next ChapterVictor Rentea
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework AngularLhouceine OUHAMZA
 
Caliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for ScalaCaliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for ScalaPierre Ricadat
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)Yacine Rezgui
 

La actualidad más candente (20)

Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Writing php extensions in golang
Writing php extensions in golangWriting php extensions in golang
Writing php extensions in golang
 
OrientDB introduction - NoSQL
OrientDB introduction - NoSQLOrientDB introduction - NoSQL
OrientDB introduction - NoSQL
 
Angular 10 course_content
Angular 10 course_contentAngular 10 course_content
Angular 10 course_content
 
Indexing & Query Optimization
Indexing & Query OptimizationIndexing & Query Optimization
Indexing & Query Optimization
 
Angular 8
Angular 8 Angular 8
Angular 8
 
Spring data presentation
Spring data presentationSpring data presentation
Spring data presentation
 
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQL
 
Java Lambda Expressions.pptx
Java Lambda Expressions.pptxJava Lambda Expressions.pptx
Java Lambda Expressions.pptx
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalités
 
Clean Code - The Next Chapter
Clean Code - The Next ChapterClean Code - The Next Chapter
Clean Code - The Next Chapter
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework Angular
 
Caliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for ScalaCaliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for Scala
 
Chapter 5.pptx
Chapter 5.pptxChapter 5.pptx
Chapter 5.pptx
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)
 
Quarkus k8s
Quarkus   k8sQuarkus   k8s
Quarkus k8s
 
Linux intro 4 awk + makefile
Linux intro 4  awk + makefileLinux intro 4  awk + makefile
Linux intro 4 awk + makefile
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 

Similar a Drools

Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovyguest6e3bed
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation GroovyJS Bournival
 
Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojurelolopetit
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012Rodolfo Ripado
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyGuillaume Laforge
 
Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Guillaume Laforge
 
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Yannick Chartois
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web5pidou
 
Java 5, un blian
Java 5, un blianJava 5, un blian
Java 5, un bliantareq
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilanteejug
 
Scripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptxScripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptxFrancisRUKAN
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturiteRémi Alvado
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABESABES
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieurFredy Fadel
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applicationsgoldoraf
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Mejdeddine Bouzouita
 

Similar a Drools (20)

Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojure
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec Groovy
 
Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008
 
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web
 
Java 5, un blian
Java 5, un blianJava 5, un blian
Java 5, un blian
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilan
 
Php4 Mysql
Php4 MysqlPhp4 Mysql
Php4 Mysql
 
Dynamic Languages
Dynamic LanguagesDynamic Languages
Dynamic Languages
 
Scripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptxScripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptx
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturite
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABES
 
Presentation JPA
Presentation JPAPresentation JPA
Presentation JPA
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieur
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124
 

Más de Klee Group

Web Sémantique — Linked Data
Web Sémantique — Linked DataWeb Sémantique — Linked Data
Web Sémantique — Linked DataKlee Group
 
Introduction AOP
Introduction AOPIntroduction AOP
Introduction AOPKlee Group
 
Panorama d'applications Web
Panorama d'applications WebPanorama d'applications Web
Panorama d'applications WebKlee Group
 
Sécurité des applications Web
Sécurité des applications WebSécurité des applications Web
Sécurité des applications WebKlee Group
 
Application lifecycle management
Application lifecycle managementApplication lifecycle management
Application lifecycle managementKlee Group
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
Architecture orientée service (SOA)
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)Klee Group
 

Más de Klee Group (11)

HTML5
HTML5HTML5
HTML5
 
Web Sémantique — Linked Data
Web Sémantique — Linked DataWeb Sémantique — Linked Data
Web Sémantique — Linked Data
 
Introduction AOP
Introduction AOPIntroduction AOP
Introduction AOP
 
Panorama d'applications Web
Panorama d'applications WebPanorama d'applications Web
Panorama d'applications Web
 
Internet@TV
Internet@TVInternet@TV
Internet@TV
 
Sécurité des applications Web
Sécurité des applications WebSécurité des applications Web
Sécurité des applications Web
 
noSQL
noSQLnoSQL
noSQL
 
Talend
TalendTalend
Talend
 
Application lifecycle management
Application lifecycle managementApplication lifecycle management
Application lifecycle management
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Architecture orientée service (SOA)
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)
 

Drools

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.