Jboss 这个规则集的顺序是什么

Jboss 这个规则集的顺序是什么,jboss,drools,Jboss,Drools,我目前正在学习流口水和阅读这本书 在第4章的开头给出了一个示例来说明delete关键字的使用。例如: rule "Init current date" when then insert(new Date()); end rule "Expire coupons" when $now: Date() $cp: Coupon(validUntil before $now) then delete($cp); end rule "Execute co

我目前正在学习流口水和阅读这本书

在第4章的开头给出了一个示例来说明
delete
关键字的使用。例如:

rule "Init current date" 
when 
then 
   insert(new Date()); 
end 

rule "Expire coupons" 
when 
   $now: Date() 
   $cp: Coupon(validUntil before $now) 
then 
   delete($cp); 
end 

rule "Execute coupon" 
when 
   $o: Order() 
   $cp: Coupon(order == $o) 
then 
   System.out.println(" We have a coupon for this order!"); 
end

现在我的问题是:为什么“执行优惠券”规则比“过期优惠券”规则触发得晚。正如我所了解到的,规则的顺序是不确定的,因此我认为“执行优惠券”规则可以在其他两个规则之前启动,你是对的。根据我的经验,我甚至会在“执行优惠券”先触发上下一些赌注,因为后面的规则通常是先触发的

显然,这个例子必须通过以下两种方式加以纠正:

rule "Execute coupon" 
when
    $now: Date() 
    $o: Order() 
    $cp: Coupon(order == $o, validUntil after $now ) 
then 
    System.out.println(" We have a coupon for this order!"); 
end
或者使用显著性(如果可能的话,应该尽量避免)

但是(我没有这本书),我也可以想象一个场景,其中规则集可能会按照给定的方式工作:

session.insert( new Date() );
session.insert( coupon );
session.fireAllRules();

session.insert( order );
session.fireAllRules();