@Test public void testPopulatedSharedLiaNodeNoBeta() throws Exception { InternalKnowledgeBase kbase1 = buildKnowledgeBase("r1", " A()\n"); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list); A a1 = new A(1); InternalFactHandle fh1 = (InternalFactHandle) wm.insert(a1); A a2 = new A(2); InternalFactHandle fh2 = (InternalFactHandle) wm.insert(a2); wm.fireAllRules(); assertEquals( 2, list.size() ); kbase1.addPackages( buildKnowledgePackage("r2", " a : A()\n") ); wm.fireAllRules(); assertEquals( 4, list.size() ); kbase1.removeRule("org.kie", "r1"); kbase1.removeRule("org.kie", "r2"); list.clear(); assertNull( fh1.getFirstLeftTuple() ); assertNull( fh2.getFirstLeftTuple() ); wm.update( fh1,a1 ); wm.update( fh2,a2 ); wm.fireAllRules(); assertEquals( 0, list.size() ); }
@Test public void testPopulatedSingleRuleNoSharingWithSubnetworkAtStart() throws Exception { InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase.newKieSession()); wm.insert(new A(1)); wm.insert(new A(2)); wm.insert(new D(1)); wm.insert(new E(1)); wm.insert(new C(2)); wm.fireAllRules(); kbase.addPackages( buildKnowledgePackage("r1", " A() not( B() and C() ) D() E()\n") ); List list = new ArrayList(); wm.setGlobal("list", list); wm.fireAllRules(); assertEquals(2, list.size() ); assertEquals( "r1", ((Match)list.get(0)).getRule().getName() ); assertEquals( "r1", ((Match)list.get(1)).getRule().getName() ); kbase.removeRule("org.kie", "r1"); wm.insert(new A(1)); wm.fireAllRules(); assertEquals(2, list.size() ); }
@Test public void testPathMemorySizeAfterSegmentMerge() throws Exception { InternalKnowledgeBase kbase1 = buildKnowledgeBase("r1", " A(1;) B(1;)\n" ); kbase1.addPackages( buildKnowledgePackage("r2", " A(1;)\n") ); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list); // trigger segment initialization wm.insert(new A(1)); wm.insert(new B(1)); wm.fireAllRules(); RuleTerminalNode rtn1 = getRtn( "org.kie.r1", kbase1 ); RuleTerminalNode rtn2 = getRtn( "org.kie.r2", kbase1 ); assertEquals( 2, wm.getNodeMemory(rtn1).getSegmentMemories().length ); assertEquals( 2, wm.getNodeMemory(rtn2).getSegmentMemories().length ); kbase1.removeRule("org.kie", "r2"); assertEquals( 1, wm.getNodeMemory(rtn1).getSegmentMemories().length ); }
wm.setGlobal( "list", list );
InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list);
wm.setGlobal( "list", list );
wm.setGlobal("list", list);
wm.setGlobal("list", list);
@Test public void testPopulatedMultipleShares() throws Exception { InternalKnowledgeBase kbase1 = buildKnowledgeBase("r1", " A(1;) A(2;) B(1;) B(2;) C(1;) D() E()\n" ); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list); wm.insert(new A(1)); wm.insert(new A(2)); wm.insert(new A(2)); wm.insert(new A(3)); wm.insert(new B(1)); wm.insert(new B(2)); wm.insert(new C(1)); wm.insert(new C(2)); wm.insert(new D(1)); wm.insert(new E(1)); wm.fireAllRules(); assertEquals( 2, list.size() ); kbase1.addPackages( buildKnowledgePackage("r2", " A(1;) A(2;) B(1;) B(2;) C(2;) D() E()\n") ); kbase1.addPackages( buildKnowledgePackage("r3", " A(1;) A(3;) B(1;) B(2;) C(2;) D() E()\n") ); wm.fireAllRules(); System.out.println(list); assertEquals( 5, list.size() ); assertEquals("r1", ((Match) list.get(0)).getRule().getName()); assertEquals( "r1", ((Match)list.get(1)).getRule().getName() ); assertEquals( "r3", ((Match)list.get(2)).getRule().getName() ); // only one A3 assertEquals( "r2", ((Match)list.get(3)).getRule().getName() ); assertEquals( "r2", ((Match)list.get(4)).getRule().getName() ); }
InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list);
InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list);
wm.setGlobal("list", list);
InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list);
InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list);
@Test public void testPopulatedSingleRuleNoSharing() throws Exception { InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase.newKieSession()); wm.insert(new A(1)); wm.insert(new B(1)); wm.insert(new C(1)); wm.insert(new C(2)); wm.insert(new D(1)); wm.insert(new E(1)); wm.fireAllRules(); kbase.addPackages( buildKnowledgePackage("r1", " A() B() C(object == 2) D() E()\n") ); List list = new ArrayList(); wm.setGlobal("list", list); ObjectTypeNode aotn = getObjectTypeNode(kbase, A.class ); LeftInputAdapterNode liaNode = (LeftInputAdapterNode) aotn.getObjectSinkPropagator().getSinks()[0]; LiaNodeMemory lm = ( LiaNodeMemory ) wm.getNodeMemory(liaNode); SegmentMemory sm = lm.getSegmentMemory(); assertNotNull(sm.getStagedLeftTuples().getInsertFirst()); wm.fireAllRules(); assertNull(sm.getStagedLeftTuples().getInsertFirst()); assertEquals(1, list.size() ); assertEquals( "r1", ((Match)list.get(0)).getRule().getName() ); }
InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list);
wm.setGlobal("list", list);
wm.setGlobal("list", list);
wm.setGlobal("list", list);