Слюни правила "не существует" - PullRequest
2 голосов
/ 20 марта 2012

Я использую JBoss Drools для написания бизнес-правил. У меня проблема с правилом "не существует". Вот мой код.

rule "ATL 27R-A12 Subfleet A319-100 Departure configuration list has flap 1"
    salience 20
    no-loop true
    when
        AircraftConfig(aircraftType=="A319-100")
        RunwayInfo(airport3lCode== "ATL", runwayId == "27R-A12" )
        not (exists (DepartureConfiguration( flap == 1 )))
    then
        throw new RuleNotMatchException("The configurations do not match the rule of this runway.");
end

Мои факты содержат: AircraftConfig, RunwayInfo и несколько DepartureConfigurations. Я хочу применить правило, когда нет DepartureConfiguration, который flap=1. Я имею в виду, что если их три DepartureConfigurations, у одного из них flap=1, у других flap=2 или flap=3, то это правило не будет действовать. Как я мог сделать эту работу?

Ответы [ 2 ]

8 голосов
/ 20 марта 2012

Ключевое слово для проверки отсутствия факта: not, а не not exists. Измените последнюю строку вашего состояния на:

not DepartureConfiguration( flap == 1 )
0 голосов
/ 21 марта 2012

На самом деле, я допустил некоторый конфликт в моих правилах. Раньше я думал, что правила должны быть запущены от начала до конца файла drl. Я решил свою проблему, добавив поток правил. Также спасибо вам, ребята, которые дают мне предложения.

...