jbatch
jBatch を扱う必要が出たので、試した内容のメモ書き
jBatch については以下のサイトを読めば概要は理解できるかと
待望のバッチ処理機能がJava EE 7で標準化。「jBatch」で何ができるのか、どう使うのか? - builder by ZDNet Japan
更に詳細な内容をつかむならこっち、上記の記事の上妻氏のスライドっぽい
(割りと古く、異なる内容もあるので参考程度としたほうがよい)
で、スライド中にも出てくるいくつかの機能について動作を実施してみた
今回確認したのは以下の5つ
- batchlet
- chunk
- decider
- flow
- listener
ジョブ XML の記載方法については以下のサイトを参考にさせて頂いた
The Java EE 7 TutorialのjBatchの章をテキトーに訳した - kagamihogeの日記
動作の検証は JAX-RS で実行を行うように
起動クラスのリソースクラスはこんなかんじ
また jBatch で必要となる、ジョブ XML の先頭、名前空間なんかには次のように記載を加えると、XML の要素候補などが出せるようになるので楽になる
(schemaLocation とかの部分)
batchlet
実行結果は以下
ジョブ XML の Step 定義で指定されたクラスが動作しただけ
至ってシンプルなので、特に説明することもなし
chunk
実行結果は以下
chunk も特に説明することはなし
先頭のリンクのサイトで説明されている通り
decider
実行結果は以下
decider 分岐は、XML 定義に記載したように、「to2」が返却されたときの step2(MyBatchlet2)が動作している。
(step3 の MyBatchlet3 は動作していない)
今回は next 要素しか試していないが、「end / fail / stop」なんかも同じようにすれば、指定する内容に沿った動作を行うことができる。
flow
実行結果は以下
flow は chunk と batchlet の組み合わせ。単に連続して動いているので、何が違うのかわかりにくいが、flow はグループ化なので、flow 内で定義する step から外の step を指定して動作させることはできない。
(flowStep1-1 の次に step2 を動作といったことはできない。複数の step を定義するが、そのうちの幾つかは連続してやらなければならない、といった場合に使用するものだと思う)
listener
実行結果は以下
listener も特に難しい内容はない
が、リスナークラスの実行順序は開始、終了時ともに、XMLで記述した上からとなっている。
(個人的には終了時の実行順序は、開始の逆ってのが使いやすいように思えるんだが)
次回は並列処理なんかを説明したい