Mulesoft - 根据 statusCode 强制异常

Mulesoft - Force exception according to statusCode

我已经实现了一个 Mule 流,它读取 CSV 文件并使用批处理将记录插入 Salesforce。

为了管理错误,我创建了一个只接受失败记录的步骤。

我试过修改原始值使其失败并证明它可以正常工作。

Salesforce 响应消息是一个 JSON,其中包含一个名为 statusCode 的字段,其值如下:INVALID_TYPE_ON_FIELD_IN_RECORD

但是Mule不会将其识别为错误并且不会失败,因此它永远不会进入失败记录的步骤。

我该如何修改它?我应该在 Salesforce 中更改它还是在错误映射中添加 statusCode 案例?

在 Mule 4 中,您可以使用 raiser-error 强制出错。然后你只需要定义什么表达式来触发你的表达式:

#[sizeOf((payload.errors default [])) > 0]

#[payload.errors[0].statusCode=='INVALID_TYPE_ON_FIELD_IN_RECORD']

等等

使用选择路由器的示例:

<choice doc:name="successful?">
            <when expression="#[sizeOf((payload.errors default [])) > 0]">
                <raise-error type="APP:INVALID_TYPE_ON_FIELD_IN_RECORD" />
            </when>
        </choice>

控制错误流的替代方法是在批处理步骤上使用相同的表达式设置 acceptExpression:

<batch:step name="step1" acceptExpression="#[sizeOf((payload.errors default [])) > 0]">