TERASOLUNA Batch Framework for Java (5.x) Development Guideline - version 5.1.1.RELEASE, 2018-3-16
> INDEX

背景

とある量販店では会員に対してポイントカードを発行している。
会員には「ゴールド会員」「一般会員」の会員種別が存在し、会員種別に応じたサービスを提供している。
今回そのサービスの一環として、月内に商品を購入した会員のうち、 会員種別が「ゴールド会員」の場合は100ポイント、「一般会員」の場合は10ポイントを月末に加算することにした。

処理概要

会員種別に応じてポイント加算を行うアプリケーションを月次バッチ処理としてTERASOLUNA Batch 5.xを使用して実装する。

業務仕様

業務仕様を以下に示す。

  • 「月内に商品を購入した会員」は商品購入フラグで示す

    • 商品購入フラグは、"0"の場合に初期状態、"1"の場合に処理対象を表す

  • 商品購入フラグが"1"(処理対象)の場合に、会員種別に応じてポイントを加算する

    • 会員種別が"G"(ゴールド会員)の場合は100ポイント、"N"(一般会員)の場合は10ポイントを加算する

  • 商品購入フラグはポイント加算後に、"0"(初期状態)に更新する

  • ポイントの上限値は1,000,000ポイントとする

  • ポイント加算後に1,000,000ポイントを超えた場合は、1,000,000ポイントに補正する

学習コンテンツ

簡単な業務仕様のアプリケーション(ジョブ)の作成を通して、ジョブに関する様々な機能や処理方式を学習する。
なお、ジョブはタスクレットモデルとチャンクモデルをそれぞれ実装する。
各ジョブで主に学習することとそのジョブで利用する機能や処理方式を以下に示す。

チュートリアルで作成するジョブ
項番 ジョブ 学習内容

A

データベースアクセスでデータ入出力を行うジョブ

MyBatis用のItemReaderおよびItemWriterを利用したデータベースアクセスの手法を学ぶ。

B

ファイルアクセスでデータ入出力を行うジョブ

フラットファイルの入出力用のItemReaderおよびItemWriterを利用したファイルアクセスの手法を学ぶ。

C

入力データの妥当性検証を行うジョブ

Bean Validationを利用した入力チェックの手法を学ぶ。

D

ChunkListenerで例外ハンドリングを行うジョブ

リスナーとしてChunkListenerを利用した例外ハンドリングの手法を学ぶ。

E

try-catchで例外ハンドリングを行うジョブ

try-catchを利用した例外ハンドリングとスキップ、およびカスタマイズした終了コードを出力する手法を学ぶ。

F

非同期実行方式のジョブ

TERASOLUNA Batch 5.xが提供するDBポーリング機能を利用した非同期実行の手法を学ぶ。

A~Fのジョブで利用している機能や処理方式とTERASOLUNA Batch 5.x 開発ガイドラインの説明の対応表を以下に示す。

A~FのジョブとTERASOLUNA Batch 5.x 開発ガイドラインの説明の対応表
項番 機能 A B C D E F

1

ジョブの起動 > 起動方式 > 同期実行

Chunk Tasklet

Chunk Tasklet

Chunk Tasklet

Chunk Tasklet

Chunk Tasklet

2

ジョブの起動 > 起動方式 > 非同期実行(DBポーリング)

Chunk Tasklet

3

ジョブの起動 > ジョブの起動パラメータ > コマンドライン引数から与える

Chunk Tasklet

4

ジョブの起動 > リスナー

Chunk Tasklet

Chunk Tasklet

5

データの入出力 > トランザクション制御 > Spring Batchにおけるトランザクション制御

Chunk Tasklet

6

データの入出力 > トランザクション制御 > 単一データソースの場合 > トランザクション制御の実施

Chunk Tasklet

7

データの入出力 > データベースアクセス > 入力

Chunk Tasklet

8

データの入出力 > データベースアクセス > 出力

Chunk Tasklet

9

データの入出力 > ファイルアクセス > 可変長レコード > 入力

Chunk Tasklet

10

データの入出力 > ファイルアクセス > 可変長レコード > 出力

Chunk Tasklet

11

異常系への対応 > 入力チェック

Chunk Tasklet

Chunk Tasklet

12

異常系への対応 > 例外ハンドリング > ステップ単位の例外ハンドリング > ChunkListenerインターフェースによる例外ハンドリング

Chunk Tasklet

13

異常系への対応 > 例外ハンドリング > ステップ単位の例外ハンドリング > チャンクモデルにおける例外ハンドリング

Chunk

14

異常系への対応 > 例外ハンドリング > ステップ単位の例外ハンドリング > タスクレットモデルにおける例外ハンドリング

Tasklet

15

異常系への対応 > 例外ハンドリング > 処理継続可否の決定 > スキップ

Chunk Tasklet

16

ジョブの管理 > ジョブの状態管理 > ジョブの状態・実行結果の確認

Chunk Tasklet

17

ジョブの管理 > 終了コードのカスタマイズ

Chunk Tasklet

18

ジョブの管理 > ロギング

Chunk Tasklet

Chunk Tasklet

19

ジョブの管理 > メッセージ管理

Chunk Tasklet

Chunk Tasklet

TERASOLUNA Batch Framework for Java (5.x) Development Guideline - version 5.1.1.RELEASE, 2018-3-16