Mule Salesforce Batch中的错误处理

时间:2016-06-19 18:13:39

标签: mule batch-processing

我正在尝试从CSV文件中将一组帐户加载到Salesforce中。我已经配置了常用的Datamapper,Upsert SFDC Step with Batch Commit和Batch Step,它只处理故障(现在是日志)。我的OnComplete有一个简单的记录器。我故意用坏数据创建了CSV。我在CSV中有一个外部ID。

我的要求是根据失败状态以不同方式处理失败的记录。如果由于Bad Data导致失败,我想停止处理记录。如果由于未找到Parent Key而失败,我想重试。我的批处理步骤只处理错误,不知道它失败的原因。不知怎的,我想把“为什么失败”传递给我处理bacth步骤的失败。

我确定这是一个简单的模式,但我无法弄清楚如何关联:(

1 个答案:

答案 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>