Search in sources :

Example 46 with Cheese

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

the class DateComparisonTest method testDateComparisonThan.

@Test
public void testDateComparisonThan() throws Exception {
    String str = "";
    str += "package org.drools.mvel.compiler;\n";
    str += "global java.util.List results;\n";
    str += "rule \"test date greater than\"\n";
    str += "     when\n";
    str += "         $c : Cheese(type == \"Yesterday\")\n";
    str += "         Cheese(type == \"Tomorrow\",  usedBy > ($c.usedBy))\n";
    str += "     then\n";
    str += "         results.add( \"test date greater than\" );\n";
    str += "end\n";
    str += "rule \"test date less than\"\n";
    str += "    when\n";
    str += "        $c : Cheese(type == \"Tomorrow\")\n";
    str += "        Cheese(type == \"Yesterday\", usedBy < ($c.usedBy));\n";
    str += "    then\n";
    str += "        results.add( \"test date less than\" );\n";
    str += "end\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
    KieSession ksession = kbase.newKieSession();
    List<String> results = new ArrayList<String>();
    ksession.setGlobal("results", results);
    // go !
    Cheese yesterday = new Cheese("Yesterday");
    yesterday.setUsedBy(yesterday());
    Cheese tomorrow = new Cheese("Tomorrow");
    tomorrow.setUsedBy(tomorrow());
    ksession.insert(yesterday);
    ksession.insert(tomorrow);
    ksession.fireAllRules();
    assertEquals(2, results.size());
    assertTrue(results.contains("test date greater than"));
    assertTrue(results.contains("test date less than"));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.mvel.compiler.Cheese) Test(org.junit.Test)

Example 47 with Cheese

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

the class DateComparisonTest method testDateComparisonAfterWithThisBinding.

@Test
public void testDateComparisonAfterWithThisBinding() throws Exception {
    String str = "";
    str += "package org.drools.mvel.compiler;\n";
    str += "global java.util.List results;\n";
    str += "rule \"test date greater than\"\n";
    str += "     when\n";
    str += "         Cheese(type == \"Yesterday\", $c: this)\n";
    str += "         Cheese(type == \"Tomorrow\", $c.usedBy before usedBy)\n";
    str += "     then\n";
    str += "         results.add( \"test date greater than\" );\n";
    str += "end\n";
    str += "rule \"test date less than\"\n";
    str += "    when\n";
    str += "        Cheese(type == \"Tomorrow\", $c: this)\n";
    str += "        Cheese(type == \"Yesterday\", $c.usedBy after usedBy);\n";
    str += "    then\n";
    str += "        results.add( \"test date less than\" );\n";
    str += "end\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
    KieSession ksession = kbase.newKieSession();
    List<String> results = new ArrayList<String>();
    ksession.setGlobal("results", results);
    // go !
    Cheese yesterday = new Cheese("Yesterday");
    yesterday.setUsedBy(yesterday());
    Cheese tomorrow = new Cheese("Tomorrow");
    tomorrow.setUsedBy(tomorrow());
    ksession.insert(yesterday);
    ksession.insert(tomorrow);
    ksession.fireAllRules();
    assertEquals(2, results.size());
    assertTrue(results.contains("test date greater than"));
    assertTrue(results.contains("test date less than"));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.mvel.compiler.Cheese) Test(org.junit.Test)

Example 48 with Cheese

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

the class DateComparisonTest method testDateComparisonAfter.

