Search in sources :

Example 96 with Person

use of org.drools.mvel.compiler.Person in project drools by kiegroup.

the class FirstOrderLogicTest method testExists2.

@Test
public void testExists2() throws Exception {
    KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(getClass(), kieBaseTestConfiguration, "test_exists.drl");
    KieSession workingMemory = kbase.newKieSession();
    final List list = new ArrayList();
    workingMemory.setGlobal("list", list);
    final Cheese cheddar = new Cheese("cheddar", 7);
    final Cheese provolone = new Cheese("provolone", 5);
    final Person edson = new Person("Edson", "cheddar");
    final Person bob = new Person("Bob", "muzzarela");
    workingMemory.insert(cheddar);
    workingMemory.fireAllRules();
    assertEquals(0, list.size());
    workingMemory.insert(provolone);
    workingMemory.fireAllRules();
    assertEquals(0, list.size());
    workingMemory.insert(edson);
    workingMemory.fireAllRules();
    assertEquals(1, list.size());
    workingMemory.insert(bob);
    workingMemory.fireAllRules();
    assertEquals(1, list.size());
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) Cheese(org.drools.mvel.compiler.Cheese) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 97 with Person

use of org.drools.mvel.compiler.Person in project drools by kiegroup.

the class FirstOrderLogicTest method testCollect.

@Test
public void testCollect() throws Exception {
    List results = new ArrayList();
    KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(getClass(), kieBaseTestConfiguration, "test_Collect.drl");
    KieSession wm = kbase.newKieSession();
    wm.setGlobal("results", results);
    wm.insert(new Cheese("stilton", 10));
    wm.insert(new Cheese("stilton", 7));
    wm.insert(new Cheese("stilton", 8));
    wm.insert(new Cheese("brie", 5));
    wm.insert(new Cheese("provolone", 150));
    wm = SerializationHelper.getSerialisedStatefulKnowledgeSession(wm, true);
    results = (List) wm.getGlobal("results");
    wm.insert(new Cheese("provolone", 20));
    wm.insert(new Person("Bob", "stilton"));
    wm.insert(new Person("Mark", "provolone"));
    wm = SerializationHelper.getSerialisedStatefulKnowledgeSession(wm, true);
    results = (List) wm.getGlobal("results");
    wm.fireAllRules();
    wm = SerializationHelper.getSerialisedStatefulKnowledgeSession(wm, true);
    results = (List) wm.getGlobal("results");
    assertEquals(1, results.size());
    assertEquals(3, ((Collection) results.get(0)).size());
    assertEquals(ArrayList.class.getName(), results.get(0).getClass().getName());
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.mvel.compiler.Cheese) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 98 with Person

use of org.drools.mvel.compiler.Person in project drools by kiegroup.

the class QueryTest method testQueriesWithVariableUnificationOnPatterns.

@Test
public void testQueriesWithVariableUnificationOnPatterns() throws Exception {
    String str = "";
    str += "package org.drools.mvel.compiler.test  \n";
    str += "import org.drools.mvel.compiler.Person \n";
    str += "query peeps( Person $p, String $name, String $likes, int $age ) \n";
    str += "    $p := Person( $name := name, $likes := likes, $age := age ) \n";
    str += "end\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
    KieSession ksession = kbase.newKieSession();
    Person p1 = new Person("darth", "stilton", 100);
    Person p2 = new Person("yoda", "stilton", 300);
    Person p3 = new Person("luke", "brie", 300);
    Person p4 = new Person("bobba", "cheddar", 300);
    ksession.insert(p1);
    ksession.insert(p2);
    ksession.insert(p3);
    ksession.insert(p4);
    org.kie.api.runtime.rule.QueryResults results = ksession.getQueryResults("peeps", new Object[] { Variable.v, Variable.v, Variable.v, Variable.v });
    assertEquals(4, results.size());
    List names = new ArrayList();
    for (org.kie.api.runtime.rule.QueryResultsRow row : results) {
        names.add(((Person) row.get("$p")).getName());
    }
    assertEquals(4, names.size());
    assertTrue(names.contains("luke"));
    assertTrue(names.contains("yoda"));
    assertTrue(names.contains("bobba"));
    assertTrue(names.contains("darth"));
    results = ksession.getQueryResults("peeps", new Object[] { p1, Variable.v, Variable.v, Variable.v });
    assertEquals(1, results.size());
    names = new ArrayList();
    for (org.kie.api.runtime.rule.QueryResultsRow row : results) {
        names.add(((Person) row.get("$p")).getName());
    }
    assertEquals(1, names.size());
    assertTrue(names.contains("darth"));
}
Also used : QueryResultsRow(org.kie.api.runtime.rule.QueryResultsRow) QueryResults(org.kie.api.runtime.rule.QueryResults) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) DomainObject(org.drools.mvel.compiler.DomainObject) InsertedObject(org.drools.mvel.compiler.InsertedObject) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 99 with Person

