Drools Fusion:如果我在同一时间储存并使用该字段,则会出现奇怪的行为

Drools Fusion:如果我在同一时间储存并使用该字段,则会出现奇怪的行为,drools,drools-fusion,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("//c

这是我在.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
规则1
不会触发!!!!(3>6个错误!)


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

对事实对象的更改必须通知规则引擎,即使用

modify( $las ){
    setTime( 6 )
}

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

好的,但如果我使用“修改到”规则“设置时间戳”,我会创建一个循环,然后再次触发“设置时间戳”规则!