0

drools ルールの LHS (左側) で 2 つの変数の最小値を見つけたいと考えています。例えば:

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

では、最小値をどのように見つけるかが問題です。ありがとう。

4

1 に答える 1

3

一方通行:

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 がある場合、このルールは 2 回 (A1-A2 に対して 1 回、A2-A1 に対して 1 回) 一致するためです。

于 2013-09-30T07:03:47.020 に答える