Search in sources :

Example 11 with Toy

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

the class OOPathBindTest method testBindListWithConstraint.

@Test
public void testBindListWithConstraint() {
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "global java.util.List list\n" + "\n" + "rule R when\n" + "  Man( $toys: /wife/children[age > 10].toys )\n" + "then\n" + "  list.add( $toys.size() );\n" + "end\n";
    final KieSession ksession = new KieHelper().addContent(drl, ResourceType.DRL).build().newKieSession();
    final List<Integer> 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", 8);
    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(2);
}
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 12 with Toy

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

the class OOPathMultilevelTest method testScenarioTwoLevelPathWithConstraint.

private void testScenarioTwoLevelPathWithConstraint(final String drl) {
    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("Charlie", 12);
    alice.addChild(charlie);
    final Child debbie = new Child("Debbie", 8);
    alice.addChild(debbie);
    final Child eric = new Child("Eric", 15);
    alice.addChild(eric);
    charlie.addToy(new Toy("car"));
    charlie.addToy(new Toy("ball"));
    debbie.addToy(new Toy("doll"));
    eric.addToy(new Toy("bike"));
    ksession.insert(5);
    ksession.insert(bob);
    ksession.fireAllRules();
    Assertions.assertThat(list).containsExactlyInAnyOrder("car", "ball");
}
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)

Example 13 with Toy

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

the class OOPathMultilevelTest method testClassTwoLevelPath.

@Test
public void testClassTwoLevelPath() {
    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/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", 8);
    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", "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 14 with Toy

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

use of org.drools.compiler.oopath.model.Toy 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)

Aggregations

ArrayList (java.util.ArrayList)18 Man (org.drools.compiler.oopath.model.Man)18 Toy (org.drools.compiler.oopath.model.Toy)18 Child (org.drools.compiler.oopath.model.Child)17 Woman (org.drools.compiler.oopath.model.Woman)17 KieSession (org.kie.api.runtime.KieSession)16 KieHelper (org.kie.internal.utils.KieHelper)16 Test (org.junit.Test)15 KieBase (org.kie.api.KieBase)2 BabyBoy (org.drools.compiler.oopath.model.BabyBoy)1 BabyGirl (org.drools.compiler.oopath.model.BabyGirl)1 School (org.drools.compiler.oopath.model.School)1 InternalFactHandle (org.drools.core.common.InternalFactHandle)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