kbuilder.add(new ClassPathResource(PROCESS_NAME, this.getClass()), ResourceType.DRF); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); ProcessInstance processInstance = ksession.createProcessInstance("process name", new HashMap<String, Object>()); ksession.insert(processInstance); marshallingConfig.getObjectMarshallingStrategyStore(), marshallingConfig.isMarshallProcessInstances(), marshallingConfig.isMarshallWorkItems(), ksession.getEnvironment()); marshallingConfig.isMarshallWorkItems() , EnvironmentFactory.newEnvironment()); readerContext.wm = ((StatefulKnowledgeSessionImpl) ksession).getInternalWorkingMemory(); Object procInstObject = strategy.read(readerContext); assertTrue(procInstObject != null && procInstObject instanceof ProcessInstance );
@Override public KieSession newKieSession() { Environment env = environment.getEnvironment(); env.set(EnvironmentName.DEPLOYMENT_ID, owner); KieSession ksession = kbase.newKieSession(environment.getConfiguration(), env); this.sessions.put(ksession.getIdentifier(), ksession); ProcessInstanceManager piManager = ((ProcessRuntimeImpl)((StatefulKnowledgeSessionImpl)ksession).getProcessRuntime()).getProcessInstanceManager(); if (piManager instanceof DefaultProcessInstanceManager) { ((DefaultProcessInstanceManager) piManager).setProcessCounter(processCounter); } return ksession; }
@Test public void bindDataSourcesNonexistingEntryPoints() { final StatefulKnowledgeSessionImpl sessionImpl = mock(StatefulKnowledgeSessionImpl.class); when(sessionImpl.getEntryPoint("number")).thenReturn(null); when(sessionImpl.getEntryPoint("numbersArray")).thenReturn(null); when(sessionImpl.getEntryPoint("stringList")).thenReturn(null); when(sessionImpl.getEntryPoint("simpleFactList")).thenReturn(null); final TestRuleUnit testRuleUnit = new TestRuleUnit(new Integer[]{1, 2, 5}, BigDecimal.TEN); final SimpleFact simpleFact = new SimpleFact("testValue"); testRuleUnit.addSimpleFact(simpleFact); ruleUnitDescr.bindDataSources(sessionImpl, testRuleUnit); verify(sessionImpl, never()).insert(anyObject()); verify(sessionImpl, never()).insert(anyObject(), anyBoolean(), anyObject(), anyObject()); }
private static void executeWorkItem(StatefulKnowledgeSessionImpl ksession, WorkItemImpl workItem, WorkItemNodeInstance workItemNodeInstance) { ProcessEventSupport eventSupport = ((InternalProcessRuntime) ksession.getProcessRuntime()).getProcessEventSupport(); eventSupport.fireBeforeNodeTriggered(workItemNodeInstance, ksession); ((WorkItemManager) ksession.getWorkItemManager()).internalExecuteWorkItem(workItem); workItemNodeInstance.internalSetWorkItemId(workItem.getId()); eventSupport.fireAfterNodeTriggered(workItemNodeInstance, ksession); }
KieSession ksession = kbase.newKieSession(); try { final Person a = new Person( "a" ); final Cheese cheese = new Cheese( "brie", 1 ); ksession.setGlobal( "cheese", cheese ); ksession.fireAllRules(); ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession(ksession, true); Collection list = ksession.getObjects(); assertEquals( "i was not asserted by not a => i.", 1, ((InternalAgenda)((StatefulKnowledgeSessionImpl) ksession).getAgenda()).agendaSize());
kSession.setGlobal( "list", list ); FactHandle fhGo1 = kSession.insert( "go1" ); kSession.fireAllRules(); FactHandle fhGo2 = kSession.insert( "go2" ); kSession.fireAllRules(); kSession.fireAllRules(); NamedEntryPoint ep = ( NamedEntryPoint ) ((StatefulKnowledgeSessionImpl)kSession).getEntryPoint( "DEFAULT" ); assertEquals( 3, ep.getObjects().size() ); //just go1, go2, go3 assertEquals( 1, getNegativeObjects(kSession).size() ); // Person(darth) org.drools.core.util.Iterator it = equalityMap.iterator(); EqualityKey key = ( EqualityKey ) (( ObjectEntry ) it.next() ).getValue(); while ( !key.getFactHandle().getObject().equals( new Person( "darth") ) ) { key = ( EqualityKey ) (( ObjectEntry ) it.next() ).getValue(); assertEquals( new Integer(1), ((Person)((JTMSBeliefSetImpl)key.getBeliefSet()).getFactHandle().getObject()).getNotInEqualTestObject() ); kSession.retract( fhGo1 ); it = equalityMap.iterator(); key = ( EqualityKey ) (( ObjectEntry ) it.next() ).getValue(); while ( !key.getFactHandle().getObject().equals( new Person( "darth") ) ) { key = ( EqualityKey ) (( ObjectEntry ) it.next() ).getValue();
KieSession session = createKieSession( kbase ); KieSession ksession = kbase.newKieSession(); worker.setId( workerId ); FactHandle handle = ksession.insert( worker ); ksession.fireAllRules(); retractedWorker = (Object) ksession.getQueryResults( "getWorker", new Object[]{workerId} ); Collection<EntryPointNode> entryPointNodes = sessionImpl.getKnowledgeBase().getRete().getEntryPointNodes().values(); Iterator<InternalFactHandle> it = ((ObjectTypeNodeMemory) sessionImpl.getNodeMemory( droolsQueryNode )).iterator(); assertFalse( it.hasNext() );
kSession.setGlobal( "list", list ); FactHandle fhGo1 = kSession.insert( "go1" ); kSession.fireAllRules(); assertTrue( list.contains( "-neg" ) ); assertEquals( 1, getNegativeObjects(kSession).size() ); NamedEntryPoint ep = ( NamedEntryPoint ) ((StatefulKnowledgeSessionImpl)kSession).getEntryPoint( "DEFAULT" ); ObjectHashMap equalityMap = ep.getTruthMaintenanceSystem().getEqualityKeyMap(); assertEquals( 2, equalityMap.size() ); // go1, neg are two different strings. org.drools.core.util.Iterator it = equalityMap.iterator(); EqualityKey key = ( EqualityKey ) (( ObjectEntry ) it.next() ).getValue(); while ( !key.getFactHandle().getObject().equals( "neg") ) { key = ( EqualityKey ) (( ObjectEntry ) it.next() ).getValue();
@Test(timeout = 10000 ) public void testConflictStrict() { KieSession kSession = getSessionFromFile( "posNegConflict.drl" ); ArrayList list = new ArrayList(); kSession.setGlobal( "list", list ); NamedEntryPoint ep = ( NamedEntryPoint ) ((StatefulKnowledgeSessionImpl)kSession).getEntryPoint( "DEFAULT" ); JTMSBeliefSystem bs = ( JTMSBeliefSystem ) ep.getTruthMaintenanceSystem().getBeliefSystem(); bs.STRICT = true; try { kSession.fireAllRules(); fail( "A fact and its negation should have been asserted, but no exception was trhown in strict mode" ); } catch ( Exception e ) { } finally { bs.STRICT = false; } }
setUp( JOIN_NODE ); KieBaseConfiguration kconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(kconf); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); liaNode.assertObject((InternalFactHandle) ksession.insert("str"), context, ksession); LiaNodeMemory liaMem = (LiaNodeMemory) ksession.getNodeMemory( liaNode ); assertEquals( 1, liaMem.getNodePosMaskBit() ); assertEquals( 3, liaMem.getSegmentMemory().getAllLinkedMaskTest() ); BetaMemory bm1 = (BetaMemory) ksession.getNodeMemory( n1 ); assertEquals( 2, bm1.getNodePosMaskBit() ); assertEquals( 3, bm1.getSegmentMemory().getAllLinkedMaskTest() ); n1.assertObject( (InternalFactHandle) ksession.insert( "str" ), context, ksession ); liaMem = (LiaNodeMemory) ksession.getNodeMemory( liaNode ); assertEquals( 1, liaMem.getNodePosMaskBit() ); assertEquals( 3, liaMem.getSegmentMemory().getAllLinkedMaskTest() ); bm1 = (BetaMemory) ksession.getNodeMemory( n1 ); assertEquals( 2, bm1.getNodePosMaskBit() ); assertEquals( 3, bm1.getSegmentMemory().getAllLinkedMaskTest() );
StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newStatefulKnowledgeSession(); final Agenda agenda = ksession.getAgenda(); rule1.setConsequence( consequence ); true ); final FactHandle statedHandle1 = ksession.insert( statedString1 ); final FactHandle statedHandle2 = ksession.insert( statedString2 ); FactHandle logicalHandle3 = ksession.insert( logicalString3, null, false, ksession.retract( statedHandle2 ); logicalHandle3 = ksession.insert( logicalString3, null, false, ksession.retract( statedHandle1 ); logicalHandle3 = ksession.insert( logicalString3, null, false,
InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); FieldFactory.getInstance().getFieldValue( 5 ), extractor ); final Cheese cheddar = new Cheese( "cheddar", 5 ); final InternalFactHandle cheddarHandle = (InternalFactHandle) ksession.insert( cheddar ); ksession ) ); final Cheese stilton = new Cheese( "stilton", 10 ); final InternalFactHandle stiltonHandle = (InternalFactHandle) ksession.insert( stilton );
.map( TerminalNode.class::cast ).collect( toList() ); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl) kbase.newKieSession(); ksession.insert( 4 ); ksession.insert( 4L ); ksession.insert( true ); ksession.insert( "test" ); assertEquals( 2, ksession.fireAllRules() ); .allMatch( PathMemory::isRuleLinked ) ); ksession.reset(); ksession.insert( 4 ); ksession.insert( 4L ); ksession.insert( "test" ); assertEquals( 1, ksession.fireAllRules() );
@Test public void testRuleSegmentsAllLinkedTestMasks() { setUp( JOIN_NODE ); KieBaseConfiguration kconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(kconf); StatefulKnowledgeSessionImpl wm = new StatefulKnowledgeSessionImpl( 1L, kBase ); PathMemory rs = (PathMemory) wm.getNodeMemory( rtn1 ); assertFalse( rs.isRuleLinked() ); assertEquals( 1, rs.getAllLinkedMaskTest() ); rs = (PathMemory) wm.getNodeMemory( rtn2 ); assertFalse( rs.isRuleLinked() ); assertEquals( 3, rs.getAllLinkedMaskTest() ); rs = (PathMemory) wm.getNodeMemory( rtn3 ); assertFalse( rs.isRuleLinked() ); assertEquals( 7, rs.getAllLinkedMaskTest() ); }
@Test public void testScheduledActivation() throws Exception { IdGenerator idGenerator = kBase.getReteooBuilder().getIdGenerator(); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newStatefulKnowledgeSession(); final RuleImpl rule = new RuleImpl("test-rule"); final RuleTerminalNode node = new RuleTerminalNode(idGenerator.getNextId(), new MockTupleSource(idGenerator.getNextId()), rule, rule.getLhs(), 0, buildContext); rule.setConsequence(new org.drools.core.spi.Consequence() { private static final long serialVersionUID = 510l; null); final RuleTerminalNodeLeftTuple tuple = new RuleTerminalNodeLeftTuple(new DefaultFactHandle(1, "cheese"), node, context, ksession); ksession.fireAllRules();
@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(); final RuleImpl rule = new RuleImpl( "test-rule" ); 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 testReturnValueConstraintAssertObject() throws Exception { InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); BuildContext buildContext = new BuildContext( kBase ); buildContext.setRule(new RuleImpl("test")); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); final RuleImpl rule = new RuleImpl( "test-rule" ); 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 ); final Object[] list = (Object[]) sink.getAsserted().get( 0 ); assertSame( cheddar, ksession.getObject( (DefaultFactHandle) list[0] ) ); final Cheese stilton = new Cheese( "stilton", 6 ); f0.setObject( stilton );
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 ); DefaultFactHandle f1 = (DefaultFactHandle) wm.insert( "test1" ); bm = (BetaMemory) wm.getNodeMemory( n2 ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); DefaultFactHandle f2 = (DefaultFactHandle) wm.insert( "test2" ); n2.assertObject( f2, context, wm ); assertTrue( bm.getSegmentMemory().isSegmentLinked() ); bm = (BetaMemory) wm.getNodeMemory( n5 ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); n2.retractRightTuple( f2.getFirstRightTuple(), context, wm ); assertFalse( rtn1Rs.isRuleLinked() ); assertFalse( rtn2Rs.isRuleLinked() );
builder.build( context, RuleImpl.DEFAULT_CONSEQUENCE_NAME ); InternalKnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); PropagationContextFactory pctxFactory = kBase.getConfiguration().getComponentFactory().getPropagationContextFactory(); kBase.addPackage(pkg); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); final InternalFactHandle f0 = (InternalFactHandle) ksession.insert( cheddar ); final LeftTupleImpl tuple = new LeftTupleImpl( f0, null, true ); f0.removeLeftTuple(tuple); final DefaultKnowledgeHelper kbHelper = new DefaultKnowledgeHelper( ksession ); kbHelper.setActivation( item ); ((MVELConsequence) context.getRule().getConsequence()).compile( (MVELDialectRuntimeData) pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectRuntimeRegistry().getDialectData( "mvel" )); context.getRule().getConsequence().evaluate( kbHelper, ksession );
@Test @Ignore public void testBasicWorkingMemoryActions() { InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); final TruthMaintenanceSystem tms = ((NamedEntryPoint)ksession.getWorkingMemoryEntryPoint(EntryPointId.DEFAULT.getEntryPointId()) ).getTruthMaintenanceSystem(); final String string = "test"; FactHandle fd = ksession.insert( string ); FactHandle fz = ksession.getTruthMaintenanceSystem().insert( string, null, null, new MockActivation() ); assertEquals( 2, key.size() ); ksession.update( fd, string ); assertEquals( 2, key.size() ); ksession.retract( fd ); key = tms.get( string ); fd = ksession.insert( string );