use of org.drools.mvel.compiler.Person in project drools by kiegroup.
the class JittingTest method testJitting.
private void testJitting(final String drl) {
KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
ksession.insert(new Person("mark", 37));
ksession.insert(new Person("mario", 38));
ksession.fireAllRules();
ksession.dispose();
}
use of org.drools.mvel.compiler.Person in project drools by kiegroup.
the class JittingTest method testMvelJitDivision.
@Test
public void testMvelJitDivision() {
// DROOLS-2928
String drl = "import " + Person.class.getName() + ";\n" + "rule R1 when\n" + " Person( name == \"John\", $age1 : age )\n" + " Person( name == \"Paul\", age > ((2*$age1)/3) )\n" + "then end\n";
final KieModule kieModule = KieUtil.getKieModuleFromDrls("test", kieBaseTestConfiguration, drl);
final KieBase kieBase = KieBaseUtil.newKieBaseFromKieModuleWithAdditionalOptions(kieModule, kieBaseTestConfiguration, ConstraintJittingThresholdOption.get(0));
final KieSession ksession = kieBase.newKieSession();
Person john = new Person("John", 20);
ksession.insert(john);
Person paul = new Person("Paul", 20);
ksession.insert(paul);
int fired = ksession.fireAllRules();
assertEquals(1, fired);
}
use of org.drools.mvel.compiler.Person in project drools by kiegroup.
the class FireUntilHaltTest method testFireUntilHaltFailingAcrossEntryPoints.
@Test
public void testFireUntilHaltFailingAcrossEntryPoints() throws Exception {
String rule1 = "package org.drools.mvel.compiler\n";
rule1 += "global java.util.List list\n";
rule1 += "rule testFireUntilHalt\n";
rule1 += "when\n";
rule1 += " Cheese()\n";
rule1 += " $p : Person() from entry-point \"testep2\"\n";
rule1 += "then \n";
rule1 += " list.add( $p ) ;\n";
rule1 += "end\n";
KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, rule1);
KieSession ksession = kbase.newKieSession();
final EntryPoint ep = ksession.getEntryPoint("testep2");
final List list = new ArrayList();
ksession.setGlobal("list", list);
ksession.insert(new Cheese("cheddar"));
ksession.fireAllRules();
final Thread t1 = new Thread(ksession::fireUntilHalt);
t1.start();
Thread.sleep(500);
ep.insert(new Person("darth"));
Thread.sleep(500);
ksession.halt();
t1.join(5000);
final boolean alive = t1.isAlive();
if (alive) {
t1.interrupt();
}
assertFalse("Thread should have died!", alive);
assertEquals(1, list.size());
}
use of org.drools.mvel.compiler.Person in project drools by kiegroup.
the class FireUntilHaltTest method testSubmitOnFireUntilHalt.
@Test
public void testSubmitOnFireUntilHalt() throws InterruptedException {
final String drl = "import " + Person.class.getCanonicalName() + "\n" + "global java.util.List list;" + "rule R when\n" + " Person( happy, age >= 18 )\n" + "then\n" + " list.add(\"happy adult\");" + "end";
KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, drl);
KieSession kSession = kbase.newKieSession();
final List<String> list = new ArrayList<>();
kSession.setGlobal("list", list);
new Thread(kSession::fireUntilHalt).start();
final Person p = new Person("me", 17, true);
final FactHandle fh = kSession.insert(p);
Thread.sleep(100L);
assertEquals(0, list.size());
kSession.submit(kieSession -> {
p.setAge(18);
p.setHappy(false);
kieSession.update(fh, p);
});
Thread.sleep(100L);
assertEquals(0, list.size());
kSession.submit(kieSession -> {
p.setHappy(true);
kieSession.update(fh, p);
});
Thread.sleep(100L);
assertEquals(1, list.size());
kSession.halt();
kSession.dispose();
}
use of org.drools.mvel.compiler.Person in project drools by kiegroup.
the class PatternBuilderForQueryTest method testRuleWithQuery.
@Test
public void testRuleWithQuery() throws Exception {
final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl();
final PackageDescr packageDescr = new PackageDescr("p1");
QueryDescr queryDescr = new QueryDescr("query1");
queryDescr.addParameter("String", "$name");
queryDescr.addParameter("int", "$age");
queryDescr.addParameter("String", "$likes");
packageDescr.addRule(queryDescr);
AndDescr lhs = new AndDescr();
queryDescr.setLhs(lhs);
PatternDescr pattern = new PatternDescr(Person.class.getName());
lhs.addDescr(pattern);
pattern.addConstraint(new BindingDescr("$name", "name", true));
pattern.addConstraint(new BindingDescr("$age", "age", true));
pattern.addConstraint(new BindingDescr("$likes", "likes", true));
RuleDescr ruleDescr = new RuleDescr("rule-1");
packageDescr.addRule(ruleDescr);
lhs = new AndDescr();
ruleDescr.setLhs(lhs);
pattern = new PatternDescr(Cheese.class.getName());
lhs.addDescr(pattern);
pattern.addConstraint(new BindingDescr("$type", "type"));
pattern = new PatternDescr("query1");
pattern.setQuery(true);
lhs.addDescr(pattern);
ExprConstraintDescr expr = new ExprConstraintDescr("'bobba'");
expr.setPosition(0);
expr.setType(Type.POSITIONAL);
pattern.addConstraint(expr);
expr = new ExprConstraintDescr("$age");
expr.setPosition(1);
expr.setType(Type.POSITIONAL);
pattern.addConstraint(expr);
expr = new ExprConstraintDescr("$type");
expr.setPosition(2);
expr.setType(Type.POSITIONAL);
pattern.addConstraint(expr);
ruleDescr.setConsequence("System.out.println(\"age: \" + $age);");
builder.addPackage(packageDescr);
assertLength(0, builder.getErrors().getErrors());
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(Arrays.asList(new KiePackage[] { builder.getPackage(packageDescr.getName()) }));
final KieSession session = kbase.newKieSession();
session.insert(new Person("bobba", "stilton", 90));
session.insert(new Person("bobba", "brie", 80));
session.insert(new Person("bobba", "brie", 75));
session.insert(new Person("darth", "brie", 100));
session.insert(new Person("luke", "brie", 25));
session.insert(new Cheese("brie", 25));
session.fireAllRules();
}
Aggregations