当前位置: 首页 > 知识库问答 >
问题:

如何在Drools 5中测试属性是否为Null

羊舌成周
2023-03-14

口水5,方言mvel

我希望此规则仅在存在任何MappingFile对象时匹配,并且仅当带有原因码的BLuReport对象为NULL时匹配

我怎样才能写出那个比较表达式。。。我尝试了几件事都没有成功:

rule "Mapping.Control Group to BlueReport"
    when 
        $internalAccount : MappingFile( $mappingControlGroup : controlGroup )
        $blueReport : BlueReport( **$Reason is null**  : Reason )
    then
        System.out.println("Updating BlueReport.controlGroup from MappingFile.controlGroup" + " Rule=" + drools.getRule().getName());
        modify ( $blueReport ) {
            setControl_group( $mappingControlGroup ),
            setReason( "Found mapping in the Internal Account object with account_id=" + $internalAccount.getExternalKey() );
        }
        retract ( $blueReport )
    end

此外,我不得不添加retract(BR),因为更新后我一直得到一个无限循环。。。我的更新正确吗?!

共有1个答案

利海阳
2023-03-14

如果BlueReport字段确实被命名为Reason(与Java命名约定相反),那么您只需编写:

rule "Mapping.Control Group to BlueReport"
when 
    $internalAccount : MappingFile( $mappingControlGroup : controlGroup )
    $blueReport : BlueReport( Reason == null ) # or reason?
then
    System.out.println("Updating BlueReport.controlGroup from MappingFile.controlGroup" + " Rule=" + drools.getRule().getName());
    modify ( $blueReport ) {
        setControl_group( $mappingControlGroup ),
        setReason( "Found mapping in the Internal Account object with account_id=" + $internalAccount.getExternalKey() );
    }
    retract ( $blueReport );
end

也许您还应该有一个约束control\u组!=$映射控制组

使用这些约束中的任何一个都可以避免循环。

 类似资料:
  • 问题内容: 我想获取文档中的所有标签,然后根据某些属性的存在(或不存在)来处理每个标签。 例如,对于每个标签,如果属性存在,则执行一些操作;否则,如果存在该属性,则执行其他操作。 这是我目前正在做的事情: 但是这样我过滤了所有带有属性的标签…但是我丢失了其他标签(没有属性的标签)。 问题答案: 如果我理解得很好,您只需要所有脚本标记,然后检查其中的某些属性?

  • 我正在处理一个Spring 3项目,并且总是检查@ModelAt0016是否为空,如果是,我将用户重定向到错误页面。 我想知道的是这张支票是否必要。该命令是会话属性,必要时使用控制器的“填充”方法创建。因此,只要会话处于活动状态,该命令就永远不能为null。 我不知道会话过期时会发生什么。控制器是否再次创建模型属性?如果是这样,那么无论会话的状态如何,命令对象永远不能为null。 谢谢你的帮助。

  • 问题内容: 我只是不知道如何确定传递给脚本的参数是否为数字。 我要做的就是这样: 有什么帮助吗? 问题答案: 一种方法是使用正则表达式,如下所示: 如果该值不一定是整数,请考虑适当修改正则表达式;例如: …或使用带符号处理数字:

  • 问题内容: 我收到的JSON对象如下所示: 我要测试的是的存在。如果返回JSON对象,我很高兴。如果不是,它将返回为。如何测试这种情况?我尝试了几件事都无济于事。 到目前为止,这是我尝试过的: 我希望这些行之一可以打印“ No dps key”,因为,但无论出于什么原因,事实并非如此。我正在使用。jar文件是。 问题答案: 是我会做的。

  • 问题内容: 我最初尝试过此方法,但是未为float64定义%运算符。 问题答案: 假设您的数字适合,则可以将浮点值与转换后的整数值进行比较,以查看它们是否相同: 否则,您可以使用此处详述的功能,例如: 那应该在整个领域内工作。

  • 问题内容: 我有一个简单的AJAX调用,服务器将返回包含有用数据的JSON字符串或PHP函数产生的错误消息字符串。如何测试此数据是JSON字符串还是错误消息。 最好使用一个称为的函数,就像您可以使用该函数来测试某个东西是否为数组一样。 这就是我要的: 问题答案: 使用JSON.parse