我使用的烧成我所有的警报规则的StatefulKnowledgeSession。如何重置StatefulKnowledgeSession?
在准备部分我没有得到如何重置会话。因此,它会再次制定压倒一切的规则?
我使用的烧成我所有的警报规则的StatefulKnowledgeSession。如何重置StatefulKnowledgeSession?
在准备部分我没有得到如何重置会话。因此,它会再次制定压倒一切的规则?
可以通过调用目前在会话中的Dispose()方法重置StatefulKnowledgeSession。
像这样:ksession.dispose();
有用的链接:https://docs.jboss.org/jbpm/v5.1/javadocs/org/drools/runtime/StatefulKnowledgeSession.html
你能对你的意思是有关重置会话什么更清楚了吗?
如果你有一个长期运行的会话规则持久状态你可以把它打开,添加新的事实,并根据需要调用火的所有规则。如果你无限期地将事实记录在工作记忆中,这会有一些记忆使用的含意。请参阅示例1。
如果你每次叫你怎么称呼它反对,不是打电话session.dispose空工作记忆(),你用它做后为每个规则创建执行的新KieSession你的规则的时间。见例2.
例1
public class MyClass(){
... // initialize KieServices/KieContainers
private KieSession myLongRunningSession = kContainer.newKieSession("long-running-session");
public void executeMyRules(Object myFact) {
myLongRunningSession.insert(myFact);
myLongRunningSession.fireAllRules();
// do whatever else you need to do
}
}
例2
public void executeMyRules(Object myFact, Object myOtherFact) {
KieSession session = kContainer.newKieSession("my-session");
session.insert(myfact);
session.insert(myOtherFact);
session.fireAllRules();
... // do whatever you need to
session.dispose();
}
感谢默哈伯莱什,给了答复我的问题,我会尝试这种方法。 –