【问题标题】:drools stateless vs stateful session流口水无状态与有状态会话
【发布时间】:2015-11-01 14:20:49
【问题描述】:

什么时候应该使用 Drools 无状态会话,使用它而不是有状态会话有什么好处?
在一些评论here 中说无状态会话包装了一个有状态会话,这是否意味着当我在触发所有规则后销毁 statfeul 会话时会表现得像有状态会话?

【问题讨论】:

    标签: drools jbpm


    【解决方案1】:

    也许最好说(有状态的)KieSession 和 StatelessKieSessions 都为基于类 AbstractRuntime 的类提供 API(接口)。

    StatelessKieSession 提供了一个接口,用于通过单个 execute 方法调用执行一组命令,命令表示为一组对象。如果您想将命令发送到远程会话(但如果您在应用程序中运行会话),这很有用。此外,这样的会话不会对工作内存中所做的更改做出反应,因此它的用处有限,尽管它可能比有状态会话更有效地执行第一轮也是唯一一轮。

    execute 调用意味着dispose 调用,这是对会话对象的最后告别:将所有资源释放到垃圾回收中。

    总结(Drools 文档中有完整描述)

    • 对于简单的规则评估,尤其是通过一些远程通信,请使用无状态会话。
    • 要利用生产系统的全部功能,即由于事实变化和事实排列发生变化而继续重新评估规则条件,有必要使用有状态会话。

    如果您计划使用简单的应用程序界面,请不要担心“好处”:只需使用有状态会话即可。

    【讨论】:

      【解决方案2】:

      如果您想要更新或想要控制在规则执行期间传递给规则的事实(数据),请使用有状态会话。您可以使用修改、撤回方法。

      如果您不想在规则执行期间更新事实,请使用无状态会话。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 2019-10-28
        • 1970-01-01
        相关资源
        最近更新 更多