java - Drools:为什么是无状态 session ?

标签 java drools

Drools 使用 session 来存储运行时数据。为此,有两种 session :无状态和有状态。与无状态 session 相比,有状态 session 允许迭代调用,并且似乎比无状态 session 具有所有优势。

那么为什么会有无状态 session 呢?他们服务的目的是什么?与有状态 session 相比,它们有什么优势?

谢谢。

最佳答案

对于许多其他一般的无状态场景,Drools 无状态 session 可能有助于过滤或数据预处理或数据验证。

我经历过 Drools 中针对不同用例的有状态和无状态 session 的需求;对于无状态用例一些示例:

  • 数据验证:规则定义验证约束,当收到消息/业务对象时,将根据规则对其进行验证
  • 过滤:规则定义给定消息是否在数据管道中向下传递/转发
  • 预处理:规则定义消息/业务对象在数据管道向下传递/转发之前如何预格式化或调整

在这些示例中,您会注意到在根据规则评估对象后 session 不需要保持任何状态。在这些示例中,最好丢弃 session 并为下一个消息/对象创建一个新 session ,因为可以单独对它们进行完整评估。从技术上讲,如果规则定义良好,则行为将是幂等的,这意味着如果您(无意中?)再次循环相同的对象/消息,结果将是相同的。最后,当我说对象/消息时,它并不一定意味着单个 Pojo,它可能是对象的集合。

关于java - Drools:为什么是无状态 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28710711/

相关文章:

java - 无法将 Drools 6.x Workbench 部署到 Windows 中的 tomcat - 没有使用 uniqueName 'jdbc/jbpm' 注册的资源

java - 在clojure中制作一个插件系统

java - Android:时间和时区问题

java - 带 Guava 的 MultiMap 表

drools - KieContainer可以加载多个包吗? KieContainer 和 KieBase 之间有什么关系

Java - Drools 验证对象值列表

hadoop - Spark RDD 抛出 NullPointerException

java - 如何在运行时从 Guvnor 加载和执行规则(无更改集 xml 文件)

java - 如何打包jar文件和mysql数据库

java - Hibernate 问题 - 列名无效