Search in sources :

Example 1 with FactC

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

the class FirstOrderLogicTest method testOrWithVariableResolution2.

// JBRULES-2526
@Test
public void testOrWithVariableResolution2() throws Exception {
    // KieBase kbase = loadKnowledgeBase( "test_OrCEFollowedByMultipleEval.drl");
    // KieSession workingMemory = createKnowledgeSession(kbase);
    final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newClassPathResource("test_OrCEFollowedByMultipleEval2.drl", FirstOrderLogicTest.class), ResourceType.DRL);
    assertFalse(kbuilder.getErrors().toString(), kbuilder.hasErrors());
    final InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages(kbuilder.getKnowledgePackages());
    final KieSession ksession = createKnowledgeSession(kbase);
    final AgendaEventListener al = mock(AgendaEventListener.class);
    ksession.addEventListener(al);
    ksession.insert(new FactA("a"));
    ksession.insert(new FactB("b"));
    ksession.insert(new FactC("c"));
    ksession.fireAllRules();
    verify(al, times(8)).afterMatchFired(any(AfterMatchFiredEvent.class));
}
Also used : KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) AgendaEventListener(org.kie.api.event.rule.AgendaEventListener) KieSession(org.kie.api.runtime.KieSession) FactA(org.drools.compiler.FactA) InternalKnowledgeBase(org.drools.core.impl.InternalKnowledgeBase) FactB(org.drools.compiler.FactB) AfterMatchFiredEvent(org.kie.api.event.rule.AfterMatchFiredEvent) FactC(org.drools.compiler.FactC) Test(org.junit.Test)

Example 2 with FactC

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

the class FirstOrderLogicTest method testOrWithVariableResolution.

// JBRULES-2482
@Test
public void testOrWithVariableResolution() throws Exception {
    // KieBase kbase = loadKnowledgeBase( "test_OrCEFollowedByMultipleEval.drl");
    // KieSession workingMemory = createKnowledgeSession(kbase);
    final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newClassPathResource("test_OrCEFollowedByMultipleEval.drl", FirstOrderLogicTest.class), ResourceType.DRL);
    assertFalse(kbuilder.getErrors().toString(), kbuilder.hasErrors());
    final InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages(kbuilder.getKnowledgePackages());
    final KieSession ksession = createKnowledgeSession(kbase);
    final AgendaEventListener al = mock(AgendaEventListener.class);
    ksession.addEventListener(al);
    ksession.insert(new FactA("a"));
    ksession.insert(new FactB("b"));
    ksession.insert(new FactC("c"));
    ksession.fireAllRules();
    verify(al, times(6)).afterMatchFired(any(AfterMatchFiredEvent.class));
}
Also used : KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) AgendaEventListener(org.kie.api.event.rule.AgendaEventListener) KieSession(org.kie.api.runtime.KieSession) FactA(org.drools.compiler.FactA) InternalKnowledgeBase(org.drools.core.impl.InternalKnowledgeBase) FactB(org.drools.compiler.FactB) AfterMatchFiredEvent(org.kie.api.event.rule.AfterMatchFiredEvent) FactC(org.drools.compiler.FactC) Test(org.junit.Test)

Example 3 with FactC

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

Aggregations

FactA (org.drools.compiler.FactA)3 FactB (org.drools.compiler.FactB)3 FactC (org.drools.compiler.FactC)3 Test (org.junit.Test)3 KieSession (org.kie.api.runtime.KieSession)3 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)2 AfterMatchFiredEvent (org.kie.api.event.rule.AfterMatchFiredEvent)2 AgendaEventListener (org.kie.api.event.rule.AgendaEventListener)2 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Cell (org.drools.compiler.Cell)1 Cheese (org.drools.compiler.Cheese)1 Person (org.drools.compiler.Person)1 IteratorToList (org.drools.compiler.integrationtests.IteratorToList)1 KieBase (org.kie.api.KieBase)1