Search in sources :

Example 21 with Child

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

the class OOPathBenchmarkTest method insertFullModel.

private static List<InternalFactHandle> insertFullModel(KieSession ksession, List<Man> model) {
    final List<InternalFactHandle> toBeModified = new ArrayList<InternalFactHandle>();
    for (Man man : model) {
        ksession.insert(man);
        ksession.insert(man.getWife());
        for (Child child : man.getWife().getChildren()) {
            final InternalFactHandle fh = (InternalFactHandle) ksession.insert(child);
            if (child.getAge() == 10) {
                toBeModified.add(fh);
            }
            for (Toy toy : child.getToys()) {
                ksession.insert(toy);
            }
        }
    }
    return toBeModified;
}
Also used : ArrayList(java.util.ArrayList) Man(org.drools.compiler.oopath.model.Man) InternalFactHandle(org.drools.core.common.InternalFactHandle) Child(org.drools.compiler.oopath.model.Child) Toy(org.drools.compiler.oopath.model.Toy)

Example 22 with Child

use of org.drools.compiler.oopath.model.Child 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 23 with Child

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

the class OOPathReactiveTests method testReactiveList.

@Test
public void testReactiveList() {
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "global java.util.List list\n" + "\n" + "rule R when\n" + "  Man( $toy: /wife/children[age > 10]/toys )\n" + "then\n" + "  list.add( $toy.getName() );\n" + "end\n";
    final KieSession ksession = new KieHelper().addContent(drl, ResourceType.DRL).build().newKieSession();
    final List<String> list = new ArrayList<>();
    ksession.setGlobal("list", list);
    final Woman alice = new Woman("Alice", 38);
    final Man bob = new Man("Bob", 40);
    bob.setWife(alice);
    final Child charlie = new Child("Charles", 12);
    final Child debbie = new Child("Debbie", 10);
    alice.addChild(charlie);
    alice.addChild(debbie);
    charlie.addToy(new Toy("car"));
    charlie.addToy(new Toy("ball"));
    debbie.addToy(new Toy("doll"));
    ksession.insert(bob);
    ksession.fireAllRules();
    Assertions.assertThat(list).containsExactlyInAnyOrder("car", "ball");
    list.clear();
    charlie.addToy(new Toy("gun"));
    ksession.fireAllRules();
    Assertions.assertThat(list).containsExactlyInAnyOrder("gun");
}
Also used : 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 24 with Child

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

the class OOPathReactiveTests method testReactiveOnLia.

@Test
public void testReactiveOnLia() {
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "global java.util.List list\n" + "\n" + "rule R when\n" + "  Man( $toy: /wife/children[age > 10]/toys )\n" + "then\n" + "  list.add( $toy.getName() );\n" + "end\n";
    final KieSession ksession = new KieHelper().addContent(drl, ResourceType.DRL).build().newKieSession();
    final List<String> list = new ArrayList<>();
    ksession.setGlobal("list", list);
    final Woman alice = new Woman("Alice", 38);
    final Man bob = new Man("Bob", 40);
    bob.setWife(alice);
    final Child charlie = new Child("Charles", 12);
    final Child debbie = new Child("Debbie", 10);
    alice.addChild(charlie);
    alice.addChild(debbie);
    charlie.addToy(new Toy("car"));
    charlie.addToy(new Toy("ball"));
    debbie.addToy(new Toy("doll"));
    ksession.insert(bob);
    ksession.fireAllRules();
    Assertions.assertThat(list).containsExactlyInAnyOrder("car", "ball");
    list.clear();
    debbie.setAge(11);
    ksession.fireAllRules();
    Assertions.assertThat(list).containsExactlyInAnyOrder("doll");
}
Also used : 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 25 with Child

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

the class OOPathReactiveTests method testReactiveSet.

@Test
public void testReactiveSet() {
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "global java.util.List list\n" + "\n" + "rule R when\n" + "  Man( $disease: /wife/children[age > 10]/diseases )\n" + "then\n" + "  list.add( $disease.getName() );\n" + "end\n";
    final KieSession ksession = new KieHelper().addContent(drl, ResourceType.DRL).build().newKieSession();
    final List<String> list = new ArrayList<>();
    ksession.setGlobal("list", list);
    final Woman alice = new Woman("Alice", 38);
    final Man bob = new Man("Bob", 40);
    bob.setWife(alice);
    final Child charlie = new Child("Charles", 12);
    final Child debbie = new Child("Debbie", 10);
    alice.addChild(charlie);
    alice.addChild(debbie);
    charlie.addDisease(new Disease("flu"));
    charlie.addDisease(new Disease("asthma"));
    debbie.addDisease(new Disease("diabetes"));
    ksession.insert(bob);
    ksession.fireAllRules();
    Assertions.assertThat(list).containsExactlyInAnyOrder("flu", "asthma");
    list.clear();
    charlie.addDisease(new Disease("epilepsy"));
    ksession.fireAllRules();
    Assertions.assertThat(list).containsExactlyInAnyOrder("epilepsy");
}
Also used : Disease(org.drools.compiler.oopath.model.Disease) 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) Test(org.junit.Test)

Aggregations

Child (org.drools.compiler.oopath.model.Child)29 Man (org.drools.compiler.oopath.model.Man)27 KieSession (org.kie.api.runtime.KieSession)27 ArrayList (java.util.ArrayList)24 KieHelper (org.kie.internal.utils.KieHelper)24 Test (org.junit.Test)21 Woman (org.drools.compiler.oopath.model.Woman)18 Toy (org.drools.compiler.oopath.model.Toy)17 School (org.drools.compiler.oopath.model.School)3 InternalFactHandle (org.drools.core.common.InternalFactHandle)3 Disease (org.drools.compiler.oopath.model.Disease)2 KieBase (org.kie.api.KieBase)2 Collection (java.util.Collection)1 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)1 BetaMemory (org.drools.core.reteoo.BetaMemory)1 EntryPointNode (org.drools.core.reteoo.EntryPointNode)1 LeftInputAdapterNode (org.drools.core.reteoo.LeftInputAdapterNode)1 LeftTuple (org.drools.core.reteoo.LeftTuple)1 ObjectTypeNode (org.drools.core.reteoo.ObjectTypeNode)1 ReactiveFromNode (org.drools.core.reteoo.ReactiveFromNode)1