2016-09-20 19 views
0

複数のステップを持つ1つのメインスプリングバッチジョブがあります。そのジョブが何らかの理由で失敗した場合は、別のジョブを呼び出してデータベース内のテーブルを失敗結果で更新する必要があります。元のジョブが失敗した場合、別のスプリングバッチジョブを実行します。

これを行うにはどうすればバッチフローを設定できますか?

は、私はそうのようなJobExecutionを作成したが、私は、if/else文のいずれかから新規ジョブを呼び出す方法がわからない:

@Bean 
    public JobExecutionListener dataListener() { 
     JobCompletionNotificationListener dataNotificationListener = new JobCompletionNotificationListener(new JdbcTemplate(dataDataSource)); 
     dataNotificationListener.afterJob(jobExecution()); 
     return dataNotificationListener; 
    } 


@Bean 
public JobExecution jobExecution() { 

     JobExecution jobExecution = new JobExecution(jobExecution()); 

     if (jobExecution.getStatus() == BatchStatus.COMPLETED) { 

      // If job completed successfully, update current job log to success 


     } else if (jobExecution.getStatus() == BatchStatus.FAILED) { 

      // If job failed, update current job log to failure 

     } 

     return jobExecution; 
    } 
+0

ItemWriterが例外をスローし、終了コードでバッチ処理を終了したときに使用できます。終了コードが到着したら、あなたのものでデータベースにデータを保存します。 – Rajesh

+1

リスナーafterJob()を使用します。 afterJobメソッド()でジョブの状態を確認してロジックを実行できます。 –

答えて

1

あなたはあなたの仕事にリスナークラスを追加する必要がありますJobExecutionListenerインターフェイスを実装し、条件jobExecution.getStatus() == BatchStatus.FAILEDを確認した後、public void afterJob(JobExecution jobExecution)メソッドでロジックを呼び出します。

関連する問題