@Test
public void testDateComparisonAfter() throws Exception {
    String str = "";
    str += "package org.drools.mvel.compiler;\n";
    str += "global java.util.List results;\n";
    str += "rule \"test date greater than\"\n";
    str += "     when\n";
    str += "         $c : Cheese(type == \"Yesterday\")\n";
    str += "         Cheese(type == \"Tomorrow\", $c.usedBy before usedBy)\n";
    str += "     then\n";
    str += "         results.add( \"test date greater than\" );\n";
    str += "end\n";
    str += "rule \"test date less than\"\n";
    str += "    when\n";
    str += "        $c : Cheese(type == \"Tomorrow\")\n";
    str += "        Cheese(type == \"Yesterday\", $c.usedBy after usedBy);\n";
    str += "    then\n";
    str += "        results.add( \"test date less than\" );\n";
    str += "end\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
    KieSession ksession = kbase.newKieSession();
    List<String> results = new ArrayList<String>();
    ksession.setGlobal("results", results);
    // go !
    Cheese yesterday = new Cheese("Yesterday");
    yesterday.setUsedBy(yesterday());
    Cheese tomorrow = new Cheese("Tomorrow");
    tomorrow.setUsedBy(tomorrow());
    ksession.insert(yesterday);
    ksession.insert(tomorrow);
    ksession.fireAllRules();
    assertEquals(2, results.size());
    assertTrue(results.contains("test date greater than"));
    assertTrue(results.contains("test date less than"));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.mvel.compiler.Cheese) Test(org.junit.Test)

Example 49 with Cheese

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

the class SessionInspectorTest method testGetSessionInfo.

