TERASOLUNA Batch Framework for Java (5.x) Development Guideline - version 5.0.1.RELEASE, 2017-9-27
> INDEX

チュートリアルの目的

本チュートリアルは、TERASOLUNA Batch 5.x 開発ガイドラインに記載されている内容について、実際にアプリケーションの開発を体験することで、 TERASOLUNA Batch 5.xの基本的な知識を習得することを目的としている。

対象読者

本チュートリアルはソフトウェア開発経験のあるアーキテクトやプログラマ向けに書かれており、 以下の知識があることを前提としている。

  • Spring FrameworkのDIやAOPに関する基礎的な知識がある

  • SQLに関する基礎的な知識がある

  • Javaを主体としたアプリケーションの開発経験がある

検証環境

本チュートリアルの検証を行った環境条件を以下に示す。

環境条件
ソフトウェア分類 製品名

OS

Windows 7 Professional SP1 (64bit)

JDK

openjdk-1.8.0.131.x86_64

IDE

Spring Tool Suite 3.8.2 released

Build Tool

Apache Maven 3.3.9

RDBMS

H2 Database 1.4.193

フレームワークの概要

ここでは、フレームワークの概要として処理モデルの概要およびアーキテクチャの違いについて説明する。
Spring Batchについて、詳細はTERASOLUNA Batch 5.x 開発ガイドラインのSpring Batchのアーキテクチャを参照のこと。

TERASOLUNA Batch 5.xが提供する処理モデルには、チャンクモデルとタスクレットモデルがある。
それぞれの特徴について以下に示す。

チャンクモデル

一定件数のデータごとにまとめて入力/加工/出力する方式。このデータのまとまりをチャンクと呼ぶ。 データの入力/加工/出力といった処理の流れを定型化し、一部を実装するだけでジョブが実装できる。 大量データを効率よく処理する場合に用いる。
詳細はチャンクモデルを参照のこと。

タスクレットモデル

自由に処理を記述する方式。SQLを1回発行するだけ、コマンドを発行するだけ、といった簡素なケースや 複数のデータベースやファイルにアクセスしながら処理するような複雑で定型化しにくい場合に用いる。
詳細はタスクレットモデルを参照のこと。

処理モデルについて、構成要素や機能的な差異を下表に示す。

処理モデルの機能差
機能 チャンクモデル タスクレットモデル

構成要素

ItemReader、ItemProcessor、ItemWriter、ChunkOrientedTaskletで構成される。

Taksletのみで構成される。

トランザクション

チャンク単位にトランザクションが発生する。トランザクション制御は中間コミットのみ。

1トランザクションで処理する。トランザクション制御は、一括コミット方式と中間コミット方式のいずれかを利用可能。 前者はSpring Batchが持つトランザクション制御の仕組みを利用するが、後者はユーザにてトランザクションを直接操作する。

推奨する再処理方式

リラン、リスタートを利用できる。

リランのみ利用することを原則とする。

例外ハンドリング

リスナーを使うことでハンドリング処理が容易になっている。try-catchによる独自実装も可能。

try-catchによる独自実装が必要。

本チュートリアルでは、基本的な機能を利用したアプリケーションについてチャンクモデル、タスクレットモデルそれぞれの実装方法を説明している。 チャンクモデル、タスクレットモデルのアーキテクチャの違いによって実装方法も異なってくるため、 ここでそれぞれの特徴をしっかり理解してから進めることを推奨する。

チュートリアルの進め方

本チュートリアルで作成するアプリケーション(ジョブ)においては、 作成済みのジョブに実装を追加して作成するジョブがあるため、作成する順序を考慮しなければならない。

本チュートリアルの読み進め方を作成するジョブの順序関係も含めて図を以下に示す。

How to Proceed with the Tutorial
チュートリアルの進め方
非同期実行方式のジョブの実施タイミング

非同期実行方式のジョブは、本チュートリアルの進め方の順序では最後のジョブとしているが、 チャンクモデルまたはタスクレットモデルで1つでもジョブを作成済みであれば、非同期実行方式のジョブを実施してもよい。

ファイルアクセスでデータ入出力を行うジョブへの追加実装について

ファイルアクセスでデータ入出力を行うジョブの説明以外は、 データベースアクセスでデータ入出力を行うジョブを元に実装を追加したり、実行例を表示させている。 ファイルアクセスでデータ入出力を行うジョブを元に実装を追加する場合は、読み替える必要があるため留意すること。

TERASOLUNA Batch Framework for Java (5.x) Development Guideline - version 5.0.1.RELEASE, 2017-9-27