如何重置StatefulKnowledgeSession?
How to reset the StatefulKnowledgeSession?
我正在使用 StatefulKnowledgeSession 来触发我的所有警报规则。
在准备部分,我没有了解如何重置会话。因此,它会再次创建覆盖规则吗?
您可以通过调用会话中存在的 dispose() 方法来重置 StatefulKnowledgeSession。
像这样:ksession.dispose();
有用link: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();
}
我正在使用 StatefulKnowledgeSession 来触发我的所有警报规则。
在准备部分,我没有了解如何重置会话。因此,它会再次创建覆盖规则吗?
您可以通过调用会话中存在的 dispose() 方法来重置 StatefulKnowledgeSession。
像这样:ksession.dispose();
有用link: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();
}