相反检索所有事实,我需要从工作记忆检索特定类型的事实。
我了解到,我可以取回全部来自如下工作内存的事实。
drools.getWorkingMemory().getWorkingMemoryEntryPoint("Stream").getObjects();
请提供一些指针从工作记忆检索特定类型的对象。
相反检索所有事实,我需要从工作记忆检索特定类型的事实。
我了解到,我可以取回全部来自如下工作内存的事实。
drools.getWorkingMemory().getWorkingMemoryEntryPoint("Stream").getObjects();
请提供一些指针从工作记忆检索特定类型的对象。
除了使用getObjects()方法,你可以使用查询。 查询是不一样RHS的规则:
query "getObjectsOfClassA"
$result: ClassA()
end
您可以使用DRL语言的所有电源内部查询,以创建非常复杂的匹配模式。 你甚至可以将参数传递给查询过: http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/#d0e7632
然后,在Java代码中,你可以通过调用查询:
QueryResults results = ksession.getQueryResults( "getObjectsOfClassA" );
for ( QueryResultsRow row : results ) {
ClassA classA = ( ClassA ) row.get( "$result" ); //you can retrieve all the bounded variables here
//do whatever you want with classA
}
如果你需要的所有集合的ClassA的,你可以在你的查询中使用累加功能。
希望能帮助到你,
你可以使用一个ObjectFilter的
Collection<Object> myfacts = session.getObjects( new ClassObjectFilter(MyFact.class) );
不幸的是在Drools中5.5.0决赛,结果集合的包含预期方法是行不通的。 通常一个包含方法返回true,如果搜索到的对象等于集合中的东西,但口水的集合只能找到对象,它具有相同的参考(它使用==来比较对象)。