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();
}
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));
}
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();
}
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"));
}
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();
}
Aggregations