问题: 我在决策表(电子表格)中有三个规则表,前两个规则表的规则定义了从第三个规则表触发的规则。在第一个规则表中,根据某些条件,我更新了事实,这个事实用于从第二个规则表触发规则。在第二个规则表的ACTION列中,我已经更新了事实,我想根据这个更新的事实在第三个规则表中触发规则,但是由于更新的事实,第一个表中的规则再次触发然后第二个并且循环继续
每当我添加RuleFlow-Group
规则时,我就找不到在规则表中添加RuleFlow-Group的方法。
我做了什么:
我已将No-Loop
添加到true,因此没有规则为更新的事实触发相同的规则表。
我尝试添加LOCK-ON-ACTIVE
属性,规则表1中的规则工作正常,但没有其他规则被解雇。
我认为在触发规则表1中的规则后,它会锁定规则包的所有规则,而不是在规则集中添加“锁定活动”,而不是在规则集中。
答案 0 :(得分:0)
这是一套非常抽象的规则,我觉得值得深入讨论。更新事实意味着它会在任何地方重新评估,这在所有规则中都是如此。为了避免重新评估,如果已经在事实中设置了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
第三个表格没有使用修改,因此它不会导致循环。