Search in sources :

Example 76 with Person

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();
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.mvel.compiler.Person)

Example 77 with Person

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);
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.mvel.compiler.Person) KieModule(org.kie.api.builder.KieModule) Test(org.junit.Test)

Example 78 with Person

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());
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) EntryPoint(org.kie.api.runtime.rule.EntryPoint) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Cheese(org.drools.mvel.compiler.Cheese) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 79 with Person

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();
}
Also used : FactHandle(org.kie.api.runtime.rule.FactHandle) 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)

Example 80 with Person

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();
}
Also used : BindingDescr(org.drools.drl.ast.descr.BindingDescr) PatternDescr(org.drools.drl.ast.descr.PatternDescr) AndDescr(org.drools.drl.ast.descr.AndDescr) Cheese(org.drools.mvel.compiler.Cheese) QueryDescr(org.drools.drl.ast.descr.QueryDescr) KiePackage(org.kie.api.definition.KiePackage) KnowledgeBuilderImpl(org.drools.compiler.builder.impl.KnowledgeBuilderImpl) RuleDescr(org.drools.drl.ast.descr.RuleDescr) KieSession(org.kie.api.runtime.KieSession) PackageDescr(org.drools.drl.ast.descr.PackageDescr) Person(org.drools.mvel.compiler.Person) ExprConstraintDescr(org.drools.drl.ast.descr.ExprConstraintDescr) InternalKnowledgeBase(org.drools.kiesession.rulebase.InternalKnowledgeBase) 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