@Test public void testIdentityWithResize() { KieBaseConfiguration kconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kconf.setOption( EqualityBehaviorOption.IDENTITY ); KieBase kbase = KnowledgeBaseFactory.newKnowledgeBase(kconf); KieSession ksession = kbase.newKieSession(); for ( int i = 0; i < length; i++) { String s = getPropertyName(i); FactHandle handle = ksession.insert( s ); objects.add( s ); handles.add( handle ); String s = objects.get(i); FactHandle handle = handles.get( i ); assertEquals( s, ksession.getObject( handle ) ); assertSame( handle, ksession.getFactHandle( s ) ); handle = DefaultFactHandle.createFromExternalFormat(((DefaultFactHandle)handle).toExternalForm()); assertEquals( s, ksession.getObject( handle ) ); handle = DefaultFactHandle.createFromExternalFormat(((DefaultFactHandle)handle).toExternalForm()); ksession.retract( handle ); assertEquals( length - i -1, ksession.getObjects().size() );
final KieBaseConfiguration kbconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( kbconf ); KieSession ks = kbase.newKieSession( ksc, env); ks.insert( entityOne ); ks.insert( entityTwo ); ksession2 = marshaller.unmarshall(bais, ks.getSessionConfiguration(), ks.getEnvironment()); Collection items = ksession2.getFactHandles(); Assert.assertTrue( items.size() == 2 ); for( Object item : items ){ FactHandle factHandle = (FactHandle)item; Assert.assertTrue( srcItems.contains( ((DefaultFactHandle)factHandle).getObject() ) );
"org.drools.core.test.model.Cheese"); RuleBaseConfiguration conf = new RuleBaseConfiguration(properties); InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(conf); buildContext = new BuildContext(kBase); final StatefulKnowledgeSessionImpl ksession = new StatefulKnowledgeSessionImpl(1L, kBase); final Rete rete = kBase.getRete(); final EntryPointNode entryPoint = new EntryPointNode(0, rete, final Cheese cheese = new Cheese("brie", 15); final DefaultFactHandle h1 = new DefaultFactHandle(1, cheese); ksession); ksession.fireAllRules();
@Test public void testInvalidate() { final DefaultFactHandle f0 = new DefaultFactHandle( 134, "cheese" ); assertEquals( 134, f0.getId() ); f0.invalidate(); // invalidate no longer sets the id to -1 assertEquals( 134, f0.getId() ); }
@Test public void testHashCode() { final DefaultFactHandle f0 = new DefaultFactHandle( 234, "cheese" ); assertEquals( "cheese".hashCode(), f0.getObjectHashCode() ); assertEquals( 234, f0.hashCode() ); }
@Test public void testFactHandleImpllong() { final DefaultFactHandle f0 = new DefaultFactHandle( 134, "cheese" ); assertEquals( 134, f0.getId() ); assertEquals( 134, f0.getRecency() ); }
KieSession ksession = kbase.newKieSession(); FactHandle fh = ksession.insert( new A( 1, 1, 1, 1 ) ); ksession.fireAllRules(); kbase.addPackages( loadKnowledgePackagesFromString( str2 ) ); ksession.fireAllRules(); ksession.insert( new A( 2, 2, 2, 2 ) ); LeftTuple leftTuple = ( (DefaultFactHandle) fh ).getFirstLeftTuple(); ObjectTypeNode.Id letTupleOtnId = leftTuple.getInputOtnId(); leftTuple = leftTuple.getHandleNext();
ks.setGlobal( "list", list ); ks.fireAllRules(); assertTrue( list.containsAll( asList("Sub", "Message") ) ); Collection<FactHandle> fhs = ks.getFactHandles(); while( iter.hasNext() ) { DefaultFactHandle dfh = (DefaultFactHandle) iter.next(); if( dfh.getObjectClassName().equals("test.Sub") ) { subFh = dfh; } else if( dfh.getObjectClassName().equals("test.Message") ) { msgFh = dfh; } else if( dfh.getObjectClassName().equals("test.Left") ) { leftFh = dfh; } else if( dfh.getObjectClassName().equals("test.Test") ) { testFh = dfh; } else { fail( "Unexpected FH class: " + dfh.getObjectClassName() ); assertNotNull( "No FactHandle for Message found!", msgFh ); Object xsdObj = subFh.getObject(); xsdObj = msgFh.getObject();
@Test public void testDisconnectedFactHandle() { final KieBase kbase = getKnowledgeBase(); final KieSession ksession = createKnowledgeSession( kbase ); final DefaultFactHandle helloHandle = (DefaultFactHandle) ksession.insert( "hello" ); final DefaultFactHandle goodbyeHandle = (DefaultFactHandle) ksession.insert( "goodbye" ); FactHandle key = DefaultFactHandle.createFromExternalFormat( helloHandle.toExternalForm() ); assertEquals( "hello", ksession.getObject( key ) ); key = DefaultFactHandle.createFromExternalFormat( goodbyeHandle.toExternalForm() ); assertEquals( "goodbye", ksession.getObject( key ) ); }
public String reportWMObjects(KieSession session) { PriorityQueue<String> queue = new PriorityQueue<String>(); for (FactHandle fh : session.getFactHandles()) { Object o; if (fh instanceof EventFactHandle ) { EventFactHandle efh = (EventFactHandle) fh; queue.add("\t " + efh.getStartTimestamp() + "\t" + efh.getObject().toString() + "\n"); } else { o = ((DefaultFactHandle) fh).getObject(); queue.add("\t " + o.toString() + " >> " + System.identityHashCode( o.getClass() ) + "\n"); } } String ans = " ---------------- WM " + session.getObjects().size() + " --------------\n"; while (! queue.isEmpty()) ans += queue.poll(); ans += " ---------------- END WM -----------\n"; return ans; }
@Test public void testLiteralConstraintAssertObjectWithoutMemory() throws Exception { InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); BuildContext buildContext = new BuildContext( kBase ); buildContext.setRule(new RuleImpl("test")); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); PropagationContextFactory pctxFactory = kBase.getConfiguration().getComponentFactory().getPropagationContextFactory(); final PropagationContext context = pctxFactory.createPropagationContext(0, PropagationContext.Type.INSERTION, null, null, null); alphaNode.addObjectSink( sink ); final Cheese cheddar = new Cheese( "cheddar", 5 ); final DefaultFactHandle f0 = (DefaultFactHandle) ksession.insert( cheddar ); ksession.getObject( (DefaultFactHandle) list[0] ) ); final Cheese stilton = new Cheese( "stilton", 6 ); final DefaultFactHandle f1 = new DefaultFactHandle( 1, stilton ); ksession.getObject( (DefaultFactHandle) list[0] ) );
@Test public void testAllLinkedInWithNotNodesOnly() { setUp( NOT_NODE ); assertEquals( NotNode.class, n3.getClass() ); // make sure it created NotNodes KieBaseConfiguration kconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(kconf); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); BetaMemory bm = (BetaMemory) ksession.getNodeMemory( n3 ); createSegmentMemory( n3, ksession ); assertTrue( bm.getSegmentMemory().isSegmentLinked() ); // not nodes start off linked DefaultFactHandle f1 = (DefaultFactHandle) ksession.insert( "test1" ); // unlinked after first assertion n3.assertObject( f1, context, ksession ); // this doesn't unlink on the assertObject, as the node's memory must be processed. So use the helper method the main network evaluator uses. PhreakNotNode.unlinkNotNodeOnRightInsert( (NotNode) n3, bm, ksession ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); n3.retractRightTuple( f1.getFirstRightTuple(), context, ksession ); assertTrue( bm.getSegmentMemory().isSegmentLinked() ); //assertFalse( bm.getSegmentMemory().isSigmentLinked() ); // check retraction unlinks again }
setUp( JOIN_NODE ); InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); StatefulKnowledgeSessionImpl wm = new StatefulKnowledgeSessionImpl( 1L, kBase ); PathMemory rtn1Rs = (PathMemory) wm.getNodeMemory( rtn1 ); PathMemory rtn2Rs = (PathMemory) wm.getNodeMemory( rtn2 ); PathMemory rtn3Rs = (PathMemory) wm.getNodeMemory( rtn3 ); n2.retractRightTuple( f2.getFirstRightTuple(), context, wm ); assertFalse( rtn1Rs.isRuleLinked() ); assertFalse( rtn2Rs.isRuleLinked() );
@Test public void testUpdateSinkWithoutMemory() { InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); BuildContext buildContext = new BuildContext( kBase ); buildContext.setRule(new RuleImpl("test")); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); PropagationContextFactory pctxFactory = kBase.getConfiguration().getComponentFactory().getPropagationContextFactory(); final PropagationContext context = pctxFactory.createPropagationContext(0, PropagationContext.Type.INSERTION, null, null, null); final Cheese cheese = new Cheese( "cheddar", 0 ); final DefaultFactHandle handle1 = new DefaultFactHandle( 1, cheese ); final Cheese stilton = new Cheese( "stilton", 10 ); final DefaultFactHandle handle2 = new DefaultFactHandle( 2, stilton );
StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); final Rete rete = kBase.getRete(); final ObjectTypeNode objectTypeNode = new ObjectTypeNode(1, this.entryPoint, final DefaultFactHandle h1 = new DefaultFactHandle(1, string); final DefaultFactHandle h2 = new DefaultFactHandle(1, list); ksession); ksession.fireAllRules(); ((DefaultFactHandle) results[0]).getObject());
IdGenerator idGenerator = kBase.getReteooBuilder().getIdGenerator(); final Rete rete = kBase.getRete(); final ObjectTypeNode objectTypeNode = new ObjectTypeNode( idGenerator.getNextId(), this.entryPoint, buildContext ); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newStatefulKnowledgeSession(); final Agenda agenda = ksession.getAgenda(); rule1.setConsequence( consequence ); final DefaultFactHandle handle1 = new DefaultFactHandle( 1, "cheese" ); final RuleTerminalNodeLeftTuple tuple1 = new RuleTerminalNodeLeftTuple( handle1, true ); final PropagationContext context1 = pctxFactory.createPropagationContext(0, PropagationContext.INSERTION, null, null, new DefaultFactHandle()); final FactHandle statedHandle1 = ksession.insert( statedString1 ); final FactHandle statedHandle2 = ksession.insert( statedString2 );
@Test public void testIsShadowed() { StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); // Create a Rete network with ObjectTypeNodes for List, Collection and ArrayList final Rete rete = kBase.getRete(); final ObjectTypeNode objectTypeNode = new ObjectTypeNode(1, this.entryPoint, new ClassObjectType(Cheese.class), buildContext); objectTypeNode.attach(buildContext); final MockObjectSink sink1 = new MockObjectSink(); objectTypeNode.addObjectSink(sink1); // There are no String ObjectTypeNodes, make sure its not propagated final Cheese cheese = new Cheese("brie", 15); final DefaultFactHandle h1 = new DefaultFactHandle(1, cheese); rete.assertObject(h1, pctxFactory.createPropagationContext(0, PropagationContext.Type.INSERTION, null, null, null), ksession); ksession.fireAllRules(); final Object[] results = (Object[]) sink1.getAsserted().get(0); }
IdGenerator idGenerator = kBase.getReteooBuilder().getIdGenerator(); final Rete rete = kBase.getRete(); final ObjectTypeNode objectTypeNode = new ObjectTypeNode( idGenerator.getNextId(), this.entryPoint, 0, buildContext ); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newStatefulKnowledgeSession(); final Agenda agenda = ksession.getAgenda(); rule1.setConsequence( consequence ); final DefaultFactHandle handle1 = new DefaultFactHandle( 1, "cheese" ); final RuleTerminalNodeLeftTuple tuple1 = new RuleTerminalNodeLeftTuple( handle1, true ); final PropagationContext context1 = pctxFactory.createPropagationContext(0, PropagationContext.INSERTION, null, null, new DefaultFactHandle()); ksession ); (Activation) tuple1.getContextObject() );
@Test @Ignore public <M extends ModedAssertion<M>> void testSingleLogicalRelationship() throws Exception { IdGenerator idGenerator = kBase.getReteooBuilder().getIdGenerator(); final Rete rete = kBase.getRete(); 0, buildContext); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newStatefulKnowledgeSession(); final InternalAgenda agenda = (InternalAgenda) ksession.getAgenda(); final DefaultFactHandle handle1 = (DefaultFactHandle) ksession.insert( "o1" ); final RuleTerminalNodeLeftTuple tuple1 = new RuleTerminalNodeLeftTuple( handle1, node, true ); final PropagationContext context1 = pctxFactory.createPropagationContext(0, PropagationContext.INSERTION, null, null, new DefaultFactHandle()); InternalFactHandle logicalHandle = (InternalFactHandle) ksession.insert( logicalString, null, false,
@Test public void testScheduledActivation() throws Exception { IdGenerator idGenerator = kBase.getReteooBuilder().getIdGenerator(); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newStatefulKnowledgeSession(); null); final RuleTerminalNodeLeftTuple tuple = new RuleTerminalNodeLeftTuple(new DefaultFactHandle(1, "cheese"), node, context, ksession); ksession.fireAllRules();