Mule Salesforce Batch 中的错误处理
Error handling in Mule Salesforce Batch
我正在尝试将一组客户从 CSV 文件加载到 Salesforce 中。我已经配置了通常的 Datamapper、Upsert SFDC Step with Batch Commit 和一个只处理失败的 Batch Step(现在是日志)。我的 OnComplete 有一个简单的记录器。我故意用错误数据创建了 CSV。我在 CSV 文件中有一个外部 ID。
我的要求是根据失败状态对失败记录进行不同的处理。如果由于错误数据而失败,我想停止处理记录。如果由于找不到父密钥而失败,我想重试。我的批处理步骤只有错误,不知道为什么会失败。不知何故,我想将 "Why it failed" 传递给我的失败处理后一步。
我确定这是一个简单的模式,但我无法弄清楚如何关联:(
在 <batch:step name="Handle Failure" accept-policy="ONLY_FAILURES"/>
中,您可以使用 #[getStepException()]
MEL 来获取异常 Map.Later 而不是您可以根据要处理的逻辑使用基于异常的选择组件。参考:http://blogs.mulesoft.com/dev/mule-dev/handle-errors-batch-job/
确保使用 <batch:job name="BatchFlow" max-failed-records="-1">
,最大失败记录设置为 -1
,这样流程就不会停止,如果任何记录发生失败,它将把它传递给 'only failure' 流程。
<batch:job name="BatchFlow" max-failed-records="-1">
<batch:process-records>
<batch:step name="Batch_Step">
<!-- Success flow... -->
</batch:step>
<batch:step name="Handle Failure" accept-policy="ONLY_FAILURES">
<logger message="Details:#[getStepException()]" level="INFO" doc:name="Logger"/>
<!-- other logic -->
</batch:step>
</batch:process-records>
</batch:job>
我正在尝试将一组客户从 CSV 文件加载到 Salesforce 中。我已经配置了通常的 Datamapper、Upsert SFDC Step with Batch Commit 和一个只处理失败的 Batch Step(现在是日志)。我的 OnComplete 有一个简单的记录器。我故意用错误数据创建了 CSV。我在 CSV 文件中有一个外部 ID。
我的要求是根据失败状态对失败记录进行不同的处理。如果由于错误数据而失败,我想停止处理记录。如果由于找不到父密钥而失败,我想重试。我的批处理步骤只有错误,不知道为什么会失败。不知何故,我想将 "Why it failed" 传递给我的失败处理后一步。
我确定这是一个简单的模式,但我无法弄清楚如何关联:(
在 <batch:step name="Handle Failure" accept-policy="ONLY_FAILURES"/>
中,您可以使用 #[getStepException()]
MEL 来获取异常 Map.Later 而不是您可以根据要处理的逻辑使用基于异常的选择组件。参考:http://blogs.mulesoft.com/dev/mule-dev/handle-errors-batch-job/
确保使用 <batch:job name="BatchFlow" max-failed-records="-1">
,最大失败记录设置为 -1
,这样流程就不会停止,如果任何记录发生失败,它将把它传递给 'only failure' 流程。
<batch:job name="BatchFlow" max-failed-records="-1">
<batch:process-records>
<batch:step name="Batch_Step">
<!-- Success flow... -->
</batch:step>
<batch:step name="Handle Failure" accept-policy="ONLY_FAILURES">
<logger message="Details:#[getStepException()]" level="INFO" doc:name="Logger"/>
<!-- other logic -->
</batch:step>
</batch:process-records>
</batch:job>