функция возвращает неверное логическое значение в drools - PullRequest
0 голосов
/ 02 ноября 2018

Я использую механизм правил drool для обработки бизнес-правил. Для нижеследующего правила я получаю неправильный ответ.

rule "H13: Offer not valid for channelType requesting offers"
activation-group "OFFER"
salience 4
    when
      offer : OfferEligibilityRulesData(isOfferInvalidForRequestedChannelType(getOfferChannelType(),getRequestChannelType()))
    then
          offer.setInEligible("Offer channelType type is not equal to requesting channelType type","0028","H13");
end

function boolean isOfferInvalidForRequestedChannelType(String offerChannel, String requestChannel){
  return offerChannel!="ALL" && offerChannel!=requestChannel;
}

Когда я вызываю это правило с offerChannelType = "ALL" и requestchannelType = "mobile", функция возвращает неверное значение результата TRUE. ожидаемое значение - ЛОЖЬ.

если убрать вызов функции и записать ее тело в самом правиле, то все работает нормально.

rule "H13: Offer not valid for channelType requesting offers"
activation-group "OFFER"
salience 4
    when
      offer : OfferEligibilityRulesData(getOfferChannelType()!="ALL" && getOfferChannelType()!=getRequestChannelType())
    then
          offer.setInEligible("Offer channelType type is not equal to requesting channelType type","0028","H13");
end

Кто-нибудь может сказать мне, что не так в первом методе? Кроме того, модульное тестирование для первого метода также работает нормально. Только когда я запускаю приложение, я получаю эту проблему

...