我正在使用Drools 6,当我在我的drl中混合无循环和显着性时,我有一个奇怪的行为。
rule "creation OfferTranslation 1"
salience 1
no-loop
dialect "mvel"
when
not OfferTranslation( source =="Offer1" )
then
insert(new OfferTranslation("Offer1","Offer1_31415"));
end
rule "creation OfferTranslation 2"
salience 2
no-loop
dialect "mvel"
when
not OfferTranslation( source =="Offer2" )
then
insert(new OfferTranslation("Offer2","Offer2_00dsdf"));
end
rule "creation OfferTranslation 3"
salience 3
dialect "mvel"
when
not OfferTranslation( source =="Offer3" )
then
insert(new OfferTranslation("Offer3","Offer3_00dsf"));
end
rule "creation OfferTranslation 4"
salience 4
dialect "mvel"
when
not OfferTranslation( source =="Offer4" )
then
insert(new OfferTranslation("Offer4","Offer4_0032"));
end我预计规则将按以下顺序触发:-规则"creation OfferTranslation 4“-规则"creation OfferTranslation 3”-规则"creation OfferTranslation 2“-规则"creation OfferTranslation 1”
然而,当我启动它们时,我得到的顺序是:-规则"creation OfferTranslation 1“-规则"creation OfferTranslation 2”-规则"creation OfferTranslation 4“-规则"creation OfferTranslation 3”
看起来,no-loop属性禁用了显着性,而no-loop规则具有优先级。当我在没有循环的情况下尝试时,我得到了良好的顺序。我如何才能同时使用无循环和显着性,或者我的错误是什么?
PS :我知道在我的例子中没有循环是没有用的,我写它是为了有比我的实际规则更简单的例子。
发布于 2014-11-27 15:02:19
没有bug。我们相信规则是以错误的顺序触发的,因为我们在捕获matchCreated事件的drools侦听器中使用了记录器。规则中的一个简单日志显示规则已按正确的顺序触发。
Seb & Joseph
https://stackoverflow.com/questions/27152395
复制相似问题