use of org.drools.mvel.compiler.Person in project drools by kiegroup.

the class QueryTest method testQueriesWithVariableUnificationOnNestedFields.

@Test
public void testQueriesWithVariableUnificationOnNestedFields() throws Exception {
    String str = "";
    str += "package org.drools.mvel.compiler.test  \n";
    str += "import org.drools.mvel.compiler.Person \n";
    str += "query peeps( String $name, String $likes, String $street) \n";
    str += "    $p : Person( $name := name, $likes := likes, $street := address.street ) \n";
    str += "end\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
    KieSession ksession = kbase.newKieSession();
    Person p1 = new Person("darth", "stilton", 100);
    p1.setAddress(new Address("s1"));
    Person p2 = new Person("yoda", "stilton", 300);
    p2.setAddress(new Address("s2"));
    ksession.insert(p1);
    ksession.insert(p2);
    QueryResults results = getQueryResults(ksession, "peeps", new Object[] { Variable.v, Variable.v, Variable.v });
    assertEquals(2, results.size());
    List names = new ArrayList();
    for (org.kie.api.runtime.rule.QueryResultsRow row : results) {
        names.add(((Person) row.get("$p")).getName());
    }
    assertTrue(names.contains("yoda"));
    assertTrue(names.contains("darth"));
    results = getQueryResults(ksession, "peeps", new Object[] { Variable.v, Variable.v, "s1" });
    assertEquals(1, results.size());
    names = new ArrayList();
    for (org.kie.api.runtime.rule.QueryResultsRow row : results) {
        names.add(((Person) row.get("$p")).getName());
    }
    assertTrue(names.contains("darth"));
}
Also used : Address(org.drools.mvel.compiler.Address) QueryResultsRow(org.kie.api.runtime.rule.QueryResultsRow) ArrayList(java.util.ArrayList) QueryResults(org.kie.api.runtime.rule.QueryResults) FlatQueryResults(org.drools.core.runtime.rule.impl.FlatQueryResults) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) DomainObject(org.drools.mvel.compiler.DomainObject) InsertedObject(org.drools.mvel.compiler.InsertedObject) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 100 with Person

use of org.drools.mvel.compiler.Person in project drools by kiegroup.

the class QueryTest method testQueryWithExpressionAsArgument.

@Test
public void testQueryWithExpressionAsArgument() throws Exception {
    // DROOLS-414
    String str = "import org.drools.mvel.compiler.Person\n" + "global java.util.List persons;\n" + "\n" + "query checkLength(String $s, int $l)\n" + "    $s := String( length == $l )\n" + "end\n" + "\n" + "rule R when\n" + "    $i : Integer()\n" + "    $p : Person()\n" + "    checkLength( $p.name, 1 + $i + $p.age; )\n" + "then\n" + "    persons.add( $p );\n" + "end\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
    KieSession ksession = kbase.newKieSession();
    List<Person> list = new ArrayList<Person>();
    ksession.setGlobal("persons", list);
    ksession.insert(1);
    ksession.insert("Mark");
    ksession.insert("Edson");
    ksession.insert("Mario");
    ksession.insert(new Person("Mark", 2));
    ksession.insert(new Person("Edson", 3));
    ksession.insert(new Person("Mario", 4));
    ksession.fireAllRules();
    System.out.println(list);
    assertEquals(2, list.size());
    for (Person p : list) {
        assertTrue(p.getName().equals("Mark") || p.getName().equals("Edson"));
    }
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Aggregations

Person (org.drools.mvel.compiler.Person)196 Test (org.junit.Test)185 KieSession (org.kie.api.runtime.KieSession)178 KieBase (org.kie.api.KieBase)171 ArrayList (java.util.ArrayList)98 List (java.util.List)72 Cheese (org.drools.mvel.compiler.Cheese)46 FactHandle (org.kie.api.runtime.rule.FactHandle)38 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)34 Address (org.drools.mvel.compiler.Address)33 FactWithString (org.drools.mvel.integrationtests.facts.FactWithString)24 InternalFactHandle (org.drools.core.common.InternalFactHandle)23 KiePackage (org.kie.api.definition.KiePackage)18 InternalKnowledgeBase (org.drools.kiesession.rulebase.InternalKnowledgeBase)16 IteratorToList (org.drools.mvel.integrationtests.IteratorToList)15 HashMap (java.util.HashMap)12 ObjectTypeNode (org.drools.core.reteoo.ObjectTypeNode)12 Collection (java.util.Collection)11 DefaultFactHandle (org.drools.core.common.DefaultFactHandle)8 AlphaNode (org.drools.core.reteoo.AlphaNode)8