8.3.4. Nablarchバッチプロジェクトの初期セットアップ

Nablarchバッチプロジェクトの初期セットアップでは以下を行う。

  • Nablarchバッチプロジェクトの生成
  • Nablarchバッチプロジェクトの動作確認

8.3.4.1. 生成するプロジェクトの概要

本手順で生成するプロジェクトの概要は以下の通りである。

項目 説明
プロジェクト種別 Mavenプロジェクト
プロジェクト構成 単一プロジェクト構成
使用DB H2 Databaes Engine(アプリケーションに組み込み)
生成するプロジェクトに含まれるもの

生成されたプロジェクトには以下が含まれる。

  • Nablarchバッチアプリケーション用の基本的な設定
  • 疎通確認用都度起動バッチアプリケーション
  • 疎通確認用のテーブルをキューとして使ったメッセージング
  • メール送信バッチの設定 [1]
  • Mavenと連動して動作するツールの初期設定( nablarch-archetype-parent(親プロジェクト) を参照することによって取り込んでいる)。
[1]メール送信バッチは、常駐バッチ として動作し、SMTPサーバに対してメール送信を行うものである。 コンポーネント設定ファイルのサンプルは src/main/resources/mail-sender-boot.xml に存在する。 メール送信バッチは初期環境構築時には必要ないが、必要になったタイミングで メール送信 の解説を読んだ上で使用する。

他のプロジェクトとの関係、及びディレクトリ構成は、 Mavenアーキタイプの構成 を参照。

8.3.4.2. ブランクプロジェクト作成

Nablarchが提供するアーキタイプを使用してブランクプロジェクトを生成する。

8.3.4.2.1. mvnコマンドの実行

カレントディレクトリを、ブランクプロジェクトを作成したいディレクトリ(任意のディレクトリで可)に変更し、以下のファイルを配置する。

バッチファイル

配置後、引数に必要なパラメータを指定しbatファイルを実行する。

generateNablarchBatchProject.bat 5u18 <<groupId>> <<artifactId>> <<version>> <<package(任意)>>

上記コマンドに設定するパラメータは以下の通り。 なお、nablarchのバージョンを変更したい場合には 5u18 を変更すること。 カレントディレクトリを、ブランクプロジェクトを作成したいディレクトリ(任意のディレクトリで可)に変更する。

入力項目 説明 設定例
groupId グループID(通常はパッケージ名を入力) com.example
artifactId アーティファクトID myapp-batch
version バージョン番号 0.1.0
package パッケージ(通常はグループIDと同じ) com.example

重要

項目groupIdおよびpackageは、Javaのパッケージ名にマッピングされる。 よって、これらの入力値には、英小文字、数字、ドットを使用し、ハイフンは使用しないこと。

コマンドが正常終了した場合、ブランクプロジェクトがカレントディレクトリ配下に作成される。

8.3.4.3. 疎通確認(都度起動バッチ)

8.3.4.3.1. 自動テスト(都度起動バッチ)

アーキタイプから生成したプロジェクトには、以下のユニットテストが含まれている。

ユニットテストのクラス テスト内容
SampleBatchActionRequestTest Nablarchのテスティングフレームワークを使用して、バッチを起動可能であるかを確認する。

ユニットテストを実行することで、ブランクプロジェクトの生成に成功していることを確認する。

以下のコマンドを実行する。

cd myapp-batch
mvn test

実行に成功すると、以下のようなログがコンソールに出力される。

(中略)
[INFO] ------------------------------------------------------------------------
[INFO] Building myapp-batch 0.1.0
[INFO] ------------------------------------------------------------------------
(中略)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
(以下略)

8.3.4.3.2. 起動テスト(都度起動バッチ)

生成したプロジェクトには、以下の都度起動バッチが含まれている。

バッチのクラス 内容
SampleAction バッチアプリケーション実装する際に一般的に使用するNablarchの機能の動作確認

都度起動バッチが起動することで、ブランクプロジェクトの生成に成功していることを確認する。

8.3.4.3.2.1. バッチアプリケーションのビルド

まだ、生成したプロジェクトにカレントディレクトリを移動していない場合は移動する。

cd myapp-batch

以下のコマンドを実行することで、バッチアプリケーションのビルドを行う。

mvn package

8.3.4.3.2.2. 都度起動バッチアプリケーションの起動

以下のコマンドを実行する。

mvn exec:java -Dexec.mainClass=nablarch.fw.launcher.Main ^
    -Dexec.args="'-diConfig' 'classpath:batch-boot.xml' '-requestPath' 'SampleBatch' '-userId' 'batch_user'"

起動に成功すると、以下のようなログがコンソールに出力される。

