使用Drools执行反应规则

时间:2013-01-17 18:13:13

标签: java drools

(我和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(),工作内存将会忘记之前的所有事件。实现我想要的最好方法是什么?

1 个答案:

答案 0 :(得分:0)

只要你使用Stateful Knowledge Session,你可能正在做什么,因为无状态的没有fireAllRules()方法,WM将忘记所有插入的事实。

你表达的“E1发生”应该是ksession.insert(E1);

您可以使用文档中给出的示例(上面的链接)...