背景
とある量販店では会員に対してポイントカードを発行している。
会員には「ゴールド会員」「一般会員」の会員種別が存在し、会員種別に応じたサービスを提供している。
今回そのサービスの一環として、月内に商品を購入した会員のうち、 会員種別が「ゴールド会員」の場合は100ポイント、「一般会員」の場合は10ポイントを月末に加算することにした。
業務仕様
業務仕様を以下に示す。
- 
「月内に商品を購入した会員」は商品購入フラグで示す
- 
商品購入フラグは、"0"の場合に初期状態、"1"の場合に処理対象を表す
 
 - 
 - 
商品購入フラグが"1"(処理対象)の場合に、会員種別に応じてポイントを加算する
- 
会員種別が"G"(ゴールド会員)の場合は100ポイント、"N"(一般会員)の場合は10ポイントを加算する
 
 - 
 - 
商品購入フラグはポイント加算後に、"0"(初期状態)に更新する
 - 
ポイントの上限値は1,000,000ポイントとする
 - 
ポイント加算後に1,000,000ポイントを超えた場合は、1,000,000ポイントに補正する
 
学習コンテンツ
簡単な業務仕様のアプリケーション(ジョブ)の作成を通して、ジョブに関する様々な機能や処理方式を学習する。
なお、ジョブはタスクレットモデルとチャンクモデルをそれぞれ実装する。
各ジョブで主に学習することとそのジョブで利用する機能や処理方式を以下に示す。
| 項番 | ジョブ | 略称 | 学習内容 | 
|---|---|---|---|
1  | 
DB  | 
MyBatis用のItemReaderおよびItemWriterを利用したデータベースアクセスの手法を学ぶ。  | 
|
2  | 
FL  | 
フラットファイルの入出力用のItemReaderおよびItemWriterを利用したファイルアクセスの手法を学ぶ。  | 
|
3  | 
VL  | 
Bean Validationを利用した入力チェックの手法を学ぶ。  | 
|
4  | 
CL  | 
リスナーとしてChunkListenerを利用した例外ハンドリングの手法を学ぶ。  | 
|
5  | 
TC  | 
try-catchを利用した例外ハンドリングとスキップ、およびカスタマイズした終了コードを出力する手法を学ぶ。  | 
|
6  | 
AS  | 
TERASOLUNA Batch 5.xが提供するDBポーリング機能を利用した非同期実行の手法を学ぶ。  | 
チュートリアルで作成するジョブで利用している機能や処理方式とTERASOLUNA Batch 5.x 開発ガイドラインの説明の対応表を以下に示す。
なお、以下の対応表ではチャンクモデルをC、タスクレットモデルをTとしている。
| 項番 | 機能 | DB | FL | VL | CL | TC | AS | 
|---|---|---|---|---|---|---|---|
1  | 
ジョブの起動 > 起動方式   | 
C/T  | 
C/T  | 
C/T  | 
C/T  | 
C/T  | 
-  | 
2  | 
ジョブの起動 > 起動方式   | 
-  | 
-  | 
-  | 
-  | 
-  | 
C/T  | 
3  | 
ジョブの起動 > ジョブの起動パラメータ   | 
-  | 
C/T  | 
-  | 
-  | 
-  | 
-  | 
4  | 
ジョブの起動   | 
-  | 
-  | 
-  | 
C/T  | 
C/T  | 
-  | 
5  | 
データの入出力 > トランザクション制御   | 
C/T  | 
-  | 
-  | 
-  | 
-  | 
-  | 
6  | 
データの入出力 > トランザクション制御 > 単一データソースの場合   | 
C/T  | 
-  | 
-  | 
-  | 
-  | 
-  | 
7  | 
データの入出力 > データベースアクセス   | 
C/T  | 
-  | 
-  | 
-  | 
-  | 
-  | 
8  | 
データの入出力 > データベースアクセス   | 
C/T  | 
-  | 
-  | 
-  | 
-  | 
-  | 
9  | 
データの入出力 > ファイルアクセス > 可変長レコード   | 
-  | 
C/T  | 
-  | 
-  | 
-  | 
-  | 
10  | 
データの入出力 > ファイルアクセス > 可変長レコード   | 
-  | 
C/T  | 
-  | 
-  | 
-  | 
-  | 
11  | 
異常系への対応   | 
-  | 
-  | 
C/T  | 
-  | 
C/T  | 
-  | 
12  | 
異常系への対応 > 例外ハンドリング > ステップ単位の例外ハンドリング   | 
-  | 
-  | 
-  | 
C/T  | 
-  | 
-  | 
13  | 
異常系への対応 > 例外ハンドリング > ステップ単位の例外ハンドリング   | 
-  | 
-  | 
-  | 
-  | 
C  | 
-  | 
14  | 
異常系への対応 > 例外ハンドリング > ステップ単位の例外ハンドリング   | 
-  | 
-  | 
-  | 
-  | 
T  | 
-  | 
15  | 
異常系への対応 > 例外ハンドリング > 処理継続可否の決定   | 
-  | 
-  | 
-  | 
-  | 
C/T  | 
-  | 
16  | 
ジョブの管理   | 
-  | 
-  | 
-  | 
-  | 
-  | 
C/T  | 
17  | 
ジョブの管理   | 
-  | 
-  | 
-  | 
-  | 
C/T  | 
-  | 
18  | 
ジョブの管理   | 
-  | 
-  | 
-  | 
C/T  | 
C/T  | 
-  | 
19  | 
ジョブの管理  | 
-  | 
-  | 
-  | 
C/T  | 
C/T  | 
-  |