Search in sources :

Example 21 with Address

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

the class CustomOperatorTest method testCustomOperatorUsingCollections.

@Test
public void testCustomOperatorUsingCollections() {
    String str = "import org.drools.compiler.Person\n" + "import org.drools.compiler.Address\n" + "rule R when\n" + "    $alice : Person(name == \"Alice\")\n" + "    $bob : Person(name == \"Bob\", addresses supersetOf $alice.addresses)\n" + "then\n" + "end\n";
    KnowledgeBuilderConfiguration builderConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
    builderConf.setOption(EvaluatorOption.get("supersetOf", new SupersetOfEvaluatorDefinition()));
    KieBase kbase = loadKnowledgeBaseFromString(builderConf, str);
    KieSession ksession = kbase.newKieSession();
    Person alice = new Person("Alice", 30);
    alice.addAddress(new Address("Large Street", "BigTown", "12345"));
    Person bob = new Person("Bob", 30);
    bob.addAddress(new Address("Large Street", "BigTown", "12345"));
    bob.addAddress(new Address("Long Street", "SmallTown", "54321"));
    ksession.insert(alice);
    ksession.insert(bob);
    assertEquals(1, ksession.fireAllRules());
}
Also used : Address(org.drools.compiler.Address) KieBase(org.kie.api.KieBase) KnowledgeBuilderConfiguration(org.kie.internal.builder.KnowledgeBuilderConfiguration) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.compiler.Person) Test(org.junit.Test)

Example 22 with Address

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

the class NullSafeDereferencingTest method testDoubleNullSafe.

@Test
public void testDoubleNullSafe() {
    String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + "   Person( address!.street!.length > 15 ) \n" + "then\n" + "end";
    KieBase kbase = loadKnowledgeBaseFromString(str);
    KieSession ksession = kbase.newKieSession();
    ksession.insert(new Person("Mario", 38));
    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);
    Person alex = new Person("Alex", 34);
    alex.setAddress(new Address("The Main Very Big Street"));
    ksession.insert(alex);
    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 23 with Address

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

the class NullSafeDereferencingTest method testNullSafeNullComparison.

@Test
public void testNullSafeNullComparison() {
    String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + "   Person( address!.street == null ) \n" + "then\n" + "end";
    KieBase kbase = loadKnowledgeBaseFromString(str);
    KieSession ksession = kbase.newKieSession();
    ksession.insert(new Person("Mario", 38));
    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 24 with Address

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

the class NullSafeDereferencingTest method testNullSafeNullComparisonReverseComplex.

@Test
public void testNullSafeNullComparisonReverseComplex() {
    // DROOLS-82
    String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + "   Person( \"Main\".equalsIgnoreCase(address!.street!.substring(0, address!.street!.indexOf(' '))) )\n" + "then\n" + "end";
    KieBase kbase = loadKnowledgeBaseFromString(str);
    KieSession ksession = kbase.newKieSession();
    ksession.insert(new Person("Mario", 38));
    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 25 with Address

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

the class NullSafeDereferencingTest method testNullSafeBinding.

@Test
public void testNullSafeBinding() {
    String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + "   Person( $streetName : address!.street ) \n" + "then\n" + "end";
    KieBase kbase = loadKnowledgeBaseFromString(str);
    KieSession ksession = kbase.newKieSession();
    ksession.insert(new Person("Mario", 38));
    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(2, 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)

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