{"id":391,"date":"2010-02-13T17:14:17","date_gmt":"2010-02-13T15:14:17","guid":{"rendered":"http:\/\/loicmathieu.free.fr\/wordpress\/?p=391"},"modified":"2010-02-13T17:14:17","modified_gmt":"2010-02-13T15:14:17","slug":"chti-jug-drools-v5-et-drools-planner","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-drools-v5-et-drools-planner\/","title":{"rendered":"Ch&rsquo;ti Jug: Drools v5 et Drools Planner"},"content":{"rendered":"<p>Jeudi 21 janvier s&rsquo;est tenu dans les locaux de l&rsquo;<a href=\"http:\/\/www.univ-lille1.fr\/\" target=\"_blank\">Universit\u00e9 de Lille 1<\/a> une session du <a id=\"di.m\" title=\"Ch'ti Jug\" href=\"http:\/\/chtijug.org\/\">Ch&rsquo;ti Jug<\/a> sponsoris\u00e9e par <a href=\"http:\/\/www.cylande.com\" target=\"_blank\">Cylande <\/a>sur Drools:\u00a0 <a href=\"http:\/\/chtijug.org\/rendez-vous-le-21-janvier-drools-avec-cylande-et-luniversite-de-lille-1\/\" target=\"_blank\">Drools, avec Cylande et l&rsquo;Universit\u00e9 Lille 1<\/a><\/p>\n<p>Pour ceux qui ne savent pas ce qu&rsquo;est le Ch&rsquo;ti Jug ou ce qu&rsquo;est un  Jug, voir l&rsquo;introduction de mon article sur la premi\u00e8re session \u00e0 laquelle j&rsquo;ai particip\u00e9:\u00a0 <a href=\"http:\/\/loicmathieu.free.fr\/wordpress\/index.php\/informatique\/session-chti-jug-sur-les-technologies-google\/\" target=\"_blank\">Ch\u2019ti  Jug: les technologies Google<\/a><\/p>\n<p>Cette session \u00e9t\u00e9 anim\u00e9e par Mark Proctor, Project Leader de <a href=\"http:\/\/www.jboss.org\/drools\/\" target=\"_blank\">Drools <\/a>et Geoffrey De Smet cr\u00e9ateur de <a href=\"http:\/\/www.jboss.org\/drools\/drools-planner.html\" target=\"_blank\">Drools Planner<\/a>.<\/p>\n<p>Le premi\u00e8re partie nous as donc parl\u00e9 de Drools version 5, en commen\u00e7ant par une explication de ce qu&rsquo;est un moteur de r\u00e8gle et des sp\u00e9cificit\u00e9 de Drools. La conf\u00e9rence \u00e9t\u00e9 d&rsquo;un niveau technique tr\u00e8s \u00e9lev\u00e9, je ne vais pas ici tout vous rapporter. Si vous d\u00e9sirez savoir ce qu&rsquo;est un moteur de r\u00e8gle et comment marche Drools je vous conseil de lire l&rsquo;excellent article du blog de Xebia:<a title=\"Lien permanent pour Drools et les moteurs de  r\u00e8gles\" rel=\"bookmark\" href=\"http:\/\/blog.xebia.fr\/2010\/01\/08\/drools-et-les-moteurs-de-regles\/\" target=\"_blank\"> Drools et les moteurs de r\u00e8gles<\/a><\/p>\n<p>Pour ne pas parait trop paresseux, je vais quand m\u00eame vous donner, p\u00eale-m\u00eale, quelques informations glan\u00e9 lors de la conf\u00e9rences:<\/p>\n<ul><li><strong>Int\u00e9gration<\/strong><strong> avec Hibernate<\/strong>: on peut acc\u00e9der directement \u00e0 la session depuis un pattern via $hbm, par exemple $hbm.getNamesQuery(\u00ab\u00a0myQuery\u00a0\u00bb);<\/li>\n\n<li><strong>Timers<\/strong>: permet de mettre des contraintes de temps sur une r\u00e8gle. Utilisation d&rsquo;expression de type crontab possible.<\/li>\n\n<li><strong>Calendars<\/strong>: permet d&rsquo;ex\u00e9cuter une r\u00e8gles \u00e0 une date donn\u00e9es uniquement.<\/li>\n\n<li><strong>logicalInsert<\/strong>: permet d&rsquo;enlever automatiquement un objet quand la r\u00e8gle devient fausse. Par exemple, une r\u00e8gle ajoute un permis de novice quand on a moins de deux ans de permis, le permis de novice est ajout\u00e9 avec un logicalInsert, d\u00e8s qu&rsquo;on a plus de deux ans de permis, le permis de novice est automatiquement enlev\u00e9.<\/li>\n\n<li><strong>CEP<\/strong>: Complex Event Processing: syst\u00e8me d&rsquo;\u00e9v\u00e8nement proche de CEP avec la possibilit\u00e9 de g\u00e9rer des \u00e9v\u00e8nement changeant dans le temps.<\/li>\n\n<li><strong>DSL<\/strong>: possibilit\u00e9 de d\u00e9finir son propre langage (DSL: Domain Specific Language)<\/li>\n\n<li>self-monitoring, adaptive, capacit\u00e9 de debug, &#8230;<\/li>\n<\/ul>\n<p>La deuxi\u00e8me partie de la conf\u00e9rence \u00e9t\u00e9 d\u00e9di\u00e9e \u00e0 Drools Planner: un outils de planification bas\u00e9 sur le moteur de r\u00e8gle Drools. L&rsquo;intervenant a commenc\u00e9 par nous expliquer ce qu&rsquo;est la planification en partant d&rsquo;exemple simple (faire rentrer 5 cartons de tailles diff\u00e9rentes dans un box) en arrivant \u00e0 l&rsquo;exemple type: faire la planification de session d&rsquo;examen.<\/p>\n<p>Pourquoi un logiciel de planification? Calculons tout d&rsquo;abord le nombre de possibilit\u00e9 qu&rsquo;il existe pour la planification de 80 examen dans 40 salles avec 1000 \u00e9l\u00e8ve on en arrive \u00e0 &#8230; 1000 exp (80 * 40), ce qui donne plus de possibilit\u00e9 que le nombre d&rsquo;atomes de l&rsquo;univers &#8230; et il faudrait \u00e0 un super calculateur plusieurs milliers d&rsquo;ann\u00e9es pour arriver \u00e0 tous les tester! Pour r\u00e9soudre ce type de probl\u00e9matique la solution na\u00efve de tester toutes les combinaisons possible (aussi appeler brute force) n&rsquo;est donc pas possible. Arrive alors les algorithme qui permettent de trouver une solution \u00ab\u00a0acceptable\u00a0\u00bb qui ne sera bien sur pas la meilleur (qui ne peut \u00eatre trouv\u00e9e que en testant toutes les combinaison) mais une solution quand m\u00eame! Dans ces probl\u00e8me, une solution n&rsquo;est m\u00eame pas assur\u00e9!<\/p>\n<p>Tout d&rsquo;abord, on doit d\u00e9finir les contraintes que l&rsquo;on s\u00e9pare en deux cat\u00e9gories:<\/p>\n<ol><li> Les contraintes dure (hard): que l&rsquo;on ne peut enfreindre<\/li>\n\n<li>les contrainte l\u00e9g\u00e8re (soft): que l&rsquo;on peut enfreindre<\/li>\n<\/ol>\n<p>Puis on pond\u00e8re les contrainte. L&rsquo;algorithme essayera ensuite de trouver une solution avec le score le moins \u00e9lev\u00e9 &#8230; donc qui viole le moins de contraintes possible (et si possible aucune contrainte dure).<\/p>\n<p>Pour cela, Drools Planner utilise un ensemble d&rsquo;algorithme d\u00e9terministique (pour baisser le nombre de solution \u00e0 tester) puis <span id=\"Les_heuristiques\" class=\"mw-headline\">heuristique<\/span> (pour trouver la meilleur &#8230; ou la moins pire) bas\u00e9 sur l&rsquo;<a href=\"http:\/\/fr.wikipedia.org\/wiki\/Algorithme_de_Rete\" target=\"_blank\">algorithme de RETE<\/a>. Le r\u00e9sultat est une planification qui n&rsquo;est pas parfaite mais qui est optimis\u00e9 \u00e0 un point qu&rsquo;un humain aurais \u00e9t\u00e9 incapable de faire (m\u00eame si l&rsquo;algorithme du \u00ab\u00a0bon sens\u00a0\u00bb n&rsquo;existant pas, l&rsquo;\u00eatre humain peut parfois simplement optimiser encore le r\u00e9sultat obtenu &#8230;) . Pour \u00e9viter de dire trop de b\u00e9tise (j&rsquo;esp\u00e8re ne pas avoir fait d&rsquo;erreur jusqu&rsquo;ici), je ne vais pas m&rsquo;\u00e9taler plus.<\/p>\n<p>Pour conclure: une conf\u00e9rence de tr\u00e8s haut niveau technique et tr\u00e8s int\u00e9ressant.<\/p>","protected":false},"excerpt":{"rendered":"<p>Jeudi 21 janvier s&rsquo;est tenu dans les locaux de l&rsquo;Universit\u00e9 de Lille 1 une session du Ch&rsquo;ti Jug sponsoris\u00e9e par Cylande sur Drools:\u00a0 Drools, avec Cylande et l&rsquo;Universit\u00e9 Lille 1 Pour ceux qui ne savent pas ce qu&rsquo;est le Ch&rsquo;ti Jug ou ce qu&rsquo;est un Jug, voir l&rsquo;introduction de mon article sur la premi\u00e8re session \u00e0 laquelle j&rsquo;ai particip\u00e9:\u00a0 Ch\u2019ti Jug: les technologies Google Cette session \u00e9t\u00e9 anim\u00e9e par Mark Proctor, Project Leader de Drools et Geoffrey De Smet cr\u00e9ateur&#8230;<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-drools-v5-et-drools-planner\/\">Lire la suite<span class=\"screen-reader-text\"> Lire la suite<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[119,120,11,122,121],"class_list":["post-391","post","type-post","status-publish","format-standard","hentry","category-informatique","tag-drools","tag-drools-planner","tag-java","tag-moteur-de-regles","tag-planification"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":386,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-html5-websocket-et-autres-protocole-de-communication\/","url_meta":{"origin":391,"position":0},"title":"Ch&rsquo;ti JUG: HTML5: WebSocket et autres protocole de communication","author":"admin","date":"dimanche 13 d\u00e9cembre 2009","format":false,"excerpt":"Jeudi s'est tenu dans les locaux d'ADEO une session du Ch'ti Jug sur HTML5 et tout particuli\u00e8rement les WebSockets: Kaazing HTML5 WebSocket Talk at the Ch\u2019ti JUG Meeting in Lille, France Pour ceux qui ne savent pas ce qu'est le Ch'ti Jug ou ce qu'est un Jug, voir l'introduction de\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":566,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-lili-et-cassandra\/","url_meta":{"origin":391,"position":1},"title":"Ch&rsquo;ti JUG : Lili et Cassandra","author":"admin","date":"jeudi 15 d\u00e9cembre 2011","format":false,"excerpt":"Le 12 d\u00e9cembre s'est tenu dans les locaux de l'IUT A de Lille une session du Ch'ti JUG sur Lili et Cassandra deux outils autour des bases de donn\u00e9es NoSql. La pr\u00e9sentation de Lili a \u00e9t\u00e9 faite par Stevens Noel et celle sur Cassandra par J\u00e9r\u00e9my Sevellec. Ayant d\u00e9j\u00e0 \u00e9crit\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":399,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/ch%e2%80%99ti-jug-glassfish-esb\/","url_meta":{"origin":391,"position":2},"title":"Ch\u2019ti Jug: GlassFish ESB","author":"admin","date":"lundi  1 mars 2010","format":false,"excerpt":"Jeudi 21 janvier s\u2019est tenu une session du Ch\u2019ti Jug sponsoris\u00e9e par\u00a0 Cap Gemini sur GlassFish ESB : GlassFish ESB avec CAPGEMINI. Pour ceux qui ne savent pas ce qu\u2019est le Ch\u2019ti Jug ou ce qu\u2019est un Jug, voir l\u2019introduction de mon article sur la premi\u00e8re session \u00e0 laquelle j\u2019ai\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":377,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/session-chti-jug-sur-les-technologies-google\/","url_meta":{"origin":391,"position":3},"title":"Ch&rsquo;ti Jug: les technologies Google","author":"admin","date":"mercredi 11 novembre 2009","format":false,"excerpt":"Hello, Lundi j'ai \u00e9t\u00e9 \u00e0 la session du Ch'ti Jug sur les technologies Google qui s'est pass\u00e9 \u00e0 l'ISEN et \u00e9tait sponsoris\u00e9e par SII. C'\u00e9tait la premi\u00e8re fois que j'assistais \u00e0 un \u00e9v\u00e8nement organis\u00e9 par le Ch'ti Jug et comme c'\u00e9tait int\u00e9ressant, j'aimerais partager avec vous l\u00e0 dessus. Ch'ti Jug?\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"Google Wave","src":"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=350%2C200 1x, https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=525%2C300 1.5x"},"classes":[]},{"id":408,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/ch%e2%80%99ti-jug-git-et-mockito\/","url_meta":{"origin":391,"position":4},"title":"Ch\u2019ti Jug: GIT et Mockito","author":"admin","date":"mercredi 26 mai 2010","format":false,"excerpt":"Mardi 20 avril s'est d\u00e9roul\u00e9 une session du Ch'ti JUG sur GIT et Mockito sponsoris\u00e9 par ProxiAD : GIT et Mockito avec ProxiAD Pour ceux qui ne savent pas ce qu\u2019est le Ch\u2019ti Jug ou ce qu\u2019est un Jug, voir l\u2019introduction de mon article sur la premi\u00e8re session \u00e0 laquelle\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":419,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-nosql\/","url_meta":{"origin":391,"position":5},"title":"Ch&rsquo;ti JUG : NoSQL","author":"admin","date":"lundi 20 d\u00e9cembre 2010","format":false,"excerpt":"Le 2 d\u00e9cembre s'est tenu dans les locaux de l'IUT A de Lille une session du Ch'ti JUG sur les technologie NoSQL anim\u00e9 par Olivier Mallassi. L'intervenant a commenc\u00e9 la conf\u00e9rence par un bref historique de la mani\u00e8re dont les donn\u00e9es on \u00e9t\u00e9 stock\u00e9es dans le monde de l'informatique: Au\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/comments?post=391"}],"version-history":[{"count":0,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/391\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/media?parent=391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/categories?post=391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/tags?post=391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}