Drools:如何从Decision表中的Condition获取返回值?

时间:2016-01-06 10:17:59

标签: drools

我在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的原因。有办法吗?

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的动作。