我正在使用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
,则此规则不会触发。
我怎么能做这个工作?
答案 0 :(得分:8)
检查不存在事实的关键字是not
,而不是not exists
。将条件的最后一行更改为:
not DepartureConfiguration( flap == 1 )
答案 1 :(得分:0)
实际上,我在规则中发生了一些冲突。我曾经认为规则应该从drl文件的顶部到结尾运行。我通过添加规则流解决了我的问题。还要感谢那些给我建议的人。