0

这是我的 .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=3rule1开火!!!!(3>6 错误!)

如果我手动写入eval((3>6)==true)rule1,则 rule1 不会正确触发!

4

1 回答 1

0

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

modify( $las ){
    setTime( 6 )
}

此外,不要依赖规则“设置时间戳”被首先触发。使用一些额外的约束或显着性。

于 2014-01-23T11:58:59.550 回答