Session Drools设计:何时使用无状态或有状态

Session Drools设计:何时使用无状态或有状态,session,drools,stateless,stateful,Session,Drools,Stateless,Stateful,在探索何时在Drools中使用有状态或无状态会话时,下面的信息非常有用: 何时使用无状态会话与有状态会话似乎很清楚 但我有点困惑,因为这里有以下信息: 在这个链接中,人们讨论从有状态会话切换到无状态会话。 收集所有信息后,我得出结论,似乎可以通过以下方式将有状态会话切换为无状态会话,以避免可能的内存问题(?): 将事实添加到列表中 使用execute命令将列表添加到无状态会话(或者将其添加到全局会话) 通过查询获取规则中的不同事实 将结果添加到一个或多个全局变量,以便能够从无状

在探索何时在Drools中使用有状态或无状态会话时,下面的信息非常有用:

何时使用无状态会话与有状态会话似乎很清楚

但我有点困惑,因为这里有以下信息:

在这个链接中,人们讨论从有状态会话切换到无状态会话。 收集所有信息后,我得出结论,似乎可以通过以下方式将有状态会话切换为无状态会话,以避免可能的内存问题(?):

  • 将事实添加到列表中
  • 使用execute命令将列表添加到无状态会话(或者将其添加到全局会话)
  • 通过查询获取规则中的不同事实
  • 将结果添加到一个或多个全局变量,以便能够从无状态会话获取结果
这对我来说似乎是不好的做法,只是为了避免使用有状态会话

我的问题是:

  • 我先前的结论正确吗
  • 为什么我要从有状态会话切换到无状态会话?KIE中是否存在内存问题?这些问题何时发生
  • 我认为无状态会话和有状态会话之间的真正区别在于,我是验证(在无状态会话中)数据还是为数据添加值(在有状态会话中)。这将是一个设计问题,而不是技术问题。对吗

不要太聪明。假设您希望使用Drools的全部功能来评估规则:使用有状态会话。谢谢您的回答。我认为关于不良行为的假设是正确的。但我仍然想知道KIE是否存在记忆问题,以及何时发生。关于这一点,你能提供更多的信息吗?除了一句无关紧要的话,即内存使用取决于插入的事实对象的数量和存储要求,我们不能说得太多。规则引擎使用的节点网络取决于规则的数量和复杂性。产生5位数或6位数规则的解决方案可能会导致问题。非常感谢,这是有用的信息。不幸的是,这是评论,我不能指出你的评论都是正确的答案。不要太聪明。假设您希望使用Drools的全部功能来评估规则:使用有状态会话。谢谢您的回答。我认为关于不良行为的假设是正确的。但我仍然想知道KIE是否存在记忆问题,以及何时发生。关于这一点,你能提供更多的信息吗?除了一句无关紧要的话,即内存使用取决于插入的事实对象的数量和存储要求,我们不能说得太多。规则引擎使用的节点网络取决于规则的数量和复杂性。产生5位数或6位数规则的解决方案可能会导致问题。非常感谢,这是有用的信息。不幸的是,这是评论,我不能指出你的评论都是正确的答案。