public void execute(InternalWorkingMemory workingMemory) { counter.incrementAndGet(); workingMemory.flushPropagations(); workingMemory.flushPropagations(); } }
private void evaluateEagerList(KieSession ksession) { ((InternalWorkingMemory) ksession).flushPropagations(); ((InternalAgenda) ksession.getAgenda()).evaluateEagerList(); }
public void execute(InternalWorkingMemory workingMemory) { // the reentrant action must be executed completely // before any of the final actions is executed assertEquals( 0, counter.get() ); workingMemory.queueWorkingMemoryAction( new FinalAction( counter ) ); assertEquals( 0, counter.get() ); workingMemory.queueWorkingMemoryAction( new FinalAction( counter ) ); assertEquals( 0, counter.get() ); workingMemory.flushPropagations(); assertEquals( 0, counter.get() ); workingMemory.flushPropagations(); assertEquals( 0, counter.get() ); } }
((InternalWorkingMemory) ksession).flushPropagations();
((InternalWorkingMemory)session).flushPropagations();
((InternalWorkingMemory)session).flushPropagations();
wm.flushPropagations(); wm.flushPropagations(); assertEquals( 7, sm.getLinkedNodeMask() ); assertTrue( sm.isSegmentLinked() );
wm.flushPropagations(); wm.flushPropagations(); wm.flushPropagations();
@Test public void testAccumulate2() throws Exception { String str = "package org.drools\n" + "\n" + "import org.drools.compiler.Message\n" + "\n" + "rule MyRule\n" + " when\n" + " Number( intValue >= 5 ) from accumulate ( m: Message( ), count( m ) )\n" + " then\n" + " System.out.println(\"Found messages\");\n" + "end\n"; KieBase kBase = loadKnowledgeBaseFromString(str); KieSession ksession = kBase.newKieSession(); ksession = getSerialisedStatefulKnowledgeSession( ksession, true ); ksession.insert( new Message() ); ksession.insert( new Message() ); ksession.insert( new Message() ); ksession.insert( new Message() ); ksession.insert( new Message() ); ((InternalWorkingMemory)ksession).flushPropagations(); assertEquals( 1, ((InternalAgenda) ksession.getAgenda()).agendaSize() ); }
@Test public void testSingleEmptyLhs() throws Exception { KieBase kbase = buildKnowledgeBase(" "); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase.newKieSession()); ObjectTypeNode aotn = getObjectTypeNode(kbase, InitialFactImpl.class ); LeftInputAdapterNode liaNode = (LeftInputAdapterNode) aotn.getObjectSinkPropagator().getSinks()[0]; RuleTerminalNode rtn = ( RuleTerminalNode) liaNode.getSinkPropagator().getSinks()[0]; wm.insert( new LinkingTest.A() ); wm.flushPropagations(); // LiaNode and Rule are in same segment LiaNodeMemory liaMem = ( LiaNodeMemory ) wm.getNodeMemory( liaNode ); SegmentMemory smem = liaMem.getSegmentMemory(); assertEquals( liaNode, smem.getRootNode() ); assertEquals( rtn, smem.getTipNode() ); assertNull( smem.getNext() ); assertNull( smem.getFirst() ); }
@Test public void testSinglePattern() throws Exception { KieBase kbase = buildKnowledgeBase(" A() \n"); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase.newKieSession()); ObjectTypeNode aotn = getObjectTypeNode(kbase, LinkingTest.A.class ); LeftInputAdapterNode liaNode = (LeftInputAdapterNode) aotn.getObjectSinkPropagator().getSinks()[0]; RuleTerminalNode rtn = ( RuleTerminalNode) liaNode.getSinkPropagator().getSinks()[0]; wm.insert(new LinkingTest.A()); wm.flushPropagations(); // LiaNode and Rule are in same segment LiaNodeMemory liaMem = ( LiaNodeMemory ) wm.getNodeMemory( liaNode ); SegmentMemory smem = liaMem.getSegmentMemory(); assertEquals( liaNode, smem.getRootNode() ); assertEquals( rtn, smem.getTipNode() ); assertNull( smem.getNext() ); assertNull( smem.getFirst() ); }
@Test public void testLockOnActive() throws Exception { KieBase kbase = loadKnowledgeBase("test_LockOnActive.drl"); KieSession ksession = kbase.newKieSession(); final List list = new ArrayList(); ksession.setGlobal( "list", list ); // AgendaGroup "group1" is not active, so should receive activation final Cheese brie12 = new Cheese( "brie", 12 ); ksession.insert( brie12 ); ((InternalWorkingMemory)ksession).flushPropagations(); InternalAgenda agenda = ((InternalAgenda) ksession.getAgenda()); final AgendaGroup group1 = agenda.getAgendaGroup( "group1" ); assertEquals( 1, group1.size() ); ksession.getAgenda().getAgendaGroup("group1").setFocus( ); // AgendaqGroup "group1" is now active, so should not receive activations final Cheese brie10 = new Cheese( "brie", 10 ); ksession.insert( brie10 ); assertEquals( 1, group1.size() ); final Cheese cheddar20 = new Cheese( "cheddar", 20 ); ksession.insert( cheddar20 ); final AgendaGroup group2 = agenda.getAgendaGroup( "group1" ); assertEquals( 1, group2.size() ); agenda.setFocus(group2); final Cheese cheddar17 = new Cheese( "cheddar", 17 ); ksession.insert( cheddar17 ); assertEquals( 1, group2.size() ); }
@Test public void testSingleSharedEmptyLhs() throws Exception { KieBase kbase = buildKnowledgeBase( " ", " "); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase.newKieSession()); ObjectTypeNode aotn = getObjectTypeNode(kbase, InitialFactImpl.class ); LeftInputAdapterNode liaNode = (LeftInputAdapterNode) aotn.getObjectSinkPropagator().getSinks()[0]; RuleTerminalNode rtn1 = ( RuleTerminalNode) liaNode.getSinkPropagator().getSinks()[0]; RuleTerminalNode rtn2 = ( RuleTerminalNode) liaNode.getSinkPropagator().getSinks()[1]; wm.insert( new LinkingTest.A() ); wm.flushPropagations(); // LiaNode is in it's own segment LiaNodeMemory liaMem = ( LiaNodeMemory ) wm.getNodeMemory( liaNode ); SegmentMemory smem = liaMem.getSegmentMemory(); assertEquals( liaNode, smem.getRootNode() ); assertEquals( liaNode, smem.getTipNode() ); // each RTN is in it's own segment SegmentMemory rtnSmem1 = smem.getFirst(); assertEquals( rtn1, rtnSmem1.getRootNode() ); assertEquals( rtn1, rtnSmem1.getTipNode() ); SegmentMemory rtnSmem2 = rtnSmem1.getNext(); assertEquals( rtn2, rtnSmem2.getRootNode() ); assertEquals( rtn2, rtnSmem2.getTipNode() ); }
@Test public void testSingleSharedPattern() throws Exception { KieBase kbase = buildKnowledgeBase( " A() \n", " A() \n"); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase.newKieSession()); ObjectTypeNode aotn = getObjectTypeNode(kbase, LinkingTest.A.class ); LeftInputAdapterNode liaNode = (LeftInputAdapterNode) aotn.getObjectSinkPropagator().getSinks()[0]; RuleTerminalNode rtn1 = ( RuleTerminalNode) liaNode.getSinkPropagator().getSinks()[0]; RuleTerminalNode rtn2 = ( RuleTerminalNode) liaNode.getSinkPropagator().getSinks()[1]; wm.insert(new LinkingTest.A()); wm.flushPropagations(); // LiaNode is in it's own segment LiaNodeMemory liaMem = ( LiaNodeMemory ) wm.getNodeMemory( liaNode ); SegmentMemory smem = liaMem.getSegmentMemory(); assertEquals( liaNode, smem.getRootNode() ); assertEquals( liaNode, smem.getTipNode() ); // each RTN is in it's own segment SegmentMemory rtnSmem1 = smem.getFirst(); assertEquals( rtn1, rtnSmem1.getRootNode() ); assertEquals( rtn1, rtnSmem1.getTipNode() ); SegmentMemory rtnSmem2 = rtnSmem1.getNext(); assertEquals( rtn2, rtnSmem2.getRootNode() ); assertEquals( rtn2, rtnSmem2.getTipNode() ); }
wm.insert( new LinkingTest.B() ); wm.insert(new LinkingTest.C()); wm.flushPropagations(); wm.flushPropagations();
wm.insert( new LinkingTest.B() ); wm.insert( new LinkingTest.C() ); wm.flushPropagations();
wm.insert( new LinkingTest.B() ); wm.insert( new LinkingTest.C() ); wm.flushPropagations();
wm.insert( new LinkingTest.B() ); wm.insert( new LinkingTest.C() ); wm.flushPropagations();