Drools-空验证失败

Drools-空验证失败,drools,Drools,我试图通过Talend在Drools中执行以下规则 rule "rule1" dialect "mvel" no-loop true when trans : row( BUS_AREA_CD == null ) then trans.ACTUAL_PRODUCT_LINE_CODE="06" end rule "rule2" dialect "mvel" no-loop true

我试图通过Talend在Drools中执行以下规则

    rule "rule1"
    dialect "mvel"
    no-loop true
    when
        trans : row( BUS_AREA_CD == null )
    then

                trans.ACTUAL_PRODUCT_LINE_CODE="06" 

end
rule "rule2"
    dialect "mvel"
    no-loop true
    when
        trans : row( BUS_AREA_CD != null)
    then

                trans.ACTUAL_PRODUCT_LINE_CODE="96" 

end
下面是我创建的数据对象(行)

下面是我已经执行的测试场景

当我使用BUS_AREA_CD=null执行测试场景时,它返回的是空白值,而不是“96”


有人能帮我解决这个问题吗?

您附加的测试场景的问题是它假定null为字符串值。如果要将属性BUS_AREA_CD等于null的行实例装箱,则给定部分应如下所示:

Insert 'row' [test]

返回的“空白值”在哪里?您对此有何看法?类
是如何定义的?你插入了什么事实事实上,答案是“不”。@laune我已经更新了所需的信息。你知道“规则1”真的启动了吗?“1毫秒内触发的4条规则”是什么?他们有没有可能撤销更改?--在规则1的结果中添加一个“throw”语句,以在没有其他方法的情况下演示其触发。-使用modify语句更新Drools的WM。rule1根本没有触发。我已经添加了规则2,并添加了测试场景的截图。请看一看,“行”类的代码是什么?将System.out.println(trans.BUS\u AREA\u CD.length())之类的内容添加到第二条规则中,看看会发生什么。阅读创建“数据对象”行的工具的文档;可能它会将初始化字符串的代码添加到空字符串中。@Srinu Katta我认为,如果下面没有BUS_AREA_CD的条目,则表示没有设置字段,既没有设置“null”(长度为4的字符串),也没有设置“”(长度为0的字符串)。因此,该字段将保持空(没有任何字符串)。该工具的文档应该详细描述您的选项。@laune I将把null实现为长度为零的字符串(BUS_AREA_CD.length()==0)。对于空白验证,我计划使用(总线\u区域\u CD=“”)