Search in sources :

Example 1 with School

use of org.drools.compiler.oopath.model.School in project drools by kiegroup.

the class OOPathReactiveTests method testRemoveFromReactiveListBasic.

@Test
public void testRemoveFromReactiveListBasic() {
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "\n" + "rule R2 when\n" + "  School( $child: /children[age >= 13 && age < 20] )\n" + "then\n" + "  System.out.println( $child );\n" + "  insertLogical( $child );\n" + "end\n";
    final KieSession ksession = new KieHelper().addContent(drl, ResourceType.DRL).build().newKieSession();
    final Child charlie = new Child("Charles", 15);
    final Child debbie = new Child("Debbie", 19);
    final School school = new School("Da Vinci");
    school.addChild(charlie);
    ksession.insert(school);
    ksession.fireAllRules();
    assertTrue(ksession.getObjects().contains(charlie));
    assertFalse(ksession.getObjects().contains(debbie));
    school.addChild(debbie);
    ksession.fireAllRules();
    assertTrue(ksession.getObjects().contains(charlie));
    assertTrue(ksession.getObjects().contains(debbie));
    school.getChildren().remove(debbie);
    ksession.fireAllRules();
    assertTrue(ksession.getObjects().contains(charlie));
    assertFalse(ksession.getObjects().contains(debbie));
    school.addChild(debbie);
    ksession.fireAllRules();
    assertTrue(ksession.getObjects().contains(charlie));
    assertTrue(ksession.getObjects().contains(debbie));
    debbie.setAge(20);
    ksession.fireAllRules();
    assertTrue(ksession.getObjects().contains(charlie));
    assertFalse(ksession.getObjects().contains(debbie));
}
Also used : School(org.drools.compiler.oopath.model.School) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) Child(org.drools.compiler.oopath.model.Child) Test(org.junit.Test)

Example 2 with School

use of org.drools.compiler.oopath.model.School in project drools by kiegroup.

the class OOPathReactiveTests method testReactive2Rules.

@Test
public void testReactive2Rules() {
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "global java.util.List toyList\n" + "global java.util.List teenagers\n" + "\n" + "rule R1 when\n" + "  $i : Integer()\n" + "  Man( $toy: /wife/children[age >= $i]/toys )\n" + "then\n" + "  toyList.add( $toy.getName() );\n" + "end\n" + "rule R2 when\n" + "  School( $child: /children[age >= 13] )\n" + "then\n" + "  teenagers.add( $child.getName() );\n" + "end\n";
    final KieSession ksession = new KieHelper().addContent(drl, ResourceType.DRL).build().newKieSession();
    final List<String> toyList = new ArrayList<>();
    ksession.setGlobal("toyList", toyList);
    final List<String> teenagers = new ArrayList<>();
    ksession.setGlobal("teenagers", teenagers);
    final Woman alice = new Woman("Alice", 38);
    final Man bob = new Man("Bob", 40);
    bob.setWife(alice);
    final Child charlie = new Child("Charles", 15);
    final Child debbie = new Child("Debbie", 12);
    alice.addChild(charlie);
    alice.addChild(debbie);
    charlie.addToy(new Toy("car"));
    charlie.addToy(new Toy("ball"));
    debbie.addToy(new Toy("doll"));
    final School school = new School("Da Vinci");
    school.addChild(charlie);
    school.addChild(debbie);
    ksession.insert(13);
    ksession.insert(bob);
    ksession.insert(school);
    ksession.fireAllRules();
    Assertions.assertThat(toyList).containsExactlyInAnyOrder("car", "ball");
    Assertions.assertThat(teenagers).containsExactlyInAnyOrder("Charles");
    toyList.clear();
    debbie.setAge(13);
    ksession.fireAllRules();
    Assertions.assertThat(toyList).containsExactlyInAnyOrder("doll");
    Assertions.assertThat(teenagers).containsExactlyInAnyOrder("Charles", "Debbie");
}
Also used : School(org.drools.compiler.oopath.model.School) ArrayList(java.util.ArrayList) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) Man(org.drools.compiler.oopath.model.Man) Woman(org.drools.compiler.oopath.model.Woman) Child(org.drools.compiler.oopath.model.Child) Toy(org.drools.compiler.oopath.model.Toy) Test(org.junit.Test)

Example 3 with School

use of org.drools.compiler.oopath.model.School in project drools by kiegroup.

the class OOPathReactiveTests method testRemoveFromAndAddToReactiveSet.

@Test
public void testRemoveFromAndAddToReactiveSet() {
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "\n" + "rule R when\n" + "  School( $disease: /children/diseases )\n" + "then\n" + "  insertLogical( $disease );\n" + "end\n";
    final KieSession ksession = new KieHelper().addContent(drl, ResourceType.DRL).build().newKieSession();
    final Disease flu = new Disease("flu");
    final Disease asthma = new Disease("asthma");
    final Disease diabetes = new Disease("diabetes");
    final Child charlie = new Child("Charles", 15);
    charlie.addDisease(flu);
    charlie.addDisease(asthma);
    final Child debbie = new Child("Debbie", 19);
    debbie.addDisease(diabetes);
    final School school = new School("Da Vinci");
    school.addChild(charlie);
    school.addChild(debbie);
    ksession.insert(school);
    ksession.fireAllRules();
    assertTrue(ksession.getObjects().contains(flu));
    assertTrue(ksession.getObjects().contains(asthma));
    assertTrue(ksession.getObjects().contains(diabetes));
    charlie.getDiseases().remove(flu);
    ksession.fireAllRules();
    assertFalse(ksession.getObjects().contains(flu));
    assertTrue(ksession.getObjects().contains(asthma));
    assertTrue(ksession.getObjects().contains(diabetes));
    charlie.getDiseases().remove(asthma);
    ksession.fireAllRules();
    assertFalse(ksession.getObjects().contains(flu));
    assertFalse(ksession.getObjects().contains(asthma));
    assertTrue(ksession.getObjects().contains(diabetes));
    debbie.getDiseases().remove(diabetes);
    ksession.fireAllRules();
    assertFalse(ksession.getObjects().contains(flu));
    assertFalse(ksession.getObjects().contains(asthma));
    assertFalse(ksession.getObjects().contains(diabetes));
    charlie.addDisease(flu);
    ksession.fireAllRules();
    assertTrue(ksession.getObjects().contains(flu));
    assertFalse(ksession.getObjects().contains(asthma));
    assertFalse(ksession.getObjects().contains(diabetes));
    charlie.addDisease(asthma);
    debbie.addDisease(diabetes);
    ksession.fireAllRules();
    assertTrue(ksession.getObjects().contains(flu));
    assertTrue(ksession.getObjects().contains(asthma));
    assertTrue(ksession.getObjects().contains(diabetes));
}
Also used : School(org.drools.compiler.oopath.model.School) Disease(org.drools.compiler.oopath.model.Disease) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) Child(org.drools.compiler.oopath.model.Child) Test(org.junit.Test)

Aggregations

Child (org.drools.compiler.oopath.model.Child)3 School (org.drools.compiler.oopath.model.School)3 Test (org.junit.Test)3 KieSession (org.kie.api.runtime.KieSession)3 KieHelper (org.kie.internal.utils.KieHelper)3 ArrayList (java.util.ArrayList)1 Disease (org.drools.compiler.oopath.model.Disease)1 Man (org.drools.compiler.oopath.model.Man)1 Toy (org.drools.compiler.oopath.model.Toy)1 Woman (org.drools.compiler.oopath.model.Woman)1