Jboss 如何在drools xls决策表中激发相关规则

Jboss 如何在drools xls决策表中激发相关规则,jboss,drools,redhat,Jboss,Drools,Redhat,问题: 我在决策表(电子表格)中有三个规则表。前两个规则表的规则定义了从第三个规则表中触发的规则。在第一个规则表中,根据某些条件,我更新了事实,这个事实用于从第二个规则表触发规则。在第二个规则表的ACTION列中,我已经更新了这个事实,我想基于这个更新的事实在第三个规则表中触发规则,但是由于更新了的事实,第一个表中的规则会再次触发,然后第二个,循环继续 每当我添加RuleFlow组时,我找不到在规则表中添加RuleFlow组的方法,因为任何事实的规则都会停止触发 我的尝试: 我已经将No Loo

问题: 我在决策表(电子表格)中有三个规则表。前两个规则表的规则定义了从第三个规则表中触发的规则。在第一个规则表中,根据某些条件,我更新了事实,这个事实用于从第二个规则表触发规则。在第二个规则表的ACTION列中,我已经更新了这个事实,我想基于这个更新的事实在第三个规则表中触发规则,但是由于更新了的事实,第一个表中的规则会再次触发,然后第二个,循环继续

每当我添加
RuleFlow组时,我找不到在规则表中添加RuleFlow组的方法,因为任何事实的规则都会停止触发

我的尝试: 我已经将
No Loop
添加到true,这样就不会为更新的事实触发相同规则表的任何规则

我尝试添加
LOCK-ON-ACTIVE
属性,规则表1中的规则工作正常,但没有其他规则触发。 我认为在从规则表1启动规则后,它会锁定规则包中的所有规则,相反,我在规则表中添加了“锁定激活”,而不是在规则集中

说明问题陈述的电子表格。
这是一套非常抽象的规则,我觉得不值得深入讨论。更新一个事实意味着它在任何地方都会被重新评估,这在所有规则中都是如此。为了避免重新评估,如果事实中已经设置了RHS的结果,则使用约束来防止触发规则

rule "table_1_1"
when
    $input: Input(a==1, b!=1)
then
    modify( $input ){ setB( 1 ); }
end

rule "table_2_1"
when
    $input: Input(b==1, c!=1)
then
    modify( $input ){ setC( 1 ); }
end

第三个表没有使用modify,因此不会导致循环。

感谢您的回答,添加条件可以解决我的问题,但它是我生成的一小组数据,用于定义我的问题,但在我的应用程序中,有很多规则表,都包含很多规则。添加条件会降低性能。我想知道还有没有其他选择。是的,第三个表不会导致循环。您知道如何在电子表格决策表中添加规则流组或议程组吗