如何在drools-mvel方言中执行空或空检查?

如何在drools-mvel方言中执行空或空检查?,drools,rules,business-rules,mvel,Drools,Rules,Business Rules,Mvel,当configList为null时,AND逻辑不应继续,但我得到了这个错误-数组索引超出了范围 规则如下: rule "testRule" when config : Config( configList != null && !configList.empty && configList[0].attribute != null ) then // logic end 由于Drools执行规则条件的方式,短路逻辑运算符无

当configList为null时,AND逻辑不应继续,但我得到了这个错误-数组索引超出了范围

规则如下:

rule "testRule"
   when
       config : Config( configList != null && !configList.empty && configList[0].attribute != null )
   then
       // logic
end

由于Drools执行规则条件的方式,短路逻辑运算符无法得到保证。在某些情况下,它们起作用,但在另一些情况下,它们不起作用

作为一种解决方法,您可以将现有的单个模式拆分为两个:

rule "testRule"
when
  config : Config( $configList: configList != null, configList.empty == false)
  Attribute() from $configList.get(0)
then
  // logic
end
我假设$configList是属性对象的列表


希望有帮助,

在回答您的问题之前,您是否意识到检查空值与检查空值不同?您好,我确实知道区别,但我发布了错误的代码,请检查编辑后的代码,因为它仍然会给出相同的错误。