私はCSVファイルからいくつかのデータを読み込み、データベースに入れるためにSpring Batchを使用しています。 私のバッチジョブは2段階の化合物である必要があります(..名、拡張子、コンテンツ)CSVから スプリングバッチの作成方法は前のステップに依存しますか?
- チェックファイルやDBに保存(ItemReader、ItemProcessor、 ItemWriter ...)
Step 1
がエラー発生した場合Step 2
を実行してはいけません(適合していないファイルは、ファイルが存在していませんが...)
FYI、私はXMLのconfiguraなし春のバッチを使用しています!唯一の注釈:ドキュメントは、あなたが以前の状態から終了状態が一致する場合、新しい状態への移行を開始する「上」メソッドを使用することができます指定したよう
@Configuration
@EnableBatchProcessing
public class ProductionOutConfig {
@Autowired
private StepBuilderFactory steps;
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private ProductionOutTasklet productionOutTasklet;
@Autowired
private CheckFilesForProdTasklet checkFilesForProdTasklet;
@Bean
public Job productionOutJob(@Qualifier("productionOut")Step productionOutStep,
@Qualifier("checkFilesForProd") Step checkFilesForProd){
return jobBuilderFactory.get("productionOutJob").start(checkFilesForProd).next(productionOutStep).build();
}
@Bean(name="productionOut")
public Step productionOutStep(){
return steps.get("productionOut").
tasklet(productionOutTasklet)
.build();}
@Bean(name = "checkFilesForProd")
public Step checkFilesForProd(){
return steps.get("checkFilesForProd")
.tasklet(checkFilesForProdTasklet)
.build();
}
}
私はこのように変更: 'jobBuilderFactory.get( "productionOutJob") .start(checkFilesForProd) .on(ExitStatus.FAILEDを返します。 。getExitCode())エンド() .from(productionOutStep) .END() .build(); ' 私は、論理的にはそれが正しいことだと思うが、今、私は' ExitStatus.FAILED'を返す切り替える方法を見つけることができませんでした'CheckFilesForProdTasklet'の' ExitStatus.COMPLETED' –
申し訳ありません、私はあなたのタスクの順序を最初のswer。これはどうですか ? リターンjobBuilderFactory.get( "productionOutJob") .start(checkFilesForProd) .on(ExitStatus.FAILED.getExitCode())。エンド() .from(checkFilesForProd) .on(ALL_PATTERN) .TO(productionOutStep ) .build(); あなたが期待している結果ですか? – mabad
1 - ALL_PATTERNは不明ですが、結果が何であっても意味しますか? 2番目の質問は、ビジネスロジックに応じて、自分のタスクレットでExitStatus.FAILEDとExitStatus.COMPLETEDを返す方法です。 –