Search in sources :

Example 1 with Cheese

use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.

the class DescrBuilderTest method testNamedConsequence.

@Test
public void testNamedConsequence() {
    PackageDescr pkg = DescrFactory.newPackage().name("org.drools.mvel.compiler").newRule().name("test").lhs().pattern("Cheese").constraint("type == \"stilton\"").end().namedConsequence().name("c1").end().pattern("Cheese").constraint("type == \"cheddar\"").end().end().rhs("// do something").namedRhs("c1", "// do something else").end().getDescr();
    assertEquals(1, pkg.getRules().size());
    KiePackage kpkg = compilePkgDescr(pkg);
    assertEquals("org.drools.mvel.compiler", kpkg.getName());
    InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages(Collections.singletonList(kpkg));
    KieSession ksession = kbase.newKieSession();
    Cheese stilton = new Cheese("stilton", 5);
    Cheese cheddar = new Cheese("cheddar", 7);
    Cheese brie = new Cheese("brie", 5);
    ksession.insert(stilton);
    ksession.insert(cheddar);
    ksession.insert(brie);
    int rules = ksession.fireAllRules();
    assertEquals(2, rules);
}
Also used : KiePackage(org.kie.api.definition.KiePackage) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.mvel.compiler.Cheese) PackageDescr(org.drools.drl.ast.descr.PackageDescr) InternalKnowledgeBase(org.drools.kiesession.rulebase.InternalKnowledgeBase) EntryPoint(org.kie.api.runtime.rule.EntryPoint) Test(org.junit.Test)

Example 2 with Cheese

use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.

the class JBRULESTest method testJBRules2055.

@Test
public void testJBRules2055() {
    KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(this.getClass(), kieBaseTestConfiguration, "test_JBRules2055.drl");
    KieSession ksession = kbase.newKieSession();
    final List<String> results = new ArrayList<String>();
    ksession.setGlobal("results", results);
    ksession.insert(new Cheese("stilton"));
    ksession.insert(new Cheese("brie"));
    ksession.insert(new Cheese("muzzarella"));
    ksession.insert(new Person("bob", "stilton"));
    ksession.fireAllRules();
    assertEquals(2, results.size());
    assertEquals("stilton", results.get(0));
    assertEquals("brie", results.get(1));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.mvel.compiler.Cheese) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 3 with Cheese

use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.

the class DslTest method testWithExpanderMore.

@Test
public void testWithExpanderMore() throws Exception {
    final Resource resource1 = KieServices.Factory.get().getResources().newClassPathResource("test_expander.dsl", getClass());
    resource1.setSourcePath(TestConstants.TEST_RESOURCES_FOLDER + "test_expander.dsl");
    final Resource resource2 = KieServices.Factory.get().getResources().newClassPathResource("rule_with_expander_dsl_more.dslr", getClass());
    resource2.setSourcePath(TestConstants.TEST_RESOURCES_FOLDER + "rule_with_expander_dsl_more.dslr");
    KieBuilder kieBuilder = KieUtil.getKieBuilderFromResources(kieBaseTestConfiguration, false, resource1, resource2);
    List<Message> errors = kieBuilder.getResults().getMessages(Message.Level.ERROR);
    assertTrue(errors.toString(), errors.isEmpty());
    // the compiled package
    final Collection<KiePackage> pkgs = KieBaseUtil.getDefaultKieBaseFromKieBuilder(kieBuilder).getKiePackages();
    assertEquals(2, pkgs.size());
    KieBase kbase = KieBaseUtil.getDefaultKieBaseFromKieBuilder(kieBuilder);
    KieSession session = kbase.newKieSession();
    session.insert(new Person("rage"));
    session.insert(new Cheese("cheddar", 15));
    final List messages = new ArrayList();
    session.setGlobal("messages", messages);
    // wm  = SerializationHelper.serializeObject(wm);
    session.fireAllRules();
    // should have NONE, as both conditions should be false.
    assertEquals(0, messages.size());
    session.insert(new Person("fire"));
    session.fireAllRules();
    // still no firings
    assertEquals(0, messages.size());
    session.insert(new Cheese("brie", 15));
    session.fireAllRules();
    // YOUR FIRED
    assertEquals(1, messages.size());
}
Also used : Message(org.kie.api.builder.Message) KiePackage(org.kie.api.definition.KiePackage) KieBase(org.kie.api.KieBase) Resource(org.kie.api.io.Resource) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.mvel.compiler.Cheese) ArrayList(java.util.ArrayList) List(java.util.List) KieBuilder(org.kie.api.builder.KieBuilder) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 4 with Cheese

use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.

the class DslTest method checkDSLExpanderTest.

private void checkDSLExpanderTest(KieBuilder kieBuilder) throws IOException, ClassNotFoundException {
    List<Message> errors = kieBuilder.getResults().getMessages(Message.Level.ERROR);
    assertTrue(errors.toString(), errors.isEmpty());
    // the compiled package
    final Collection<KiePackage> pkgs = KieBaseUtil.getDefaultKieBaseFromKieBuilder(kieBuilder).getKiePackages();
    assertEquals(2, pkgs.size());
    KieBase kbase = KieBaseUtil.getDefaultKieBaseFromKieBuilder(kieBuilder);
    KieSession session = kbase.newKieSession();
    session.insert(new Person("Bob", "http://foo.bar"));
    session.insert(new Cheese("stilton", 42));
    final List messages = new ArrayList();
    session.setGlobal("messages", messages);
    session.fireAllRules();
    assertEquals(1, messages.size());
}
Also used : Message(org.kie.api.builder.Message) KiePackage(org.kie.api.definition.KiePackage) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.mvel.compiler.Cheese) ArrayList(java.util.ArrayList) List(java.util.List) Person(org.drools.mvel.compiler.Person)

Example 5 with Cheese

use of org.drools.mvel.compiler.Cheese 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)

Aggregations

Cheese (org.drools.mvel.compiler.Cheese)136 Test (org.junit.Test)129 KieSession (org.kie.api.runtime.KieSession)112 KieBase (org.kie.api.KieBase)96 ArrayList (java.util.ArrayList)90 List (java.util.List)65 Person (org.drools.mvel.compiler.Person)47 FactHandle (org.kie.api.runtime.rule.FactHandle)29 InternalKnowledgeBase (org.drools.kiesession.rulebase.InternalKnowledgeBase)24 KiePackage (org.kie.api.definition.KiePackage)23 InternalFactHandle (org.drools.core.common.InternalFactHandle)20 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)20 IteratorToList (org.drools.mvel.integrationtests.IteratorToList)14 Command (org.kie.api.command.Command)10 ExecutionResults (org.kie.api.runtime.ExecutionResults)10 PackageDescr (org.drools.drl.ast.descr.PackageDescr)7 KnowledgeBuilderImpl (org.drools.compiler.builder.impl.KnowledgeBuilderImpl)6 Cheesery (org.drools.mvel.compiler.Cheesery)6 ClassObjectFilter (org.drools.core.ClassObjectFilter)5 ClassObjectType (org.drools.core.base.ClassObjectType)5