Drools Fusion:如果我更改文件并在同一时刻使用它,则会出现奇怪的行为

时间:2014-01-23 11:10:53

标签: drools drools-fusion

这是我的.rdl

代码
rule "Fulfilment 24345"
when

$evPtr: LeftArmStretched($tsmp:time)

    eval((3>$tsmp)==true)
then
System.err.println("$tsmp=      "+$tsmp);

end


rule "set timestamp"

when
   $las:LeftArmStretched();
then
   System.out.println("//change timestamp!!");
   $las.setTime(6);
end

如果我运行我的例子,第一和第二规则将触发并打印:

//change timestamp!!
$tsmp=         6

但如果$tsmp=3 rule1没有开火!!!! (3> 6假!)

如果我手动将eval((3>6)==true)写入rule1,则规则1无法正确触发!

1 个答案:

答案 0 :(得分:0)

必须向规则引擎宣布对事实对象的更改,即使用

modify( $las ){
    setTime( 6 )
}

此外,不要依赖首先触发的规则“set timestamp”。使用一些额外的约束或显着性。