@Test(timeout = 10000 ) public void testStrictEntailment() { KieSession kSession = getSession( "org/drools/compiler/beliefsystem/defeasible/strict.drl" ); kSession.fireAllRules(); TruthMaintenanceSystem tms = ((NamedEntryPoint) kSession.getEntryPoint( "DEFAULT" )).getTruthMaintenanceSystem(); FactType Ctype = kSession.getKieBase().getFactType( "org.drools.defeasible", "C" ); FactType Dtype = kSession.getKieBase().getFactType( "org.drools.defeasible", "D" ); ObjectHashMap keys = tms.getEqualityKeyMap(); Iterator iter = keys.iterator(); ObjectHashMap.ObjectEntry entry; while ( ( entry = ( ObjectHashMap.ObjectEntry) iter.next() ) != null ) { EqualityKey key = (EqualityKey) entry.getValue(); Class factClass = key.getFactHandle().getObject().getClass(); if ( factClass == Ctype.getFactClass() ) { checkStatus( key, 2, DefeasibilityStatus.DEFINITELY ); } else if ( factClass == Dtype.getFactClass() ) { checkStatus( key, 1, DefeasibilityStatus.DEFINITELY ); } else { fail( "Unrecognized object has been logically justified : " + factClass ); } } assertEquals( 5, kSession.getObjects().size() ); }
public InternalFactHandle getFactHandle(FactHandle factHandle, KieSession ksession) { Map<Integer, FactHandle> handles = new HashMap<Integer, FactHandle>(); for ( FactHandle fh : ksession.getFactHandles() ) { handles.put( ((InternalFactHandle) fh).getId(), fh ); } return (InternalFactHandle) handles.get( ((InternalFactHandle) factHandle).getId() ); }
InternalFactHandle handle) throws IOException { stream.writeInt( type ); stream.writeInt( handle.getId() ); stream.writeLong( handle.getRecency() ); Object object = handle.getObject(); String entryPoint = handle.getEntryPoint().getEntryPoint().getEntryPointId(); if ( entryPoint != null && !entryPoint.equals( "" ) ) { stream.writeBoolean( true );
KieBaseConfiguration kieConf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kieConf.setOption( EqualityBehaviorOption.IDENTITY ); KieBase kbase = loadKnowledgeBaseFromString( kieConf, droolsSource ); KieSession session = kbase.newKieSession(); try { List list = new ArrayList(); session.setGlobal("list", list); session.insert( "go1" ); session.fireAllRules(); assertEquals(EqualityKey.JUSTIFIED, jfh1.getEqualityKey().getStatus() ); InternalFactHandle fh1 = (InternalFactHandle) session.insert( "f1" ); session.fireAllRules(); assertEquals( EqualityKey.STATED, fh1.getEqualityKey().getStatus()); assertSame( fh1.getEqualityKey(), jfh1.getEqualityKey() ); assertNotSame( fh1, jfh1 );
kpkgs = SerializationHelper.serializeObject( kpkgs ); InternalKnowledgeBase kBase = (InternalKnowledgeBase) getKnowledgeBase(); kBase.addPackages(kpkgs); kBase = SerializationHelper.serializeObject( kBase ); KieSession session = kBase.newKieSession(); session.setGlobal( "results", results ); kBase.addPackages(SerializationHelper.serializeObject( kpkgs )); kBase = (InternalKnowledgeBase) SerializationHelper.serializeObject( kBase ); session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, kBase, true); results.size() ); assertEquals( stilton2.getObject(), results.get( 1 ) ); assertEquals( brie1.getObject(), results.get( 2 ) ); assertEquals( brie3.getObject(), results.get( 3 ) ); assertEquals( brie2.getObject(), results.get( 4 ) );
final KieSession ksession = kbase.newKieSession(); final EntryPointNode epn = ( (InternalKnowledgeBase) ksession.getKieBase() ).getRete().getEntryPointNodes().values().iterator().next(); final ObjectTypeNode otn = epn.getObjectTypeNodes().values().iterator().next(); final LeftInputAdapterNode lian = (LeftInputAdapterNode)otn.getObjectSinkPropagator().getSinks()[0]; final ReactiveFromNode from3 = (ReactiveFromNode)from2.getSinkPropagator().getSinks()[0]; final BetaMemory betaMemory = ( (InternalWorkingMemory) ksession ).getNodeMemory(from3).getBetaMemory(); ksession.setGlobal( "list", list ); debbie.addToy( new Toy( "doll" ) ); ksession.insert( bob ); ksession.fireAllRules(); Iterator<LeftTuple> it = tupleMemory.iterator(); for ( LeftTuple next = it.next(); next != null; next = it.next() ) { final Object obj = next.getFactHandle().getObject(); Assertions.assertThat(obj == charlie || obj == debbie).isTrue(); it = tupleMemory.iterator(); for ( LeftTuple next = it.next(); next != null; next = it.next() ) { final Object obj = next.getFactHandle().getObject(); Assertions.assertThat(obj == charlie).isTrue();
Collection<KiePackage> kpkgs = kbuilder.getKnowledgePackages(); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kpkgs ); kbase = SerializationHelper.serializeObject(kbase); final KieSession session = createKnowledgeSession(kbase); final Person a = new Person( "a" ); session.setGlobal( "b", b ); FactHandle h1 = session.insert( a ); session.fireAllRules(); Collection< ? > list = session.getObjects( new ClassObjectFilter( a.getClass() ) ); assertEquals( 2, h1 = session.getFactHandle( b ); assertSame( ((InternalFactHandle)h1).getEqualityKey().getLogicalFactHandle(), h1); ((StatefulKnowledgeSessionImpl)session).getTruthMaintenanceSystem().delete( h1 ); session.fireAllRules();
public static long[] testFrom(KieBase kbase, int n) { final long[] result = new long[2]; final KieSession ksession = kbase.newKieSession(); final List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); final List<Man> model = generateModel(n); final List<Child> toBeModified = getChildToBeModified(model); long start = System.nanoTime(); final List<InternalFactHandle> fhs = insertModel(ksession, model); ksession.fireAllRules(); result[0] = System.nanoTime() - start; list.clear(); start = System.nanoTime(); for (Child child : toBeModified) { child.setAge(11); } for (InternalFactHandle fh : fhs) { ksession.update(fh, fh.getObject()); } ksession.fireAllRules(); result[1] = System.nanoTime() - start; Assertions.assertThat(n * 3).isEqualTo(list.size()); ksession.dispose(); return result; }
fail( kbuilderImpl.getErrors().toString() ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilderImpl.getKnowledgePackages() ); KieSession ks = kbase.newKieSession(); ArrayList list = new ArrayList(); ks.setGlobal( "list", list ); FactHandle handle = ks.insert( "go" ); ks.fireAllRules(); assertEquals( Arrays.asList( "ok" ), list ); for ( Object o : ks.getObjects() ) { System.out.println( o + " >> " + ((InternalFactHandle)ks.getFactHandle( o )).getEqualityKey() ); ks.fireAllRules(); for ( Object o : ks.getObjects( new ClassObjectFilter( ks.getKieBase().getFactType( "org.drools.test", "Y" ).getFactClass() ) ) ) { assertTrue( o instanceof TraitableBean ); TraitableBean tb = (TraitableBean) o;
KieSession session = kBase.newKieSession(); session.setGlobal( "results", results ); assertEquals( stilton1.getObject(), results.get( 0 ) ); assertEquals( stilton2.getObject(), results.get( 0 ) ); assertEquals( bob2.getObject(), results.get( 1 ) ); assertEquals( bob1.getObject(), results.get( 2 ) ); assertEquals( bob4.getObject(), results.get( 0 ) ); assertEquals( bob3.getObject(), results.get( 1 ) ); assertEquals( bob6.getObject(), results.get( 0 ) ); assertEquals( bob5.getObject(), results.get( 1 ) ); assertEquals( bob8.getObject(), results.get( 0 ) ); assertEquals( bob7.getObject(), results.get( 1 ) );
KieSession ksession = kbase.newKieSession(); List list = new ArrayList(); ksession.setGlobal( "list", list ); ksession.insert( new Entity() ); ksession.fireAllRules(); for ( final Object o : ksession.getObjects( new ObjectFilter() { InternalFactHandle handle = (InternalFactHandle) ksession.getFactHandle( o ); LeftTuple first = handle.getFirstLeftTuple(); assertTrue( first instanceof RuleTerminalNodeLeftTuple ); assertEquals( "Check", ((RuleTerminalNodeLeftTuple) first).getRule().getName() );
kSession.setGlobal( "list", list ); 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(); assertEquals( new Integer(3), ((Person)((JTMSBeliefSetImpl)key.getBeliefSet()).getFactHandle().getObject()).getNotInEqualTestObject() ); kSession.retract( fhGo3 ); it = equalityMap.iterator(); key = ( EqualityKey ) (( ObjectEntry ) it.next() ).getValue(); while ( !key.getFactHandle().getObject().equals( new Person( "darth") ) ) { key = ( EqualityKey ) (( ObjectEntry ) it.next() ).getValue(); assertEquals( new Integer(2), ((Person)((JTMSBeliefSetImpl)key.getBeliefSet()).getFactHandle().getObject()).getNotInEqualTestObject() );
@Test @Ignore public void testAgendaEventListener() throws Exception { InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); pkg.addRule( rule ); kbase.addPackages( Collections.singleton(pkg) ); KieSession ksession = kbase.newKieSession(); final List agendaList = new ArrayList(); final AgendaEventListener agendaEventListener = new AgendaEventListener() { ksession.addEventListener( agendaEventListener ); assertEquals( 1, ksession.getAgendaEventListeners().size() ); FactHandle cheddarHandle = ksession.insert( cheddar ); InternalAgenda agenda = (InternalAgenda) ksession.getAgenda(); cancelledEvent = (MatchCancelledEvent) agendaList.get( 0 ); assertNotNull( ((InternalFactHandle) cancelledEvent.getMatch().getFactHandles().toArray()[0]).getObject() );
kbase = SerializationHelper.serializeObject( kbase ); final KieSession wmOne = kbase.newKieSession(); final KieSession wmTwo = kbase.newKieSession(); wmOne.setGlobal( "results", listOne ); wmTwo.setGlobal( "results", listTwo ); wmOne.insert( name ); wmOne.insert( likes ); wmOne.insert( age ); matchHandle.getObject(), listOne.get( 0 ));
session.setGlobal( "results", results ); assertTrue( results.contains( h1.getObject() ) ); assertTrue( results.contains( h6.getObject() ) ); assertTrue( results.contains( h10.getObject() ) ); results.clear(); assertTrue( results.contains( h2.getObject() ) ); assertTrue( results.contains( h4.getObject() ) ); results.clear(); kbase.removeKiePackage( "tom" ); assertTrue( results.contains( h5.getObject() ) ); assertTrue( results.contains( h9.getObject() ) ); results.clear(); ((Person) h3.getObject()).setName( "ed" ); session.update( h3, h3.getObject() ); session.fireAllRules(); assertTrue( results.contains( h3.getObject() ) ); } catch ( Exception e ) { e.printStackTrace();
fail( kbuilder.getErrors().toString() ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); KieSession ksession = kbase.newKieSession(); TraitFactory.setMode( mode, ksession.getKieBase() ); ksession.fireAllRules(); FactHandle personHandle = ksession.getFactHandles( new ClassObjectFilter( Person.class ) ).iterator().next(); InternalFactHandle h = ((InternalFactHandle) personHandle); ObjectTypeConfigurationRegistry reg = h.getEntryPoint().getObjectTypeConfigurationRegistry(); ObjectTypeConf conf = reg.getObjectTypeConf( h.getEntryPoint().getEntryPoint(), ((InternalFactHandle) personHandle).getObject() ); assertTrue( conf.isTMSEnabled() );
List posList = new ArrayList(); List negList = new ArrayList(); session.setGlobal( "posList", posList ); session.setGlobal( "negList", negList ); session.insert( 20 ); session.insert( 5 ); InternalFactHandle posHandle = (InternalFactHandle) session.getFactHandle( posBar ); DefeasibleBeliefSet dbs = (DefeasibleBeliefSet) posHandle.getEqualityKey().getBeliefSet(); assertEquals( 1, dbs.size() ); assertFalse( dbs.isNegated() ); assertFalse(posHandle.isNegated()); assertTrue( dbs.isDefeasiblyPosProveable()); assertTrue( session.getObjects().contains( posBar ) ); dbs = (DefeasibleBeliefSet) negHandle.getEqualityKey().getBeliefSet(); assertEquals( 1, dbs.size() ); assertFalse( dbs.isPositive() ); assertTrue( negHandle.isNegated());
KieBaseConfiguration kieConf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kieConf.setOption( EqualityBehaviorOption.EQUALITY ); KieBase kbase = loadKnowledgeBaseFromString( kieConf, droolsSource ); KieSession session = kbase.newKieSession(); try { session.fireAllRules(); for ( FactHandle fh : session.getFactHandles() ) { InternalFactHandle ifh = (InternalFactHandle) fh; assertEquals( EqualityKey.JUSTIFIED, ifh.getEqualityKey().getStatus() ); session.dispose();
session.setGlobal( "map", map ); session.insert( 42 ); session.insert( 11 ); Bean b = new Bean( 11 ); session.insert( b ); InternalFactHandle f42 = ( InternalFactHandle ) session.getFactHandle( b42 ); assertEquals( EqualityKey.JUSTIFIED, f42.getEqualityKey().getStatus() );
session.fireAllRules(); FactType type = session.getKieBase().getFactType( "org.drools.abductive.test", "CitizenUS" ); for ( Object o : session.getObjects() ) { System.out.println( ">>> " + o ); if ( o.getClass().equals( type.getFactClass() ) ) { InternalFactHandle h = (InternalFactHandle) session.getFactHandle( o ); String name = (String) type.get( o, "name" ); if ( "Mary".equals( name ) ) { assertNull( h.getEqualityKey().getBeliefSet() ); } else if ( "John".equals( name ) ) { BeliefSet bs = h.getEqualityKey().getBeliefSet(); assertTrue( bs.isPositive() ); assertEquals( 2, bs.size() );