【发布时间】:2015-11-01 14:20:49
【问题描述】:
什么时候应该使用 Drools 无状态会话,使用它而不是有状态会话有什么好处?
在一些评论here 中说无状态会话包装了一个有状态会话,这是否意味着当我在触发所有规则后销毁 statfeul 会话时会表现得像有状态会话?
【问题讨论】:
什么时候应该使用 Drools 无状态会话,使用它而不是有状态会话有什么好处?
在一些评论here 中说无状态会话包装了一个有状态会话,这是否意味着当我在触发所有规则后销毁 statfeul 会话时会表现得像有状态会话?
【问题讨论】:
也许最好说(有状态的)KieSession 和 StatelessKieSessions 都为基于类 AbstractRuntime 的类提供 API(接口)。
StatelessKieSession 提供了一个接口,用于通过单个 execute 方法调用执行一组命令,命令表示为一组对象。如果您想将命令发送到远程会话(但如果您在应用程序中运行会话),这很有用。此外,这样的会话不会对工作内存中所做的更改做出反应,因此它的用处有限,尽管它可能比有状态会话更有效地执行第一轮也是唯一一轮。
execute 调用意味着dispose 调用,这是对会话对象的最后告别:将所有资源释放到垃圾回收中。
总结(Drools 文档中有完整描述)
如果您计划使用简单的应用程序界面,请不要担心“好处”:只需使用有状态会话即可。
【讨论】:
如果您想要更新或想要控制在规则执行期间传递给规则的事实(数据),请使用有状态会话。您可以使用修改、撤回方法。
如果您不想在规则执行期间更新事实,请使用无状态会话。
【讨论】: