Macchinetta Batch Framework (2.x) Development Guideline - version 2.2.0.RELEASE, 2020-6-29
> INDEX

チュートリアルの目的

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

対象読者

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

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

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

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

検証環境

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

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

OS

Microsoft Windows 10 Enterprise 2016 LTSB (64bit)

JDK

RedHat OpenJDK 8u232 Windows 64-bit/
RedHat OpenJDK 11.0.5 Windows 64-bit

IDE

Spring Tool Suite 3.9.11 released

Build Tool

Apache Maven 3.3.9

RDBMS

H2 Database 1.4.200

フレームワークの概要

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

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

チャンクモデル

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

タスクレットモデル

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

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

表 2. 処理モデルの対比表
項目 チャンクモデル タスクレットモデル

構成要素

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

Taksletのみで構成される。

トランザクション制御

チャンク単位にトランザクションが発生する。トランザクション制御は一定件数ごとにトランザクションを確定する中間コミット方式のみ。

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

処理の再実行

リランおよび、ステートレスリスタート(件数ベースリスタート)、ステートフルリスタート(処理状態を判断したリスタート)が利用できる。

リランのみ利用することを原則とする。処理状態を判断したリスタートが利用できる。

例外ハンドリング

Spring Batch提供の各種Listenerインタフェースを使うことでハンドリング処理が容易になっている。try-catchによる独自実装も可能。

タスクレット実装内にて独自にtry-catchを実装することが基本。ChunkListenerインタフェースの利用も可能。

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

チュートリアルの進め方

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

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

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

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

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

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

Macchinetta Batch Framework (2.x) Development Guideline - version 2.2.0.RELEASE, 2020-6-29