【问题标题】:Condition check using choice in mule 4在 mule 4 中使用选择进行条件检查
【发布时间】:2020-09-06 00:48:09
【问题描述】:

我正在尝试检查名称字段是否存在于以下 json 数据的更改字段中。

输入:

{
    "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?

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

【问题讨论】:

    标签: dataweave choice mule4


    【解决方案1】:

    您的输入 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 数组是否包含值“Name”,您可以使用 contains 运算符。此外,由于 payload 是一个关键字,并且您的输入包含您需要将其包装在 "" 中的内容。

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

    【讨论】:

    • 其实payload根对象是数据,所以应该是payload.data.payload...而不是payload."payload"(路径的其余部分好像是对的)。您能否对其进行调整,以便您的答案被认为是正确的?谢谢!
    • 最初发布的 json sn-p 不是有效的 Json,因此我对其进行了一些修改以帮助解答。
    • 实际上看起来只是缺少最初的{。我提交了对操作的修改。
    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多