我正在尝试从CSV文件中将一组帐户加载到Salesforce中。我已经配置了常用的Datamapper,Upsert SFDC Step with Batch Commit和Batch Step,它只处理故障(现在是日志)。我的OnComplete有一个简单的记录器。我故意用坏数据创建了CSV。我在CSV中有一个外部ID。
我的要求是根据失败状态以不同方式处理失败的记录。如果由于Bad Data导致失败,我想停止处理记录。如果由于未找到Parent Key而失败,我想重试。我的批处理步骤只处理错误,不知道它失败的原因。不知怎的,我想把“为什么失败”传递给我处理bacth步骤的失败。
我确定这是一个简单的模式,但我无法弄清楚如何关联:(
答案 0 :(得分:2)
在<batch:step name="Handle Failure" accept-policy="ONLY_FAILURES"/>
中,您可以使用#[getStepException()]
MEL来获取异常Map.Later,而不是根据您想要处理逻辑的异常使用choice组件。参阅:http://blogs.mulesoft.com/dev/mule-dev/handle-errors-batch-job/
确保使用<batch:job name="BatchFlow" max-failed-records="-1">
,最大失败记录设置为-1
,以便不会停止流量,如果任何记录中发生故障,它会将其传递给“只有失败”。流动。
<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>