Advertisement

Drools5 Community Training: Module 1.5 - Drools Expert First Example

Principal Software Engineer at LearnK8s
Mar. 21, 2011
Advertisement

More Related Content

Advertisement

More from Mauricio (Salaboy) Salatino(20)

Advertisement

Drools5 Community Training: Module 1.5 - Drools Expert First Example

  1.     Drools5 Community Training Sponsored by Plugtree
  2. Module 1.5: Drools Expert  First Example Drools5 Community Training version: 1.0-SNAPSHOT Release Date: 03/16/2011 Under The Creative Common License
  3. Module 1.5: Drools Expert First Example Drools5 Community Training Course by Mauricio "Salaboy" Salatino and Esteban Aliverti is licensed under a Creative Commons Attribution 3.0 Unported License. Based on a work at salaboy.wordpress. com. Permissions beyond the scope of this license may be available at http: //salaboy.wordpress.com/.
  4. Agenda Introduction Business Rule Structure Drools Expert Example Scenario Hands on lab
  5. Drools Expert in 2 slides The core of Drools Lets us express our Knowledge -> Business Rules Lets us create Sessions -> Our World It will be in charge of making inferences between them and firing the correspondent actions. Let's see how it works!
  6. Drools Expert in 2 slides
  7. Business Rule Structure rule "My Rule" when <LHS> Person(name == "John") <CEs> then <RHS> System.out.println("Hi John!"); <Actions> end
  8. Example Scenario
  9. Example Model We can define that a Pet will have a name, type and a position. For this example a Person will have a Pet which he/she can call. And this Person can also call the fire department. The Firefighter will know how to retrieve a Cat from a Tree.
  10. Example Rules Rule "Call Cat when it is in a tree" When my Cat is on a limb in a tree Then I will call my Cat Rule "Call the fire department" When my Cat is on a limb and it doesn't come down when I call Then call the Fire Department Rule "Firefighter gets the cat down" When the Firefighter can reach the Cat Then the Firefighter retrieves the Cat
  11. Technical View of  the Model
  12. Technical View of  the Rules rule "Call Cat when it is in a tree" when $p: Person($pet: pet, petCallCount == 0) $cat: Pet(this == $pet, position == "on a limb", type == PetType.CAT) then //$cat.getName() + " come down!" $p.setPetCallCount($p.getPetCallCount()+1); update($p); end Rule "Call Cat when it is in a tree" When my Cat is on a limb in a tree Then I will call my Cat
  13. Technical View of  the Rules rule "Call the fire department" when $p: Person($pet: pet, petCallCount > 0) $cat: Pet(this == $pet, position == "on a limb", type == PetType.CAT) then Firefighter firefighter = new Firefighter("Fred"); insert(firefighter); end Rule "Call the fire department" When my Cat is on a limb and it doesn't come down when I call Then call the Fire Department
  14. Technical View of  the Rules rule "Firefighter gets the cat down" when $f: Firefighter() $p: Person($pet: pet, petCallCount > 0) $cat: Pet(this == $pet, position == "on a limb", type == PetType.CAT) then $cat.setPosition("on the street"); retract($f); update($cat); end Rule "Firefighter gets the cat down" When the Firefighter can reach the Cat Then the Firefighter retrieves the Cat
  15. Active Scenario in Java For the previous rules to fire in our Java world we need to have: An instance of a Person that contains a relation to its Pet An instance of a Pet that is on a limb Person person = new Person("Salaboy!"); Pet pet = new Pet("mittens", "on a limb", Pet.PetType.CAT); person.setPet(pet);
  16. API's Sneak Preview
  17. Hands On Project Name: drools5/00-Drools5-FirstExample Sources: https://github.com/Salaboy/Drools_jBPM5-Training- Examples Characteristics: Java Project (jar) Uses Maven (pom.xml) Drools Dependencies (core, api, compiler) DRL File (src/test/resources/rules.drl) To do: Run the test (src/test/java/org/plugtree/example/FirstExampleTest.java) Get familiar with the output
  18. Hands On Exercise 1: Create a new rule that inserts a Dog (on the street) when there is Cat on the street too. Create a new rule for the situation when a Cat and a Dog are on the street, the Dog should chase it up to the tree and then the Cat should climb the limb.
  19. Hands On - Solution rule "Cat on the street" when Pet(position == "on the street", type == PetType.CAT) then Pet dog = new Pet("doggy", "on the street" , PetType.DOG); insert (dog); end rule "Cat on the street and a dog is around" when $cat: Pet(position == "on the street", type == PetType.CAT) $dog: Pet(position == "on the street", type == PetType.DOG) then modify($cat){ setPosition("on the limb"); } modify($dog){ setPosition("under the tree"); } end
  20. Hands On - What Happen? Exercise 1: What happens with the execution? Why? Try to find a solution
  21. Briefing Up Covered Topics: Quick review about Drools Expert Project Dependencies A simple example that shows the key things that we need to have to use Drools
  22.     Questions?
  23. Enjoy!  Questions and Feedback are always appreciated! Stay Tuned!
  24.     Contact us at www.plugtree.com
Advertisement