Mule转换消息过滤问题

Mule转换消息过滤问题,mule,Mule,使用mulesoft集成系统之间的供应商信息变更。供应商可以有一对多个站点。某些供应商标准以及某些供应商现场标准必须满足一个特定系统的要求,以关注更新。我有一个转换消息,根据对标准的评估将标志设置为“True”或“False”,这反过来告诉我们是否将数据发送到特定系统。这是我的dataweave,用于设置标志 %dw 1.0 %output application/java //Function to determine if site is future site %function is

使用mulesoft集成系统之间的供应商信息变更。供应商可以有一对多个站点。某些供应商标准以及某些供应商现场标准必须满足一个特定系统的要求,以关注更新。我有一个转换消息,根据对标准的评估将标志设置为“True”或“False”,这反过来告诉我们是否将数据发送到特定系统。这是我的dataweave,用于设置标志

%dw 1.0
%output application/java

//Function to determine if site is future site 
%function isFutureSite(siteCode) 'Y' when siteCode contains 'FUTURE' otherwise 'N'

//Function to determine if vendor is a dummy vendor
%function isDummyVendor(vendorName) 'Y' when vendorName contains 'Dummy' otherwise 'N'
---
//Set processFlag to True or False to determine whether or not to send updates to WMS based on vendor and site attributes
using (crit=payload.MMAP_SUPPLIER_DETAILS_OBJ_TYPE) { 
(crit.SITES filter ($.ORG_ID == '116' and $.PURCHASING_SITE_FLAG == 'Y' and $.INACTIVE_DATE == ''
                     and isFutureSite($.VENDOR_SITE_CODE) == 'N' and $.VENDOR_SITE_CODE[0 to 2] == 'P&A'
                    ) map {
    Process: 'True'} 
 when crit.SUPPLIER.END_DATE_ACTIVE == '' 
  and isDummyVendor(crit.SUPPLIER.VENDOR_NAME) == 'N'
  and (crit.SUPPLIER.VENDOR_TYPE_LOOKUP_CODE == 'PRODUCTION' or crit.SUPPLIER.VENDOR_TYPE_LOOKUP_CODE == 'COMMON')
 otherwise Process: 'False')}
首先,我根据crit.sites筛选器中指定的5个标准筛选供应商站点。对于满足所有这5个标准的供应商,始终有0或1个站点。然后,我根据供应商标准(基于供应商级别数据的3个条件)进行过滤。 当。。。 1.)满足所有标准(3个供应商条件为真,且供应商的一个站点满足所有5个站点标准。然后,我为流程标志{Process=true}获取一个真值,或2.)供应商的一个站点满足所有5个站点标准,但并非所有3个供应商条件都满足。然后,我得到进程标志{Process=false}的假值

我遇到的问题是,有一个供应商的0个站点满足所有5个站点标准(crit.sites过滤器不返回任何站点)。然后,我没有得到任何标志{}

在这种情况下,如何将值(False)设置为标志


非常感谢您的帮助。

我还可以通过将筛选器添加到映射中的条件(在最后一行上方,否则…)来解决此问题,并检查它是否返回空数组,如下图所示。。。和(crit.SITES过滤器($.ORG\u ID='116'和$.PURCHASING\u FLAG='Y'和$.INACTIVE\u DATE=''和isFutureSite($.VENDOR\u SITE\u CODE)='N'和$.VENDOR\u SITE\u CODE[0到2]='P&A'))!=[]否则处理:'False')}实际上不是。。。上述决议没有解决这一问题。。。所有标志都设置为False。很抱歉在这里来回走动,但第一条评论确实解决了问题。我忘了返回并更改我的“using”语句,以使用实际传入的flowVar,而不是使用有效负载,我切换了有效负载以针对一些样本数据进行测试。