这是我的.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无法正确触发!
答案 0 :(得分:0)
必须向规则引擎宣布对事实对象的更改,即使用
modify( $las ){
setTime( 6 )
}
此外,不要依赖首先触发的规则“set timestamp”。使用一些额外的约束或显着性。