Sprin Batchの基本構成
job ・・・ジョブの実行単位。コマンドライン、javaのコード上から呼び出される単位。
┣step ・・・ジョブ内の処理の単位。このステップ毎に条件分岐・リスタート・並行処理の制御が可能。
┃┃ 1つのジョブ内に複数指定可能。
┃┗tasklet・・・・論理的な実行単位であるstepに紐づく物理的な処理単位。
┃ ┃ readerなどの下位のbeanをhandlingする。
┃ ┃ chunkの処理を行うChunkOrientedTasklet、コマンドライン入力を行うSystemCommandTaskletなど。
┃ ┃ stepを実現するためにフレームワークが規定しているhandler群のイメージ??
┃ ┗chunk ・・・・データ※(以下item)のコミット単位。
┃ ┣reader・・・itemの入力を行うクラスを定義する。
┃ ┣prosessor・・・読み込んだitemへの編集処理を行うクラスを定義する。
┃ ┣writer・・・読み込んだitemの出力処理を行うクラスを定義する。
┃ ┗skippable ・・・ジョブ内の各要素にて例外が発生しても処理をスキップし、
┃ 次のitemの処理を続ける例外を定義する。
┗listeners ・・・ジョブ内の各要素(step~skippable)の処理前後に行う処理を定義する。
※Spring Batch では入出力データの事を"item"として記述しているため本稿もそれにならう。
上記をxmlで記述した場合
01<!-- bean定義 -->
02<job id="Batch1" xmlns="http://www.springframework.org/schema/batch">
03 <step id="step1" parent="faultTolerantStep">
04 <tasklet transaction-manager="transactionManager">
05 <chunk reader="batch1ItemReader" processor="batch1Processor"
06 writer="batch1Writer" commit-interval="1" skip-limit="100">
07 <skippable-exception-classes>
08 <include class="com.example.batch.exception.Batch1SkipException" />
09 <include class="org.springframework.dao.DataIntegrityViolationException" />
10 </skippable-exception-classes>
11 <listeners>
12 <listener ref="batch1ItemListener" />
13 </listeners>
14 </chunk>
15 </tasklet>
16 </step>
17 <listeners>
18 <listener ref="batch1JobExecutionListener" />
19 </listeners>
20</job>
21<!-- 以下のbean定義は省略 -->
02行目,20行目:jobを定義。id属性の定義内容がJobidとなり、コマンドラインなどからの呼び出し時に指定される。
03行目,16行目:stepを定義。parent属性は基底クラスのようなもの。
例ではbean:faultTolerantStepに指定したproperty情報を引き継いでいる。
04行目,15行目:taskletを定義。transaction-manager属性は詳細確認中。
05~06,14行目:chunkを定義。reader,processor,writerのbeanを指定。commit-intervalなどコミットに関する情報を定義。
07行目,10行目:skippableを定義。処理中指定されたExceptionが発生したitemをスキップし、後続のitemの処理を行う。
11行目-13行目:step内で起動するlistenersを定義。afterRead,onReadErrorなど各要素の前後、例外発生時に実行される処理を定義できる。
17行目-19行目:job内で起動するlistenersを定義。ジョブの実行前後に実行される処理を定義できる。
最終更新:2014年05月02日 14:08