在mule 4中使用选择进行状态检查



Am正在尝试检查以下json数据中已更改的字段中是否存在Name字段。

输入:

{
"data": {
"schema": "1vThoUjGykaw_VgT4Qu2eg",
"payload": {
"Job_Prev_Name__c": "C##-#7-00052 | Mule UT",
"LastModifiedDate": "2020-09-03T06:52:08Z",
"ChangeEventHeader": {
"commitNumber": 10720388062229,
"commitUser": "00570000001c9fmAAA",
"sequenceNumber": 1,
"entityName": "ATI_Job__c",
"changeType": "UPDATE",
"changedFields": [
"Name",
"LastModifiedDate",
"Job_Name__c",
"Job_Prev_Name__c"
],
"changeOrigin": "com/salesforce/api/soap/49.0;client=SfdcInternalAPI/",
"transactionKey": "00042924-3d1d-fae6-7d7a-1a3fbda54122",
"commitTimestamp": 1599115928000,
"recordIds": [
"a77V00000000vI4IAI"
]
},
"Job_Name__c": "Mule UV",
"Name": "C##-#7-00052 | Mule UV"
},
"event": {
"replayId": 1020702
}
},
"channel": "/data/ATI_Job__ChangeEvent"
}

我现在使用的条件是

payload.data.payload.changedFields.Name?

但它每次都在失败。如何在选择连接器时实现此条件检查?

您的输入json似乎不是有效的json。我对它做了一些修改,以帮助您解决问题。

{
"schema": "1vThoUjGykaw_VgT4Qu2eg",
"payload": {
"Job_Prev_Name__c": "C##-#7-00052 | Mule UT",
"LastModifiedDate": "2020-09-03T06:52:08Z",
"ChangeEventHeader": {
"commitNumber": 10720388062229,
"commitUser": "00570000001c9fmAAA",
"sequenceNumber": 1,
"entityName": "ATI_Job__c",
"changeType": "UPDATE",
"changedFields": [
"Name",
"LastModifiedDate",
"Job_Name__c",
"Job_Prev_Name__c"
],
"changeOrigin": "com/salesforce/api/soap/49.0;client=SfdcInternalAPI/",
"transactionKey": "00042924-3d1d-fae6-7d7a-1a3fbda54122",
"commitTimestamp": 1599115928000,
"recordIds": [
"a77V00000000vI4IAI"
]
}
}
}

为了验证changedFields数组包含一个值"0";名称";您可以使用contains运算符。同样,由于有效载荷是一个关键字,并且您的输入由它组成,因此您需要将其封装在"中&";。

%dw 2.0
output application/json
---
payload."payload".ChangeEventHeader.changedFields contains "Name"

最新更新