2016-06-19 8 views
0

CSVファイルからSalesforceに一連のアカウントをロードしようとしています。私は通常のDatamapper、バッチコミットを伴うUpsert SFDCステップ、失敗のみを処理するバッチステップ(今のログ)を設定しました。私のOnCompleteには単純なLoggerがあります。私は意図的に悪いデータでCSVを作成しました。私はCSVに外部IDを持っています。Mule Salesforce Batchのエラー処理

私の要件は、失敗したレコードを、失敗ステータスに基づいて別々に処理することです。不良データのために失敗した場合は、レコードの処理を停止します。親キーが見つからないために失敗した場合は、再試行します。処理するバッチエラーのみが失敗した理由はわかりません。どういうわけか、私は "なぜ失敗したのか"を私の失敗処理バクトステップに引き渡したいと思います。

私は、これは単純なパターンであると確信しているが、相関させる方法を見つけ出すことができません:(

答えて

1

<batch:step name="Handle Failure" accept-policy="ONLY_FAILURES"/>では、あなたがベースの選択コンポーネントを使用することができますよりも、あなたは例外Map.Laterを取得するために#[getStepException()] MELを使用することができます例外にあなたがロジックを処理したい参照してください。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> 
+0

まさに私が望むもの。ありがとう! – Jeet

+0

素晴らしい!それがあなたに働くなら、答えを受け入れてください。 – star