@Test
public void testGetSessionInfo() {
    KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(this.getClass(), kieBaseTestConfiguration, "org/drools/mvel/integrationtests/test_SubNetworks.drl", "org/drools/mvel/integrationtests/test_AccumulateWithFromChaining.drl", "org/drools/mvel/integrationtests/test_CollectResultsBetaConstraint.drl", "org/drools/mvel/integrationtests/test_QueryMemoryLeak.drl");
    KieSession ksession = kbase.newKieSession();
    ksession.setGlobal("results", new ArrayList<Object>());
    ksession.insert(new Dimension(100, 50));
    ksession.insert(new Dimension(130, 80));
    ksession.insert(new Dimension(50, 40));
    ksession.insert(new Dimension(50, 40));
    Cheesery cheesery = new Cheesery();
    cheesery.addCheese(new Cheese("brie", 10));
    cheesery.addCheese(new Cheese("brie", 10));
    cheesery.addCheese(new Cheese("brie", 10));
    cheesery.addCheese(new Cheese("brie", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    ksession.insert(cheesery);
    ksession.insert(new Person("Bob", "muzzarella"));
    ksession.insert(new Person("Mark", "brie"));
    ksession.insert(new Cheese("brie", 10));
    ksession.insert(new Cheese("brie", 10));
    ksession.insert(new Cheese("brie", 10));
    ksession.insert(new Cheese("brie", 10));
    ksession.insert(new Cheese("muzzarella", 10));
    ksession.insert(new Cheese("muzzarella", 10));
    ksession.insert(new Cheese("muzzarella", 10));
    ksession.insert(new Cheese("muzzarella", 10));
    ksession.insert(new Cheese("Stilton", 10));
    ksession.insert(new Cheese("Stilton", 10));
    ksession.insert(new Cheese("Stilton", 10));
    ksession.insert(new Double(10));
    ksession.insert(new Double(11));
    ksession.insert(new Double(12));
    ksession.insert(new Double(13));
    ksession.insert(new Double(14));
    ksession.insert(new Integer(15));
    ksession.insert(new Integer(16));
    ksession.insert(new Integer(17));
    ksession.insert(new Integer(18));
    FactHandle handle = ksession.insert(new Worker());
    ksession.retract(handle);
    SessionInspector inspector = new SessionInspector(ksession);
    StatefulKnowledgeSessionInfo info = inspector.getSessionInfo();
    String report = SessionReporter.generateReport("simple", info, null);
    assertNotNull(report);
}
Also used : StatefulKnowledgeSessionInfo(org.drools.kiesession.debug.StatefulKnowledgeSessionInfo) FactHandle(org.kie.api.runtime.rule.FactHandle) Cheese(org.drools.mvel.compiler.Cheese) Dimension(java.awt.Dimension) Cheesery(org.drools.mvel.compiler.Cheesery) KieBase(org.kie.api.KieBase) Worker(org.drools.mvel.compiler.Worker) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.mvel.compiler.Person) SessionInspector(org.drools.kiesession.debug.SessionInspector) Test(org.junit.Test)

Example 50 with Cheese

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

the class SessionInspectorTest method testGetSessionInfoWithCustomTemplate.

@Test
public void testGetSessionInfoWithCustomTemplate() {
    if (System.getProperty("java.vendor").toUpperCase().contains("IBM")) {
        // Does not work in the IBM JDK due to a bug in MVEL
        return;
    }
    KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(this.getClass(), kieBaseTestConfiguration, "org/drools/mvel/integrationtests/test_SubNetworks.drl", "org/drools/mvel/integrationtests/test_AccumulateWithFromChaining.drl", "org/drools/mvel/integrationtests/test_CollectResultsBetaConstraint.drl", "org/drools/mvel/integrationtests/test_QueryMemoryLeak.drl");
    KieSession ksession = kbase.newKieSession();
    ksession.setGlobal("results", new ArrayList<Object>());
    ksession.insert(new Dimension(100, 50));
    ksession.insert(new Dimension(130, 80));
    ksession.insert(new Dimension(50, 40));
    ksession.insert(new Dimension(50, 40));
    Cheesery cheesery = new Cheesery();
    cheesery.addCheese(new Cheese("brie", 10));
    cheesery.addCheese(new Cheese("brie", 10));
    cheesery.addCheese(new Cheese("brie", 10));
    cheesery.addCheese(new Cheese("brie", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("muzzarella", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    cheesery.addCheese(new Cheese("stilton", 10));
    ksession.insert(cheesery);
    ksession.insert(new Person("Bob", "muzzarella"));
    ksession.insert(new Person("Mark", "brie"));
    ksession.insert(new Cheese("brie", 10));
    ksession.insert(new Cheese("brie", 10));
    ksession.insert(new Cheese("brie", 10));
    ksession.insert(new Cheese("brie", 10));
    ksession.insert(new Cheese("muzzarella", 10));
    ksession.insert(new Cheese("muzzarella", 10));
    ksession.insert(new Cheese("muzzarella", 10));
    ksession.insert(new Cheese("muzzarella", 10));
    ksession.insert(new Cheese("Stilton", 10));
    ksession.insert(new Cheese("Stilton", 10));
    ksession.insert(new Cheese("Stilton", 10));
    ksession.insert(new Double(10));
    ksession.insert(new Double(11));
    ksession.insert(new Double(12));
    ksession.insert(new Double(13));
    ksession.insert(new Double(14));
    ksession.insert(new Integer(15));
    ksession.insert(new Integer(16));
    ksession.insert(new Integer(17));
    ksession.insert(new Integer(18));
    FactHandle handle = ksession.insert(new Worker());
    ksession.retract(handle);
    SessionInspector inspector = new SessionInspector(ksession);
    StatefulKnowledgeSessionInfo info = inspector.getSessionInfo();
    SessionReporter.addNamedTemplate("topten", getClass().getResourceAsStream("customreports.mvel"));
    String report = SessionReporter.generateReport("topten", info, null);
    assertNotNull(report);
}
Also used : StatefulKnowledgeSessionInfo(org.drools.kiesession.debug.StatefulKnowledgeSessionInfo) FactHandle(org.kie.api.runtime.rule.FactHandle) Cheese(org.drools.mvel.compiler.Cheese) Dimension(java.awt.Dimension) Cheesery(org.drools.mvel.compiler.Cheesery) KieBase(org.kie.api.KieBase) Worker(org.drools.mvel.compiler.Worker) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.mvel.compiler.Person) SessionInspector(org.drools.kiesession.debug.SessionInspector) 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