Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Getting Started With #Drools 6 Slides - JBUG Denmark

798 views

Published on

Getting Started with #Drools 6, for more information visit http://salaboy.com

Published in: Software
  • Be the first to comment

Getting Started With #Drools 6 Slides - JBUG Denmark

  1. 1. GETTING STARTED WITH DROOLS MAURICIO SALATINO - ESTEBAN ALIVERTI JBUG DENMARK APRIL - 2016
  2. 2. GETTING STARTED WITH DROOLS AGENDA ▸ First steps ▸ What is Drools? ▸ DRL language ▸ Execution Cycle ▸ Our First Drools Project ▸ Drools Common Usage ▸ Drools Common Pitfalls ▸ Integrating Drools ▸ Roadmap (7.x version)
  3. 3. GETTING STARTED WITH DROOLS ABOUT US ▸ Mauricio Salatino (aka Salaboy) ▸ Senior Software Engineer @ Red Hat ▸ Drools & jBPM contributor since 2009 ▸ http://salaboy.com ▸ Esteban Aliverti ▸ Senior Software Engineer @ Cognitive ▸ Drools contributor since 2010 ▸ http://ilesteban.wordpress.com
  4. 4. GETTING STARTED WITH DROOLS WHAT IS DROOLS? ▸ Lightweight Rule Engine (a library) ▸ Rule Engine -> Inference Engine ▸ Data Driven -> Forward Chaining Algorithms ▸ Goal Driven -> Backward Chaining Algorithms ▸ Change of paradigm from Imperative (Java) to Declarative
  5. 5. GETTING STARTED WITH DROOLS RULE STRUCTURE ▸ rule “Large Orders require approval”
 //<rule attributes>
 When // Right Hand Side
 Order(items.size >= 10 && total >= 100000)
 Then // Left Hand Side
 // Trigger approval process
 end

  6. 6. GETTING STARTED WITH DROOLS DROOLS ENGINE OVERVIEW (STATIC)
  7. 7. GETTING STARTED WITH DROOLS DROOLS ENGINE OVERVIEW (RUNTIME)
  8. 8. GETTING STARTED WITH DROOLS RULE EXECUTION CYCLE
  9. 9. GETTING STARTED WITH DROOLS DROOLS HISTORY ▸ 2003: Created by Mark Proctor and Bob McWhirter ▸ 2005: Acquired by JBoss ▸ 2007: Drools 3.x introduced the first version of the Rete OO Algorithm ▸ 2009: Drools 4.x focused on performance and production ready ▸ 2012: Drools 5.x focused on integration and unification of Drools, jBPM and CEP (KIE was born) ▸ 2014: Drools 6.x focused on infrastructure, deployment and tooling
  10. 10. GETTING STARTED WITH DROOLS KIE PLATFORM ▸ Drools ▸ Drools CEP (Fusion) ▸ jBPM ▸ OptaPlanner ▸ KIE Server (Drools, jBPM & CEP unified server) ▸ Uberfire (uberfireframework.com) ▸ KIE Workbench (Drools, jBPM, Optaplanner Authoring, Runtime & monitoring) ▸ KIE Drools Workbench (Drools Authoring)
  11. 11. GETTING STARTED WITH DROOLS KIE APIS ▸ KieContainer ▸ KieBase ▸ KieSession ▸ insert(Object) ▸ retract(FactHandle) ▸ update(FactHandle, Object) ▸ fireAllRules() / fireAllRules(int) ▸ KieScanner ▸ kmodule.xml DROOLS SPECIFICS
  12. 12. GETTING STARTED WITH DROOLS OUR FIRST DROOLS PROJECT ▸ Simple JAR Java Maven Project ▸ Add Maven Dependencies ▸ drools-compiler ▸ drools-core (transitive) ▸ kie-api (transitive) ▸ CDI Enabled ▸ cdi-api ▸ weld-se-core ▸ beans.xml ▸ KIE specific ▸ kmodule.xml ▸ conventions over configurations
  13. 13. GETTING STARTED WITH DROOLS RULES POWER ▸ Any Java Model (non-intrusive) ▸ Filter Data (Simple Filters) ▸ Correlate Data (Multiple filters between patterns) ▸ Accumulations / Aggregations (accumulate functions) ▸ Inference Chain ▸ Justification Log ▸ Query Data ▸ Truth Maintenance System(TMS)
  14. 14. GETTING STARTED WITH DROOLS COMMON PITFALLS ▸ Start simple, don’t over complicate things ▸ Compare with if/else statements ▸ Too much logic on the RHS ▸ Infinite Loop ▸ Complex (Nested) Models - Facts VS Non-Facts ▸ Cross Product - DB/SQL analogy ▸ From/Eval executed multiple time in RHS ▸ External Service Calls (Sync calls) ▸ Persistence
  15. 15. GETTING STARTED WITH DROOLS INTEGRATE DROOLS ▸ Inside your app (Embedded) ▸ Knowledge as a Service ▸ Custom ▸ Kie Server ▸ Others ▸ CDI ▸ Spring ▸ Camel
  16. 16. GETTING STARTED WITH DROOLS ROADMAP (7.X) ▸ Cloud Deployments ▸ Tooling for the Cloud ▸ Self-service applications (Future) ▸ Different Vertical’s Packages ▸ API refactoring towards ▸ Flexibility ▸ Services ▸ Composition ▸ Drools language improvements ▸ Phreak tuning and fragmentation for distribution
  17. 17. GETTING STARTED WITH DROOLS COMMUNITY ▸ www.drools.org / www.jbpm.org ▸ Drools & jBPM Mailing lists ▸ Report Bugs & Suggest Features: jira.jboss.org ▸ irc.freenode.net ▸ #drools ▸ #jbpm ▸ Blogs: ▸ blog.athico.com ▸ salaboy.com ▸ ilesteban.wordpress.com
  18. 18. QUESTIONS? GETTING STARTED WITH DROOLS
  19. 19. GETTING STARTED WITH DROOLS RETE
  20. 20. GETTING STARTED WITH DROOLS PHREAK

×