Search in sources :

Example 26 with Address

use of org.drools.compiler.Address in project drools by kiegroup.

the class NullSafeDereferencingTest method testNullSafeNullComparison2.

@Test
public void testNullSafeNullComparison2() {
    String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " $street : String()\n" + " Person( address!.street == $street ) \n" + "then\n" + "end";
    KieBase kbase = loadKnowledgeBaseFromString(str);
    KieSession ksession = kbase.newKieSession();
    ksession.insert(new Person("Mario", 38));
    ksession.insert("Main Street");
    Person mark = new Person("Mark", 37);
    mark.setAddress(new Address("Main Street"));
    ksession.insert(mark);
    Person edson = new Person("Edson", 34);
    edson.setAddress(new Address(null));
    ksession.insert(edson);
    assertEquals(1, ksession.fireAllRules());
    ksession.dispose();
}
Also used : Address(org.drools.compiler.Address) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.compiler.Person) Test(org.junit.Test)

Example 27 with Address

use of org.drools.compiler.Address in project drools by kiegroup.

the class DeclareTest method executeTypeSafeDeclarations.

private void executeTypeSafeDeclarations(final String str, final boolean mustSucceed) {
    final KieBase kbase;
    try {
        kbase = loadKnowledgeBaseFromString(str);
        if (!mustSucceed) {
            fail("Compilation Should fail");
        }
    } catch (final Throwable e) {
        if (mustSucceed) {
            fail("Compilation Should succeed");
        }
        return;
    }
    final KieSession ksession = createKnowledgeSession(kbase);
    final List list = new ArrayList();
    ksession.setGlobal("list", list);
    final Address a = new Address("s1");
    final Person p = new Person("yoda");
    p.setObject(a);
    ksession.insert(p);
    ksession.fireAllRules();
    assertEquals(p, list.get(0));
}
Also used : Address(org.drools.compiler.Address) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Person(org.drools.compiler.Person)

Example 28 with Address

use of org.drools.compiler.Address in project drools by kiegroup.

the class Misc2Test method testUpdateWithNonEffectiveActivations.

@Test
public void testUpdateWithNonEffectiveActivations() throws Exception {
    // JBRULES-3604
    String str = "package inheritance\n" + "\n" + "import org.drools.compiler.Address\n" + "\n" + "rule \"Parent\"\n" + "    enabled false\n" + "    when \n" + "        $a : Address(suburb == \"xyz\")\n" + "    then \n" + "        System.out.println( $a ); \n" + "end \n" + "rule \"Child\" extends \"Parent\" \n" + "    when \n" + "        $b : Address( this == $a, street == \"123\")\n" + "    then \n" + "        System.out.println( $b ); \n" + "end";
    KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    builder.add(ResourceFactory.newByteArrayResource(str.getBytes()), ResourceType.DRL);
    if (builder.hasErrors()) {
        throw new RuntimeException(builder.getErrors().toString());
    }
    InternalKnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
    knowledgeBase.addPackages(builder.getKnowledgePackages());
    KieSession ksession = knowledgeBase.newKieSession();
    Address address = new Address();
    address.setSuburb("xyz");
    FactHandle addressHandle = ksession.insert(address);
    int rulesFired = ksession.fireAllRules();
    assertEquals(0, rulesFired);
    address.setStreet("123");
    ksession.update(addressHandle, address);
    rulesFired = ksession.fireAllRules();
    System.out.println(rulesFired);
    assertEquals(1, rulesFired);
    ksession.dispose();
}
Also used : KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) Address(org.drools.compiler.Address) InternalFactHandle(org.drools.core.common.InternalFactHandle) FactHandle(org.kie.api.runtime.rule.FactHandle) DefaultFactHandle(org.drools.core.common.DefaultFactHandle) KieSession(org.kie.api.runtime.KieSession) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) InternalKnowledgeBase(org.drools.core.impl.InternalKnowledgeBase) Test(org.junit.Test)

Example 29 with Address

use of org.drools.compiler.Address in project drools by kiegroup.

the class QueryTest method testQueriesWithVariableUnificationOnNestedFields.

@Test
public void testQueriesWithVariableUnificationOnNestedFields() throws Exception {
    String str = "";
    str += "package org.drools.compiler.test  \n";
    str += "import org.drools.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 = SerializationHelper.serializeObject(loadKnowledgeBaseFromString(str));
    KieSession ksession = createKieSession(kbase);
    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.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.compiler.DomainObject) InsertedObject(org.drools.compiler.InsertedObject) Person(org.drools.compiler.Person) Test(org.junit.Test)

Example 30 with Address

use of org.drools.compiler.Address in project drools by kiegroup.

the class FromTest method testFromNodeWithMultipleBetas.

@Test
public void testFromNodeWithMultipleBetas() throws Exception {
    final String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + "   $p : Person( $name : name, $addresses : addresses )\n" + "   $c : Cheese( $type: type == $name )\n" + "   $a : Address( street == $type, suburb == $name ) from $addresses\n" + "then\n" + "end\n";
    final KieBase kbase = loadKnowledgeBaseFromString(str);
    final KieSession ksession = kbase.newKieSession();
    final Person p = new Person("x");
    p.addAddress(new Address("x", "x", "x"));
    p.addAddress(new Address("y", "y", "y"));
    ksession.insert(p);
    ksession.insert(new Cheese("x"));
    ksession.fireAllRules();
    ksession.dispose();
}
Also used : Address(org.drools.compiler.Address) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.compiler.Cheese) Person(org.drools.compiler.Person) Test(org.junit.Test)

Aggregations

Address (org.drools.compiler.Address)32 Person (org.drools.compiler.Person)30 Test (org.junit.Test)30 KieSession (org.kie.api.runtime.KieSession)30 KieBase (org.kie.api.KieBase)22 ArrayList (java.util.ArrayList)16 List (java.util.List)12 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)7 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)7 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)7 MVELObjectClassFieldReader (org.drools.core.base.extractors.MVELObjectClassFieldReader)4 AlphaNode (org.drools.core.reteoo.AlphaNode)4 ObjectTypeNode (org.drools.core.reteoo.ObjectTypeNode)4 MvelConstraint (org.drools.core.rule.constraint.MvelConstraint)4 AlphaNodeFieldConstraint (org.drools.core.spi.AlphaNodeFieldConstraint)4 Cheese (org.drools.compiler.Cheese)3 KieHelper (org.kie.internal.utils.KieHelper)3 InternalFactHandle (org.drools.core.common.InternalFactHandle)2 KiePackage (org.kie.api.definition.KiePackage)2 InputStreamReader (java.io.InputStreamReader)1