Drools:为什么无国籍会议?

时间:2015-02-25 03:40:15

标签: java drools

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

那为什么还有无国籍的会议呢?他们服务的目的是什么?他们比有状态会话有什么优势?

谢谢。

1 个答案:

答案 0 :(得分:1)

对于许多其他常规无状态方案,Drools无状态会话可能有助于过滤或数据预处理或数据验证。

对于不同的用例,我在Drools中经历过有状态和无状态会话的需要;对于无状态用例,有一些例子:

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

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