Drools Fusion:如果我在同一时间储存并使用该字段,则会出现奇怪的行为
这是我在.rdl中的代码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
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 )
}
另外,不要依赖于首先触发的规则“设置时间戳”。使用一些额外的约束或显著性。好的,但如果我使用“修改到”规则“设置时间戳”,我会创建一个循环,然后再次触发“设置时间戳”规则!