Search in sources :

Example 11 with FactA

use of org.drools.compiler.FactA in project drools by kiegroup.

the class MarshallingTest method testMultiRuleMultiJoinNodePatternsWithHalt.

@Test
public void testMultiRuleMultiJoinNodePatternsWithHalt() throws Exception {
    String rule1 = "package org.drools.compiler.test;\n";
    rule1 += "import org.drools.compiler.Person\n";
    rule1 += "import org.drools.compiler.Cheese\n";
    rule1 += "global java.util.List list\n";
    rule1 += "rule \"Rule 1\"\n";
    rule1 += "when\n";
    rule1 += "    $c : Cheese( ) \n";
    rule1 += "    $p : Person( cheese == $c ) \n";
    rule1 += "then\n";
    rule1 += "    list.add( $p );\n";
    rule1 += "end";
    String rule2 = "package org.drools.compiler.test;\n";
    rule2 += "import org.drools.compiler.Person\n";
    rule2 += "import org.drools.compiler.Cheese\n";
    rule2 += "import org.drools.compiler.Cell\n";
    rule2 += "global java.util.List list\n";
    rule2 += "rule \"Rule 2\"\n";
    rule2 += "when\n";
    rule2 += "    $c : Cheese( ) \n";
    rule2 += "    $p : Person( cheese == $c ) \n";
    rule2 += "    $x : Cell( value == $p.age ) \n";
    rule2 += "then\n";
    rule2 += "    list.add( $x );\n";
    rule2 += "end";
    String rule3 = "package org.drools.compiler.test;\n";
    rule3 += "import org.drools.compiler.FactA\n";
    rule3 += "import org.drools.compiler.FactB\n";
    rule3 += "import org.drools.compiler.FactC\n";
    rule3 += "import org.drools.compiler.Person\n";
    rule3 += "global java.util.List list\n";
    rule3 += "rule \"Rule 3\"\n";
    rule3 += "when\n";
    rule3 += "    $a : FactA( field2 > 10 ) \n";
    rule3 += "    $b : FactB( f2 >= $a.field2 ) \n";
    rule3 += "    $p : Person( name == \"darth vadar\" ) \n";
    rule3 += "    $c : FactC( f2 >= $b.f2 ) \n";
    rule3 += "then\n";
    rule3 += "    list.add( $c );\n";
    rule3 += "    drools.halt();\n";
    rule3 += "end";
    KieBase kBase = loadKnowledgeBaseFromString(rule1, rule2, rule3);
    KieSession session = kBase.newKieSession();
    List list = new ArrayList();
    session.setGlobal("list", list);
    Cheese stilton = new Cheese("stilton", 25);
    Cheese brie = new Cheese("brie", 49);
    Person bobba = new Person("bobba fet", 30);
    bobba.setCheese(stilton);
    Person vadar = new Person("darth vadar", 38);
    Person c3po = new Person("c3p0", 17);
    c3po.setCheese(stilton);
    Person r2d2 = new Person("r2d2", 58);
    r2d2.setCheese(brie);
    session.insert(stilton);
    session.insert(bobba);
    session.insert(vadar);
    session.insert(brie);
    session.insert(c3po);
    session.insert(r2d2);
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    session.fireAllRules();
    list = (List) session.getGlobal("list");
    assertEquals(3, list.size());
    assertTrue(list.contains(r2d2));
    assertTrue(list.contains(c3po));
    assertTrue(list.contains(bobba));
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    Cell cell30 = new Cell(30);
    session.insert(cell30);
    Cell cell58 = new Cell(58);
    session.insert(cell58);
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    session.fireAllRules();
    assertEquals(5, list.size());
    assertTrue(list.contains(cell30));
    assertTrue(list.contains(cell58));
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    session.insert(new FactA(15));
    session.insert(new FactB(20));
    FactC factC27 = new FactC(27);
    session.insert(factC27);
    FactC factC52 = new FactC(52);
    session.insert(factC52);
    session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true);
    session.fireAllRules();
    session.fireAllRules();
    assertEquals(7, list.size());
    assertTrue(list.contains(factC52));
    assertTrue(list.contains(factC27));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) IteratorToList(org.drools.compiler.integrationtests.IteratorToList) Cheese(org.drools.compiler.Cheese) Person(org.drools.compiler.Person) Cell(org.drools.compiler.Cell) FactA(org.drools.compiler.FactA) FactB(org.drools.compiler.FactB) FactC(org.drools.compiler.FactC) Test(org.junit.Test)

Example 12 with FactA

use of org.drools.compiler.FactA in project drools by kiegroup.

the class EvalTest method testAlphaEvalWithOrCE.

@Test
public void testAlphaEvalWithOrCE() throws Exception {
    final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_AlphaEvalWithOrCE.drl"));
    final KieSession ksession = createKnowledgeSession(kbase);
    final List list = new ArrayList();
    ksession.setGlobal("results", list);
    final FactA a = new FactA();
    a.setField1("a value");
    ksession.insert(a);
    ksession.insert(new FactB());
    ksession.insert(new FactC());
    ksession.fireAllRules();
    assertEquals("should not have fired", 0, list.size());
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) FactA(org.drools.compiler.FactA) FactB(org.drools.compiler.FactB) FactC(org.drools.compiler.FactC) Test(org.junit.Test)

Example 13 with FactA

use of org.drools.compiler.FactA in project drools by kiegroup.

the class OrTest method testOrCEFollowedByEval.

@Test
public void testOrCEFollowedByEval() throws Exception {
    final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_OrCEFollowedByEval.drl"));
    final KieSession ksession = createKnowledgeSession(kbase);
    final List list = new ArrayList();
    ksession.setGlobal("results", list);
    ksession.insert(new FactA("X"));
    final InternalFactHandle b = (InternalFactHandle) ksession.insert(new FactB("X"));
    ksession.fireAllRules();
    assertEquals("should have fired", 2, list.size());
    assertTrue(list.contains(b.getObject()));
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) InternalFactHandle(org.drools.core.common.InternalFactHandle) FactA(org.drools.compiler.FactA) FactB(org.drools.compiler.FactB) Test(org.junit.Test)

Aggregations

FactA (org.drools.compiler.FactA)13 Test (org.junit.Test)13 KieSession (org.kie.api.runtime.KieSession)13 KieBase (org.kie.api.KieBase)9 ArrayList (java.util.ArrayList)8 FactB (org.drools.compiler.FactB)8 List (java.util.List)7 FactC (org.drools.compiler.FactC)5 FactHandle (org.kie.api.runtime.rule.FactHandle)4 Foo (org.drools.compiler.Foo)3 Pet (org.drools.compiler.Pet)3 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)3 Arrays.asList (java.util.Arrays.asList)2 Date (java.util.Date)2 InternalFactHandle (org.drools.core.common.InternalFactHandle)2 PseudoClockScheduler (org.drools.core.time.impl.PseudoClockScheduler)2 AfterMatchFiredEvent (org.kie.api.event.rule.AfterMatchFiredEvent)2 AgendaEventListener (org.kie.api.event.rule.AgendaEventListener)2 KieSessionConfiguration (org.kie.api.runtime.KieSessionConfiguration)2 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)2