【问题标题】:Error handling in Mule Salesforce BatchMule Salesforce Batch 中的错误处理
【发布时间】:2016-10-20 23:44:10
【问题描述】:

我正在尝试将一组客户从 CSV 文件加载到 Salesforce。我已经配置了通常的 Datamapper、Upsert SFDC Step with Batch Commit 和一个只处理失败的 Batch Step(现在是日志)。我的 OnComplete 有一个简单的 Logger。我故意创建了带有错误数据的 CSV。我在 CSV 中有一个外部 ID。

我的要求是根据失败状态以不同方式处理失败记录。如果由于错误数据而失败,我想停止处理记录。如果由于找不到父密钥而失败,我想重试。我的批处理步骤只有错误,不知道为什么会失败。不知何故,我想将“为什么失败”传递给我的失败处理步骤。

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

【问题讨论】:

    标签: mule batch-processing


    【解决方案1】:

    <batch:step name="Handle Failure" accept-policy="ONLY_FAILURES"/> 中,您可以使用#[getStepException()] MEL 来获取异常 Map。之后,您可以根据要处理逻辑的异常使用选择组件。参考: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>
    

    【讨论】:

    • 正是我想要的。谢谢!
    • 太棒了!!。如果对您有用,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2016-08-13
    • 1970-01-01
    相关资源
    最近更新 更多