Я использую механизм правил 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
Кто-нибудь может сказать мне, что не так в первом методе? Кроме того, модульное тестирование для первого метода также работает нормально. Только когда я запускаю приложение, я получаю эту проблему