drools规则中至少有两个变量

时间:2013-09-30 06:30:55

标签: drools business-rules drools-planner optaplanner

我想在流氓规则的LHS(左手侧)中找出最少两个变量。 例如:

$variable1 : // Some value generation lines
$variable2 : // Some value generation lines
// This doesn't work
$minimumOfVariable1And2 : min($variable1,$variable2)

那么问题就是如何找到最低限度。感谢。

1 个答案:

答案 0 :(得分:2)

一种方式:

when
    FactA($a : a, ...)
    FactB($b : b, ...)
    FactC(c < Math.min($a, $b), ...)
then
    ...

另一种方式:

when
    FactA($a : a, ...)
    FactB($b : b, ...)
then
    int c = Math.min($a, $b);
    ...

现在,当FactA和FactB属于同一类型时会变得有趣:

when
    Assignment($a : a, ...)
    Assignment(a < $a, ...)
    // $a this the minimum
then
    ...

因为如果2个分配具有相同的a,则此规则将匹配两次(一次用于A1-A2,一次用于A2-A1)。