Search in sources :

Example 1 with Child

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

the class OOPathBenchmarkTest method generateModel.

private static List<Man> generateModel(int nr) {
    final List<Man> model = new ArrayList<Man>();
    for (int i = 0; i < nr; i++) {
        final Man man = new Man("m" + i, 40);
        model.add(man);
        final Woman woman = new Woman("w" + i, 35);
        man.setWife(woman);
        woman.setHusband(man.getName());
        final Child childA = new Child("cA" + i, 12);
        woman.addChild(childA);
        childA.setMother(woman.getName());
        final Child childB = new Child("cB" + i, 10);
        woman.addChild(childB);
        childB.setMother(woman.getName());
        final Toy toyA = new Toy("tA" + i);
        toyA.setOwner(childA.getName());
        childA.addToy(toyA);
        final Toy toyB = new Toy("tB" + i);
        toyB.setOwner(childA.getName());
        childA.addToy(toyB);
        final Toy toyC = new Toy("tC" + i);
        toyC.setOwner(childB.getName());
        childB.addToy(toyC);
    }
    return model;
}
Also used : ArrayList(java.util.ArrayList) Man(org.drools.mvel.compiler.oopath.model.Man) Woman(org.drools.mvel.compiler.oopath.model.Woman) Child(org.drools.mvel.compiler.oopath.model.Child) Toy(org.drools.mvel.compiler.oopath.model.Toy)

Example 2 with Child

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

the class OOPathTest method testPrimitives.

@Test
public void testPrimitives() {
    // DROOLS-1266
    final String drl = "import org.drools.mvel.compiler.oopath.model.*;\n" + "global java.util.List list\n" + "\n" + "rule R when\n" + "  Adult( $x : /children[$y : age]/toys[$t : name] )\n" + "then\n" + "  list.add( $x.getName() + \":\" + $y + \":\" + $t );\n" + "end\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, drl);
    KieSession ksession = kbase.newKieSession();
    final List<String> list = new ArrayList<>();
    ksession.setGlobal("list", list);
    final Man bob = new Man("Bob", 40);
    Child charles = new Child("Charles", 12);
    charles.addToy(new Toy("t1"));
    charles.addToy(new Toy("t2"));
    bob.addChild(charles);
    Child deb = new Child("Debbie", 8);
    deb.addToy(new Toy("t3"));
    deb.addToy(new Toy("t4"));
    bob.addChild(deb);
    ksession.insert(bob);
    ksession.fireAllRules();
    Assertions.assertThat(list).hasSize(4);
    Assert.assertEquals(Arrays.asList(new String[] { "t2:12:t2", "t1:12:t1", "t4:8:t4", "t3:8:t3" }), list);
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Man(org.drools.mvel.compiler.oopath.model.Man) Child(org.drools.mvel.compiler.oopath.model.Child) Toy(org.drools.mvel.compiler.oopath.model.Toy) Test(org.junit.Test)

Example 3 with Child

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

the class OOPathReactiveTest method testRemoveFromReactiveListBasic.

@Test
public void testRemoveFromReactiveListBasic() {
    final String drl = "import org.drools.mvel.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";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, drl);
    KieSession ksession = kbase.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.mvel.compiler.oopath.model.School) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Child(org.drools.mvel.compiler.oopath.model.Child) Test(org.junit.Test)

Example 4 with Child

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

the class OOPathReactiveTest method testReactiveOnBeta.

@Test
public void testReactiveOnBeta() {
    final String drl = "import org.drools.mvel.compiler.oopath.model.*;\n" + "global java.util.List list\n" + "\n" + "rule R when\n" + "  $i : Integer()\n" + "  Man( $toy: /wife/children[age > $i]?/toys )\n" + "then\n" + "  list.add( $toy.getName() );\n" + "end\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, drl);
    KieSession ksession = kbase.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(10);
    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 : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Man(org.drools.mvel.compiler.oopath.model.Man) Woman(org.drools.mvel.compiler.oopath.model.Woman) Child(org.drools.mvel.compiler.oopath.model.Child) Toy(org.drools.mvel.compiler.oopath.model.Toy) Test(org.junit.Test)

Example 5 with Child

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

the class OOPathReactiveTest method testReactiveOnLia.

@Test
public void testReactiveOnLia() {
    final String drl = "import org.drools.mvel.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";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, drl);
    KieSession ksession = kbase.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 : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Man(org.drools.mvel.compiler.oopath.model.Man) Woman(org.drools.mvel.compiler.oopath.model.Woman) Child(org.drools.mvel.compiler.oopath.model.Child) Toy(org.drools.mvel.compiler.oopath.model.Toy) Test(org.junit.Test)

Aggregations

Child (org.drools.mvel.compiler.oopath.model.Child)29 Man (org.drools.mvel.compiler.oopath.model.Man)27 KieSession (org.kie.api.runtime.KieSession)27 ArrayList (java.util.ArrayList)24 KieBase (org.kie.api.KieBase)24 Test (org.junit.Test)21 Toy (org.drools.mvel.compiler.oopath.model.Toy)18 Woman (org.drools.mvel.compiler.oopath.model.Woman)18 InternalFactHandle (org.drools.core.common.InternalFactHandle)3 School (org.drools.mvel.compiler.oopath.model.School)3 Disease (org.drools.mvel.compiler.oopath.model.Disease)2 Collection (java.util.Collection)1 ClassObjectType (org.drools.core.base.ClassObjectType)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 TupleMemory (org.drools.core.reteoo.TupleMemory)1