如何在drools中启动依赖规则xls决策表

时间:2017-02-01 19:39:14

标签: jboss drools redhat

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

每当我添加RuleFlow-Group规则时,我就找不到在规则表中添加RuleFlow-Group的方法。

我做了什么: 我已将No-Loop添加到true,因此没有规则为更新的事实触发相同的规则表。

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

展示问题陈述的电子表格。 enter image description here

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

第三个表格没有使用修改,因此它不会导致循环。

相关问题