【发布时间】:2014-12-28 21:30:27
【问题描述】:
我有一个关于 2 个 Drools 属性的问题 - 显着性和无循环
显着性:
rule "Hello World"
salience -10
when
$m : Message( status == Message.HELLO, $myMessage : message )
then
System.out.println( $myMessage );
$m.setMessage( "Goodbye cruel world" );
$m.setStatus( Message.GOODBYE );
update( $m );
end
rule "GoodBye"
when
Message( status == Message.GOODBYE, $myMessage : message )
then
System.out.println( $myMessage );
end
我们应该期望“GoodBye”规则首先被触发(因为它的显着性更高)但这不会发生,而是“Hello World”规则首先被触发,然后才是“GoodBye”
无循环:
我了解此属性可防止将规则执行到将导致无限循环的同一事实。我的问题是关于这个属性的一个我不太明白的例子:
rule "interest calculation"
no-loop
when
$account : Account( )
then
modify($account) {
setBalance((long)($account.getBalance() * 1.03));
}
end
如果没有“无循环”,为什么会导致无限循环?
【问题讨论】:
标签: drools