2013-09-30 29 views
0

我想找出drools規則的LHS(左手側)中兩個變量的最小值。 例如:drools規則中的兩個變量的最小值

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

因此,如何將最小的被發現,是個問題。謝謝。

回答

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)。