public CaseData internalGetCaseFile(KieRuntime kruntime) { Collection<? extends Object> caseFiles = kruntime.getObjects(new ClassObjectFilter(CaseData.class)); if (caseFiles.size() != 1) { return null; } CaseData caseFile = (CaseData) caseFiles.iterator().next(); return caseFile; }
public static String getCaseId(KieRuntime kruntime) { Collection<? extends Object> caseFiles = kruntime.getObjects(new ClassObjectFilter(CaseFileInstance.class)); if (caseFiles.size() != 1) { throw new IllegalStateException("Not able to find distinct case file - found case files " + caseFiles.size()); } CaseFileInstance caseFile = (CaseFileInstance) caseFiles.iterator().next(); return caseFile.getCaseId(); } }
} else { logger.debug("No query defined, retrieving all facts of type Assignment"); Collection<Assignment> results = (Collection<Assignment>) kieSession.getObjects(new ClassObjectFilter(Assignment.class));
public void internalSetVariable(String name, Object value) { if (name.startsWith(VariableScope.CASE_FILE_PREFIX)) { String nameInCaseFile = name.replaceFirst(VariableScope.CASE_FILE_PREFIX, ""); // store it under case file rather regular variables @SuppressWarnings("unchecked") Collection<CaseData> caseFiles = (Collection<CaseData>) getProcessInstance().getKnowledgeRuntime().getObjects(new ClassObjectFilter(CaseData.class)); if (caseFiles.size() == 1) { CaseData caseFile = (CaseData) caseFiles.iterator().next(); FactHandle factHandle = getProcessInstance().getKnowledgeRuntime().getFactHandle(caseFile); if (value == null) { caseFile.remove(nameInCaseFile); } else { caseFile.add(nameInCaseFile, value); } getProcessInstance().getKnowledgeRuntime().update(factHandle, caseFile); ((KieSession)getProcessInstance().getKnowledgeRuntime()).fireAllRules(); return; } } // not a case, store it in normal variables variables.put(name, value); }
Collection<CaseData> caseFiles = (Collection<CaseData>) getProcessInstance().getKnowledgeRuntime().getObjects(new ClassObjectFilter(CaseData.class)); if (caseFiles.size() == 1) { CaseData caseFile = caseFiles.iterator().next();
Collection<CaseData> caseFiles = (Collection<CaseData>) session.getObjects(new ClassObjectFilter(CaseData.class)); if (caseFiles != null && caseFiles.size() == 1) { caseFile = caseFiles.iterator().next();
@Test public void testIterateObjects() throws Exception { final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_IterateObjects.drl")); final KieSession ksession = createKnowledgeSession(kbase); final List results = new ArrayList(); ksession.setGlobal("results", results); ksession.insert(new Cheese("stilton", 10)); ksession.fireAllRules(); final Iterator events = ksession.getObjects(new ClassObjectFilter(PersonInterface.class)).iterator(); assertTrue(events.hasNext()); assertEquals(1, results.size()); assertEquals(results.get(0), events.next()); } }
@Test public void testLogicalInsertionsNoLoop() throws Exception { KieBase kbase = loadKnowledgeBase("test_LogicalInsertionsNoLoop.drl"); KieSession ksession = kbase.newKieSession(); try { final List l = new ArrayList(); final Person a = new Person( "a" ); ksession.setGlobal( "a", a ); ksession.setGlobal( "l", l ); ksession.fireAllRules(); assertEquals("a still in WM", 0, ksession.getObjects(new ClassObjectFilter(a.getClass())).size()); assertEquals( "Rule should not loop", 1, l.size() ); } finally { ksession.dispose(); } }
@Test public void testStatedDeleteLogicalAssertion() { // BZ-1317026 String drl = "rule R1 when\n" + "then\n" + " insertLogical( \"test\" ); \n" + "end\n"; KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build() .newKieSession(); try { ksession.fireAllRules(); Collection<FactHandle> fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 1, fhs.size() ); for (FactHandle fh : fhs) { ksession.delete( fh, FactHandle.State.STATED ); } fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 1, fhs.size() ); for (FactHandle fh : fhs) { ksession.delete( fh, FactHandle.State.LOGICAL ); } fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 0, fhs.size() ); } finally { ksession.dispose(); } }
@Test public void testDeleteLogicalAssertion() { // BZ-1317026 String drl = "rule R1 when\n" + "then\n" + " insertLogical( \"test\" ); \n" + "end\n"; KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build() .newKieSession(); try { ksession.fireAllRules(); Collection<FactHandle> fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 1, fhs.size() ); for (FactHandle fh : fhs) { ksession.delete( fh ); } fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 0, fhs.size() ); } finally { ksession.dispose(); } }
true ); List temperatureList = new ArrayList( session.getObjects( new ClassObjectFilter( Integer.class ) ) ); assertTrue( temperatureList.contains( Integer.valueOf( 100 ) ) ); assertTrue( temperatureList.contains( Integer.valueOf( 200 ) ) ); session.fireAllRules(); temperatureList = new ArrayList( session.getObjects( new ClassObjectFilter( Integer.class ) ) ); assertFalse( temperatureList.contains( Integer.valueOf( 100 ) ) ); assertTrue( temperatureList.contains( Integer.valueOf( 150 ) ) );
@Test public void testPhreakTMS() { // DROOLS-7 String str = "import org.drools.compiler.Person\n" + "import org.drools.compiler.Cheese\n" + "rule R when\n" + " Person( $age : age, $name : name == \"A\" )\n" + " not Person( age == $age + 1 )\n" + "then\n" + " insertLogical(new Cheese(\"gorgonzola\", 10));\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString( str ); KieSession ksession = kbase.newKieSession(); Person p1 = new Person( "A", 31 ); FactHandle fh1 = ksession.insert( p1 ); ksession.fireAllRules(); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( Cheese.class ) ).size() ); Person p2 = new Person( "A", 32 ); FactHandle fh2 = ksession.insert( p2 ); ksession.fireAllRules(); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( Cheese.class ) ).size() ); }
@Test public void testDeleteLogicalAssertionFromRule() { // BZ-1317026 String drl = "global java.util.List list;\n" + "rule R1 when\n" + "then\n" + " insertLogical( \"test\" ); \n" + "end\n" + "rule R2 when\n" + " $s : String()\n" + "then\n" + " list.add( $s ); \n" + " delete( $s ); \n" + "end\n"; KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build() .newKieSession(); try { List<String> list = new ArrayList<String>(); ksession.setGlobal( "list", list ); ksession.fireAllRules(); assertEquals( 1, list.size() ); assertEquals( "test", list.get(0) ); Collection<FactHandle> fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 0, fhs.size() ); } finally { ksession.dispose(); } }
assertEquals( "test", list.get(0) ); Collection<FactHandle> fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 1, fhs.size() ); } finally {
assertEquals( "There should be 2 CheeseEqual in Working Memory, 1 justified, 1 stated", 2, ksession.getObjects( new ClassObjectFilter( CheeseEqual.class ) ).size() ); assertEquals( 6, ksession.getObjects().size() ); true); assertEquals( 0, ksession.getObjects( new ClassObjectFilter( CheeseEqual.class ) ).size() ); assertEquals( 0, ksession.getObjects( new ClassObjectFilter( Short.class ) ).size() ); assertEquals( 0, ksession.getObjects().size() );
Collection< ? > list = session.getObjects( new ClassObjectFilter( a.getClass() ) ); assertEquals( 2, list.size() ); list = session.getObjects( new ClassObjectFilter( a.getClass() ) ); assertEquals( "b was deleted, but it should not have. Is backed by b => b being true.", 1, ((StatefulKnowledgeSessionImpl)session).getTruthMaintenanceSystem().delete( h1 ); session.fireAllRules(); list = session.getObjects( new ClassObjectFilter( a.getClass() ) ); assertEquals( 0, list.size() );
ksession.getObjects().size() ); Collection l = ksession.getObjects( new ClassObjectFilter( CheeseEqual.class ) ); assertEquals( 1, l.size() );
assertEquals( 2, ksession.getObjects().size() ); Collection l = ksession.getObjects( new ClassObjectFilter( CheeseEqual.class ) ); assertEquals( 1, l.size() );
@Test(timeout=10000) public void testLogicalInsertionsLoop() throws Exception { final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource( "test_LogicalInsertionsLoop.drl", getClass() ), ResourceType.DRL ); Collection<KiePackage> kpkgs = kbuilder.getKnowledgePackages(); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kpkgs ); kbase = SerializationHelper.serializeObject(kbase); final KieSession session = createKnowledgeSession(kbase); try { final List l = new ArrayList(); final Person a = new Person( "a" ); session.setGlobal( "a", a ); session.setGlobal( "l", l ); session.fireAllRules(); Collection< ? > list = session.getObjects( new ClassObjectFilter( a.getClass() ) ); assertEquals( "a still asserted.", 0, list.size() ); assertEquals( "Rule has not fired (looped) expected number of times", 10, l.size() ); } finally { session.dispose(); } }
kSession.fireAllRules(); youngestFathers = kSession.getObjects( new ClassObjectFilter(YoungestFather.class) ); assertEquals( 1, youngestFathers.size() ); assertEquals( bart, ((YoungestFather) youngestFathers.iterator().next()).getMan() ); kSession.fireAllRules(); youngestFathers = kSession.getObjects( new ClassObjectFilter(YoungestFather.class) ); assertEquals(1, youngestFathers.size()); assertEquals(bart, ((YoungestFather) youngestFathers.iterator().next()).getMan());