Drools规则“不存在”

时间:2012-03-20 06:40:19

标签: drools business-rules

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

我的事实包含:AircraftConfigRunwayInfo和多个DepartureConfigurations。我想在没有DepartureConfiguration flap=1的情况下触发规则。我的意思是,如果有三个DepartureConfigurations,其中一个有flap=1,其他的有flap=2flap=3,则此规则不会触发。 我怎么能做这个工作?

2 个答案:

答案 0 :(得分:8)

检查不存在事实的关键字是not,而不是not exists。将条件的最后一行更改为:

not DepartureConfiguration( flap == 1 )

答案 1 :(得分:0)

实际上,我在规则中发生了一些冲突。我曾经认为规则应该从drl文件的顶部到结尾运行。我通过添加规则流解决了我的问题。还要感谢那些给我建议的人。