当前位置: 首页 > 知识库问答 >
问题:

Drools:只在执行另一个规则后执行一个规则

施飞鸿
2023-03-14

我在同一个drl文件中有两个Drools规则,如下所示:

rule "If critical"
when 
incident:Incident(state=CRITICAL)
then
incident.getIncidentValve().activateAlarm();
end;

rule "If alarm"
when 
valve:Valve(hasAlarm==true)
then
SMS.send(valve.getId());
end;

我的想法是用第一条规则处理所有处于临界状态的事件。然后使用第二个规则,如果任何阀门有警报,这是由“如果临界”规则设置的,发送一个短信。

你知道吗?用口水可能吗?

共有1个答案

施利
2023-03-14

问题是第一条规则执行后的事实没有更新。要使用在第1条规则中更改的值,必须使用update函数更新这些值。

 类似资料:
  • 假设我有一个议程组“daily”,它有两组drools规则集A有规则“default-1”,“default-2”,“default-3”,集B有规则“custom-1”,“custom-2”,“custom-3” 当议程组“daily”变得集中,并且当前事实与自定义模式匹配时,我只希望“custom-1”和/或“custom-2”和/或“custom-3”触发;否则,只有“Default-1”和

  • 我有一个如下所示的对象: 我要做的是,根据field1和field2的值,我需要设置isActive标志和相应的消息。但是,如果field1或field2的规则被激发,我需要停止规则处理。也就是说,我只需要执行1个成功的规则。 我在一篇文章中读到,执行Ksession.FireAllRules(1)可以解决这个问题。但是fireAllRules()方法在Drools6中不可用。我也试着把一个返回;

  • 我有这样的情况,在规则文件中的所有规则必须检查执行。如果我的理解是正确的,文档所说的规则将由引擎任意执行。 我有一个或多个疑问。 > 我在许多地方得到了答案,我必须使用显著性功能来按顺序执行它们。如果我使用显著性,并且我有执行所有规则的要求,它真的会大规模地影响性能吗?如果是,它会如何影响性能,甚至规则引擎也会任意执行所有规则,比如一些随机顺序。 提前谢谢。

  • 我们目前正在将jBPM(7.37.final)规则部署到一个Kie执行服务器,并使用执行服务器自动公开的REST API调用规则。 但是由于一些体系结构的限制,我们不能使用REST API调用规则。该选项是执行一个基于jar(kie服务器客户机或其他)的集成,并从客户机(java应用程序)远程调用执行服务器上的规则。 Virges Vinay

  • 当多个进程并行运行时,Drools似乎会给出不正确的结果,并且在每个进程中,每次都会创建和处理一个新的对象。 试用版本:, 细节: 我并行执行了120个任务(使用7个线程)。在这120项任务中,drools对108项任务给出了正确的结果,但对12项任务执行了错误的规则(每次运行失败的任务数量各不相同)。 让我在这里发布代码和输出: 你知道这背后的原因吗? 更新:以上代码仅用于测试目的,以查看Kie