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]">
我已经实现了一个 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]">