繁体   English   中英

使用Drools执行反应式规则

[英]Execute Reactive Rules using 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() ,则工作内存将忘记所有先前的事件。 实现我想要的最好的方法是什么?

只要您使用“有状态知识会话” ,您可能正在做的事情是因为无状态会话没有fireAllRules()方法,因此WM 不会忘记所有插入的事实。

您表示为“ E1发生”的内容应该是ksession.insert(E1);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM