Я играю с некоторыми правилами, чтобы стандартизировать уличные адреса, которые не удалось найти у поставщика услуг.
Я определил это правило
rule "Derive Street Aliases"
when
$street : Street();
then
insert( new StreetAlias($street.getPrefixPart() + " " + $street.getStemmedPart(), $street.getName()) );
end
Он берет название улицы, например «Южная главная улица», и создает псевдоним «Южная главная улица».
Затем это другое правило подбирает псевдоним:
rule "Street Alias Match"
when
$userAddress : UserAddress();
$streetAlias : StreetAlias(alias == $userAddress.getStreetPart());
then
$userAddress.setResolvedAddress($userAddress.getNumberPart() + " " + $streetAlias.getName());
end
Это будет работать нормально, пока не будет вставлена «Южная главная авеню». Тогда псевдоним «Южный Майн» станет двусмысленным.
Что тогда должно произойти во 2-м правиле? Обнаружит ли он конфликт? Будет ли он стрелять дважды, чтобы последний выиграл?
Меня интересует теория того, что должно произойти, так как я новичок в Rules Engines.