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

Mule 3与Mule 4调用Salesforce复合请求的响应差异原因咨询

Mule 3到Mule 4 Salesforce复合请求响应差异原因解析

核心差异根源:allOrNone参数配置不一致

Mule 3的行为逻辑

你的Mule 3配置中显式设置了allOrNone="true":

<sfdc-composite:execute-composite-request config-ref="SFC" allOrNone="true" doc:name="Retrieve Composite"/>

这个参数直接映射到Salesforce复合API的同名参数,作用是将整个复合请求标记为原子事务:

  • 只要复合请求中的任意一个操作失败,所有已执行的操作都会被回滚
  • 所有操作条目都会返回PROCESSING_HALTED错误(HTTP 400状态码)
    这就是Mule 3中两个操作均返回400的原因——PATCH操作失败触发了整个事务的回滚,GET操作的结果被撤销并标记为错误。

Mule 4的行为逻辑

你的Mule 4配置中没有设置allOrNone参数:

<salesforce-composite:execute-composite-request doc:name="composite request" config-ref="Composite_Config"/>

Mule 4的Salesforce连接器中,allOrNone的默认值为false(与Mule 3的配置行为不一致)。当该参数为false时:

  • Salesforce不会将复合请求视为原子事务,成功完成的操作结果会被保留
  • 只有失败的操作会返回错误
    你看到的GET操作返回200,是因为该查询本身执行成功(返回空结果集),而PATCH操作因引用失败返回400,完全符合allOrNone=false的预期行为。

修复建议

要让Mule 4的行为与Mule 3完全一致,只需在Mule 4的复合请求组件中添加allOrNone="true"配置:

<salesforce-composite:execute-composite-request doc:name="composite request" config-ref="Composite_Config" allOrNone="true"/>

同时注意修正你提供的Mule 4请求载荷中的JSON语法错误,确保PATCH条目格式正确:

{
  "compositeRequest": [
    {
      "method": "GET",
      "url": "/services/data/v43.0/query/?q=select xyz ...",
      "referenceId": "studentExtId"
    },
    {
      "method": "PATCH",
      "url": "/services/data/v43.0/sobjects/Student/@{studentId}",
      "body": {"name": "ABC"},
      "referenceId": "studentUpdate"
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:28:11