我在Drools中有一个Decision表,我正在尝试检索条件(列)的返回值,这些值的计算结果是查看是否执行了特定的规则(行)。我可以知道如果可能吗?请在下面找到我的问题的一个简单示例。
Condition 1 | Condition 2 | Condition 3 | Condition 4
Age < 60 Employed=Yes Owns a house=Yes Single=Yes
Rule 1: YES YES
Rule 2: YES NO YES
Rule 3: NO YES
假设如果理想情况下执行规则2并且执行规则1,我想知道通过获取条件1和3的返回值(无论是真还是假)来执行规则1的原因。有办法吗?
答案 0 :(得分:0)
Rule 1
的DRL规则类似于
rule "Rule 1"
when
Person( $age: age < 60, $owner: owner == true )
then
...( $age, $owner )...
end
在右侧,您将绑定变量$age
和$owner
设置为Person
事实中包含的实际值。您可以在决策表的ACTION列中使用Java代码,使用这些值执行任何操作。
修改如果您需要否定案例的值,则必须使用其他规则
rule "Rule 2"
when
Person( $age: age, $owner: owner,
$age >= 60 || $owner == false )
then
another_action...( $age, $owner )...
end
最有可能的是,你还是需要做一些其他的行动。
当然,所有四种情况的个别规则也是可能的。请注意,决策表允许您为所有四种情况TT,TF,FT,FF编写规则。您可以组合动作单元格,以便在单个单元格中定义TF FT FF的动作。