public List executeWithResults(Iterable objects, ObjectFilter filter) { List list = new ArrayList(); StatefulKnowledgeSession ksession = newWorkingMemory(); try { for (Object object : objects) { ksession.insert(object); } ksession.fireAllRules(); for (FactHandle fh : ksession.getFactHandles(filter)) { list.add(((InternalFactHandle) fh).getObject()); } } finally { dispose(ksession); } return list; }