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