2020-04-28 08:56:23.353 -INFO- com.example.SampleBatch [202004280856233530002] boot_proc = [] proc_sys = [batch] req_id = [SampleBatch] usr_id = [batch_user] 疎通確認を開始します。
2020-04-28 08:56:23.379 -INFO- com.example.SampleBatch [202004280856233530002] boot_proc = [] proc_sys = [batch] req_id = [SampleBatch] usr_id = [batch_user] 取得したコード名称:ロック
2020-04-28 08:56:23.383 -INFO- com.example.SampleBatch [202004280856233530002] boot_proc = [] proc_sys = [batch] req_id = [SampleBatch] usr_id = [batch_user] 疎通確認が完了しました。
2020-04-28 08:56:23.396 -INFO- nablarch.fw.handler.MultiThreadExecutionHandler [202004280856233470001] boot_proc = [] proc_sys = [batch] req_id = [SampleBatch] usr_id = [batch_user]
Thread Status: normal end.
Thread Result:[200 Success] The request has succeeded.
2020-04-28 08:56:23.407 -INFO- nablarch.core.log.app.BasicCommitLogger [202004280856233470001] boot_proc = [] proc_sys = [batch] req_id = [SampleBatch] usr_id = [batch_user] TOTAL COMMIT COUNT = [1]
2020-04-28 08:56:23.413 -INFO- nablarch.fw.launcher.Main [null] boot_proc = [] proc_sys = [batch] req_id = [null] usr_id = [null] @@@@ END @@@@ exit code = [0] execute time(ms) = [559]

8.3.4.4. 疎通確認(テーブルをキューとして使ったメッセージング)

生成したプロジェクトには、以下のアプリケーションが含まれている。

バッチのクラス 内容
SampleResiAction テーブルをキューとして使ったメッセージングの基本的な処理である「処理対象テーブルから値を取得し、処理済みフラグを立てる」処理を実装したアプリケーション

上記アプリケーションが起動することで、ブランクプロジェクトの生成に成功していることを確認する。

8.3.4.4.1. 起動テスト(テーブルをキューとして使ったメッセージング)

8.3.4.4.1.1. アプリケーションのビルド

まだビルドしていない場合は、 バッチアプリケーションのビルド を参照してビルドする。

8.3.4.4.1.2. アプリケーションの起動

以下のコマンドを実行する。

mvn exec:java -Dexec.mainClass=nablarch.fw.launcher.Main ^
    -Dexec.args="'-diConfig' 'classpath:resident-batch-boot.xml' '-requestPath' 'SampleResiBatch' '-userId' 'batch_user'"

補足

上記引数の都度起動バッチアプリケーションとの相違点は以下の通りである。

  • -diConfigで指定するxmlファイル
  • -requestPathで指定するリクエストパス

起動に成功すると、以下のようなログがコンソールに出力される。

2020-04-28 08:58:15.350 -INFO- nablarch.fw.reader.DatabaseTableQueueReader [202004280858153390001] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] read database record. key info: {USER_INFO_ID=00000000000000000001}
2020-04-28 08:58:15.356 -INFO- com.example.SampleResiBatch [202004280858153560002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] handleが呼ばれました。
2020-04-28 08:58:15.363 -INFO- com.example.SampleResiBatch [202004280858153560002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] USER_INFO_ID:00000000000000000001
2020-04-28 08:58:15.367 -INFO- com.example.SampleResiBatch [202004280858153560002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] LOGIN_ID:TAROU
2020-04-28 08:58:15.371 -INFO- com.example.SampleResiBatch [202004280858153560002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] KANA_NAME:たろう
2020-04-28 08:58:15.379 -INFO- com.example.SampleResiBatch [202004280858153560002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] KANJI_NAME:太郎

終了はctrl + c等で強制終了すること。

重要

Nablarchが想定している正しい終了方法は、BATCH_REQUESTテーブルのPROCESS_HALT_FLGのフラグに1を設定するという方法である。本手順上では、簡単に停止させるために、ctrl + cで停止している。

テーブルをキューとして使ったメッセージングを一端終了した後に再び起動させたい場合、 テーブルをキューとして使ったメッセージングを再び起動したい場合にすること を参照。

8.3.4.4.2. 疎通確認になぜか失敗する場合

原因は分からないが疎通確認に失敗する場合、どこかで手順を誤っている可能性がある。

原因が分からない場合は、ブランクプロジェクト作成 からやり直してみること。

8.3.4.5. 補足

H2のデータの確認方法や、ブランクプロジェクトに組み込まれているツールに関しては、 初期セットアップ手順 補足事項 を参照すること。