流口水6:无循环和突出

时间:2014-11-26 15:03:30

标签: java drools

我正在使用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

我预计将按以下顺序触发规则: - 规则“创建OfferTranslation 4” - 规则“创建OfferTranslation 3” - 规则“创建OfferTranslation 2” - 规则“创建OfferTranslation 1”

然而,当我解雇它们时,我得到了这个命令: - 规则“创建OfferTranslation 1” - 规则“创建OfferTranslation 2” - 规则“创建OfferTranslation 4” - 规则“创建OfferTranslation 3”

看起来no-loop属性禁用了显着性,并且无循环规则具有优先级。 当我尝试没有无循环时,我得到了良好的秩序。 我如何一起使用无循环和突出,或者我的错误是什么?

PS:我知道在我的例子中没有循环是没用的,我把它写成比我的实际规则更简单的例子。

1 个答案:

答案 0 :(得分:0)

没有错误。我们认为使用错误顺序触发的规则是因为我们在drools侦听器中使用了一个记录器来捕获matchCreated事件。一条简单的登录规则显示规则已按正确的顺序触发。

Seb&约瑟夫