Search in sources :

Example 31 with Person

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

the class AlphaNodeTest method testAlphaModify.

@Test
public void testAlphaModify() {
    String str = "import " + Person.class.getCanonicalName() + "\n" + "rule R1 when\n" + "  $p : Person(name == \"Mario\")\n" + "then\n" + "  modify($p) { setName(\"Mark\")}" + "end\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
    KieSession ksession = kbase.newKieSession();
    ksession.insert(new Person("Mario"));
    assertEquals(1, ksession.fireAllRules());
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 32 with Person

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

the class Misc2Test method testJittedConstraintStringAndLong.

@Test
public void testJittedConstraintStringAndLong() {
    // DROOLS-740
    String drl = " import org.drools.mvel.compiler.Person; " + " rule 'hello person' " + " when " + " Person( name == \"Elizabeth\" + new Long(2L) ) " + " then " + " end " + "\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, drl);
    KieSession ksession = kbase.newKieSession();
    ksession.insert(new org.drools.mvel.compiler.Person("Elizabeth2", 88));
    assertEquals(1, ksession.fireAllRules());
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) FactWithString(org.drools.mvel.integrationtests.facts.FactWithString) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 33 with Person

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

the class Misc2Test method testWrongNodeSharingWithSameHashCode.

@Test
public void testWrongNodeSharingWithSameHashCode() throws IllegalAccessException, InstantiationException {
    String drl = "import " + Person.class.getCanonicalName() + ";\n" + "rule R1 when\n" + "    String()\n" + "    $p: Person( name == \"ATL\", name != null)\n" + "then \n" + "    $p.setHappy(true);\n" + "end\n" + "rule R2 when\n" + "    String()\n" + "    $p: Person( name == \"B5L\", name != null)\n" + "then \n" + "    $p.setHappy(true);\n" + "end\n";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, drl);
    KieSession kieSession = kbase.newKieSession();
    kieSession.insert("test");
    Person b5L = new Person("B5L");
    kieSession.insert(b5L);
    assertFalse(b5L.isHappy());
    kieSession.fireAllRules();
    assertTrue(b5L.isHappy());
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) FactWithString(org.drools.mvel.integrationtests.facts.FactWithString) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 34 with Person

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

the class Misc2Test method testReuseAgendaAfterException.

@Test
public void testReuseAgendaAfterException() throws Exception {
    // JBRULES-3677
    String str = "import org.drools.mvel.compiler.Person;\n" + "global java.util.List results;" + "rule R1\n" + "ruleflow-group \"test\"\n" + "when\n" + "   Person( $age : age ) \n" + "then\n" + "   if ($age > 40) throw new RuntimeException(\"Too old\");\n" + "   results.add(\"OK\");" + "end";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
    KieSession ksession = kbase.newKieSession();
    List<String> res = new ArrayList<>();
    ksession.setGlobal("results", res);
    AgendaEventListener agendaEventListener = new AgendaEventListener() {

        public void matchCreated(org.kie.api.event.rule.MatchCreatedEvent event) {
        }

        public void matchCancelled(org.kie.api.event.rule.MatchCancelledEvent event) {
        }

        public void beforeMatchFired(org.kie.api.event.rule.BeforeMatchFiredEvent event) {
        }

        public void afterMatchFired(org.kie.api.event.rule.AfterMatchFiredEvent event) {
        }

        public void agendaGroupPopped(org.kie.api.event.rule.AgendaGroupPoppedEvent event) {
        }

        public void agendaGroupPushed(org.kie.api.event.rule.AgendaGroupPushedEvent event) {
        }

        public void beforeRuleFlowGroupActivated(org.kie.api.event.rule.RuleFlowGroupActivatedEvent event) {
        }

        public void afterRuleFlowGroupActivated(org.kie.api.event.rule.RuleFlowGroupActivatedEvent event) {
            ksession.fireAllRules();
        }

        public void beforeRuleFlowGroupDeactivated(org.kie.api.event.rule.RuleFlowGroupDeactivatedEvent event) {
        }

        public void afterRuleFlowGroupDeactivated(org.kie.api.event.rule.RuleFlowGroupDeactivatedEvent event) {
        }
    };
    ksession.addEventListener(agendaEventListener);
    FactHandle fact1 = ksession.insert(new Person("Mario", 38));
    ((InternalAgenda) ksession.getAgenda()).activateRuleFlowGroup("test");
    ksession.fireAllRules();
    assertEquals(1, res.size());
    res.clear();
    ksession.delete(fact1);
    FactHandle fact2 = ksession.insert(new Person("Mario", 48));
    try {
        ((InternalAgenda) ksession.getAgenda()).activateRuleFlowGroup("test");
        ksession.fireAllRules();
        fail("should throw an Exception");
    } catch (Exception e) {
    }
    ksession.delete(fact2);
    assertEquals(0, res.size());
    // try to reuse the ksession after the Exception
    FactHandle fact3 = ksession.insert(new Person("Mario", 38));
    ((InternalAgenda) ksession.getAgenda()).activateRuleFlowGroup("test");
    ksession.fireAllRules();
    assertEquals(1, res.size());
    ksession.delete(fact3);
    ksession.dispose();
}
Also used : InternalFactHandle(org.drools.core.common.InternalFactHandle) FactHandle(org.kie.api.runtime.rule.FactHandle) DefaultFactHandle(org.drools.core.common.DefaultFactHandle) ArrayList(java.util.ArrayList) FactWithString(org.drools.mvel.integrationtests.facts.FactWithString) AfterMatchFiredEvent(org.kie.api.event.rule.AfterMatchFiredEvent) DroolsParserException(org.drools.drl.parser.DroolsParserException) InternalAgenda(org.drools.core.common.InternalAgenda) KieBase(org.kie.api.KieBase) MatchCancelledEvent(org.kie.api.event.rule.MatchCancelledEvent) DefaultAgendaEventListener(org.kie.api.event.rule.DefaultAgendaEventListener) AgendaEventListener(org.kie.api.event.rule.AgendaEventListener) DebugAgendaEventListener(org.kie.api.event.rule.DebugAgendaEventListener) KieSession(org.kie.api.runtime.KieSession) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) MatchCreatedEvent(org.kie.api.event.rule.MatchCreatedEvent) Person(org.drools.mvel.compiler.Person) Test(org.junit.Test)

Example 35 with Person

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

the class Misc2Test method testBigDecimalComparison.

@Test
public void testBigDecimalComparison() throws Exception {
    // JBRULES-3715
    String str = "import org.drools.mvel.compiler.Person;\n" + "rule \"Big Decimal Comparison\"\n" + "    dialect \"mvel\"\n" + "when\n" + "    Person( bigDecimal == 0.0B )\n" + "then\n" + "end";
    KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
    KieSession ksession = kbase.newKieSession();
    Person p = new Person("Mario", 38);
    p.setBigDecimal(new BigDecimal("0"));
    ksession.insert(p);
    assertEquals(1, ksession.fireAllRules());
    ksession.dispose();
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) FactWithString(org.drools.mvel.integrationtests.facts.FactWithString) Person(org.drools.mvel.compiler.Person) BigDecimal(java.math.BigDecimal) 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