(我和Drools一起工作有点新,所以请原谅这是一个简单的问题。)
我想使用Drools来反复执行规则,这意味着我们可以将插入的“事实”视为“事件”实例。但是,我希望这能以一种方式执行,即只要收到事件就可以触发规则。但是,如果规则可能依赖于多个事件,我如何配置工作记忆,以记住以前的事件。考虑一个非常简单的例子:
说我有以下规则:
- when (E1) do A1
- when (E2) do A2
- when (E1,E2) do A3
然后,如果时间进展如下,我想遵循要触发的规则,例如:
- t=1 , E1 happens => A1 fired
- t=2 , E2 happens => A2 fired + A3 fired
我遇到的问题是如果我在每次插入后调用ksession.fireAllRules()
,工作内存将会忘记之前的所有事件。实现我想要的最好方法是什么?
答案 0 :(得分:0)
只要你使用Stateful Knowledge Session,你可能正在做什么,因为无状态的没有fireAllRules()方法,WM将不忘记所有插入的事实。
你表达的“E1发生”应该是ksession.insert(E1);
您可以使用文档中给出的示例(上面的链接)...