最近在研究drools 5,它的文档里面有写可以通过动态fact的方式实现让规则引擎自动获得fact的变化
// By setting dynamic to TRUE, Drools will use JavaBean
// PropertyChangeListeners so you don't have to call modify or update().
final boolean dynamic = true;
session.insert( fact, dynamic );
但是实际写代码的时候发现,目前提供的insert函数根本没有第二个boolean的参数,而只有一个Object的参数,网上找了一下,大部分都是这样写的,版本都是drools 4。在drools 5里面将这个特性取消了吗?在drools 5里面要如何实现动态fact呢?
请熟悉drools的朋友帮忙解答,谢谢!
------解决方案--------------------------------------------------------
只有在 StatefulSession 里面才有这个方法。而 StatefulKnowledgeSession里面没有。
for (Iterator workingMemories =
statefulKnowledgeSession.getWorkingMemoryEntryPoints().iterator();
workingMemories.hasNext();) {
WorkingMemoryEntryPoint entryPoint =
(WorkingMemoryEntryPoint) workingMemories.next();
System.out.println(entryPoint.getEntryPointId());
entryPoint.insert(message, true); // 这里面。
}