You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MuleSoft中从Salesforce查询Payload提取ID数组

正确提取Salesforce Case ID到数组的方法

你使用的vars.idList.add[payload]写法不符合DataWeave语法规范,Mule中处理数组需要用函数式的方式操作,以下是两种可行的实现方案:

方法1:直接映射生成ID数组

在Salesforce查询组件之后,用DataWeave直接从返回的Case集合中提取所有ID,一步生成目标数组:

%dw 2.0
output application/java
---
payload map ($.Id)

将这段脚本的结果赋值给vars.idList(比如通过Set Variable组件),后续查询即可直接使用这个变量。

方法2:分步初始化并添加元素

如果需要分步处理(比如循环单条Case记录),注意Mule变量是不可变的,每次添加元素都要重新赋值:

  1. 先初始化空数组:
%dw 2.0
output application/java
---
[]
  1. 循环处理每条Case时,用++运算符拼接新元素到数组:
%dw 2.0
output application/java
---
vars.idList ++ [payload.Id]

每次执行后将结果重新赋值给vars.idList,确保数组持续更新。

完整XML配置示例

<flow name="case-id-extraction-flow" doc:id="a1b2c3">
    <sfdc:query doc:name="Query All Cases" doc:id="d4e5f6" config-ref="Salesforce_Config">
        <sfdc:query>SELECT Id FROM Case</sfdc:query>
    </sfdc:query>
    <set-variable value="#[payload map ($.Id)]" doc:name="Set Case IDs Array" doc:id="g7h8i9" variableName="idList"/>
    <!-- 第二个查询组件,使用ID数组作为查询条件 -->
    <sfdc:query doc:name="Query Related Data" doc:id="j0k1l2" config-ref="Salesforce_Config">
        <sfdc:query>SELECT Id, Subject FROM CaseComment WHERE ParentId IN (:vars.idList)</sfdc:query>
    </sfdc:query>
</flow>

关键注意事项

  • DataWeave是函数式语言,不支持Java List的add()方法(该方法无返回值,无法更新Mule变量),必须用map或++这类返回新值的操作。
  • 确保Salesforce查询返回的payload是Case对象数组,否则map操作会失效。

内容的提问来源于stack exchange,提问作者Tamil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:03:29