小编Dav*_*man的帖子

坚持口水知识会议

我在学区工作,我们计划使用 Drools 为学区组成学校的学生群体实施以下类型的规则:

  • 如果学生在一年内有 3 次缺勤,他们的出勤指标将变为 WARN 状态。
  • 如果学生在一年内缺勤 6 次,他们的出勤指标将变为 CRITICAL 状态。
  • 如果学生在一年内发生 3 次重大行为事件,他们的行为指标将变为 WARN 状态。
  • 如果学生在一年内发生 2 次轻微行为和 2 次重大行为事件,他们的行为指标将变为“关键”状态。
  • ...这些只是我头脑中的例子,但还有更多类似的规则。

所有这些规则都可以使用 Drools 专家来简单地表达。此外,学生的规则处理不需要同步。我有几个关于实现这一点的最佳方法的问题。

  1. 从一个角度来看,这可以看作是一个事件流的监控系统。这让我想到创建一个有状态的会话,每个新事件都将插入其中。然而,这些事件发生在 9 个月的过程中并且相对不频繁。此外,我们可以为每个学校或每个学生建立一个会话。

    • 将会话保留在内存中那么长时间会成为问题吗?
    • 如果服务器出现故障,我们是否需要从头开始重建会话状态,或者是否建议拍摄常规快照并仅恢复自快照时间以来发生的事实。
  2. 另一种选择是在为该学生处理事件后为该学生保留一个会话。当下一个事件到来时,我们将从存储中检索他们的会话并插入新的事实。这样我们就不需要为引擎的每次运行检索所有事实来获取学生的状态。会支持这样的配置吗?这样做有什么缺点吗?

  3. 第三种方法是通过检索规则需要运行的所有其他事实、创建新的 KnowledgeSession 并运行规则来响应学生的新事实。

任何关于什么可能是最好的方法的建议将不胜感激。

戴夫

drools drools-fusion

5
推荐指数
1
解决办法
2915
查看次数

标签 统计

drools ×1

drools-fusion ×1