8.3.3. JSR352に準拠したバッチプロジェクトの初期セットアップ¶
JSR352に準拠したバッチプロジェクトの初期セットアップでは以下を行う。
- JSR352に準拠したバッチプロジェクトの生成
- JSR352に準拠したバッチプロジェクトの動作確認
8.3.3.1. 生成するプロジェクトの概要¶
本手順で生成するプロジェクトの概要は以下の通りである。
項目 | 説明 |
---|---|
プロジェクト種別 | Mavenプロジェクト |
プロジェクト構成 | 単一プロジェクト構成 |
使用DB | H2 Databaes Engine(アプリケーションに組み込み) |
生成するプロジェクトに含まれるもの | 生成されたプロジェクトには以下が含まれる。
|
[1] | ETLを実行するクラスはNablarch内に存在するため、プロジェクトには設定ファイル、及びETLが使用するDTOクラス、entityクラスのみ存在する。 |
他のプロジェクトとの関係、及びディレクトリ構成は、 Mavenアーキタイプの構成 を参照。
8.3.3.2. ブランクプロジェクト作成¶
Nablarchが提供するアーキタイプを使用してブランクプロジェクトを生成する。
8.3.3.2.1. mvnコマンドの実行¶
カレントディレクトリを、ブランクプロジェクトを作成したいディレクトリ(任意のディレクトリで可)に変更する。
その後に、以下のように「mvn archetype:generate」コマンドを実行する。
mvn archetype:generate -DarchetypeGroupId=com.nablarch.archetype -DarchetypeArtifactId=nablarch-batch-ee-archetype -DarchetypeVersion=5u6
上記コマンドに含まれるパラメータのうち、重要なものを以下に示す。
設定値 | 説明 |
---|---|
-DarchetypeVersion | 使用したいアーキタイプのバージョンを指定する(Nablarch 5u6以降では、Nablarchのバージョン) |
8.3.3.2.2. プロジェクト情報の入力¶
上記コマンドを実行すると、以下の項目について入力を求められるので、 生成されるプロジェクトのひな形に関する情報を入力する。
本手順では以下の値を入力したとして説明を行う。
入力項目 | 説明 | 設定例 |
---|---|---|
groupId | グループID(通常はパッケージ名を入力) | com.example |
artifactId | アーティファクトID | myapp-batch-ee |
version | バージョン番号 | 0.1.0 |
package | パッケージ(通常はグループIDと同じ) | com.example |
重要
項目groupIdおよびpackageは、Javaのパッケージ名にマッピングされる。 よって、これらの入力値には、英小文字、数字、ドットを使用し、ハイフンは使用しないこと。
プロジェクト情報の入力が終わると、Y: :と表示される。
- 入力した内容をもとに、ひな形を生成する場合には「Y」を入力してください。
- プロジェクト情報の入力をやり直したい場合には「N」を入力してください。
コマンドが正常終了した場合、ブランクプロジェクトがカレントディレクトリ配下に作成される。
8.3.3.3. 疎通確認¶
8.3.3.3.1. 自動テスト¶
アーキタイプから生成したプロジェクトには、以下のユニットテストが含まれている。
ユニットテストのクラス | テスト内容 |
---|---|
SampleBatchletTest | データベース接続を伴うクラスのJUnitテスト。 |
ユニットテストを実行することで、ブランクプロジェクトの生成に成功していることを確認する。
以下のコマンドを実行する。
cd myapp-batch-ee
mvn test
実行に成功すると、以下のようなログがコンソールに出力される。
(中略)
[INFO] ------------------------------------------------------------------------
[INFO] Building myapp-batch-ee 0.1.0
[INFO] ------------------------------------------------------------------------
(中略)
2016-08-26 09:41:52.727 -INFO- ROO [null] 削除件数:10件
2016-08-26 09:41:52.728 -DEBUG- SQL [null] nablarch.core.db.statement.BasicSqlPStatement#executeQuery
SQL = [SELECT FAMILY_NAME,FIRST_NAME,USER_ID FROM SAMPLE_USER]
additional_info:
2016-08-26 09:41:52.728 -DEBUG- SQL [null] nablarch.core.db.statement.BasicSqlPStatement#executeQuery
execute_time(ms) = [0]
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.385 sec - in com.example.batchlet.SampleBatchletTest
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
(以下略)
8.3.3.3.2. 起動テスト¶
生成したプロジェクトには、以下のバッチアプリケーションが組み込まれている。
ジョブID | 内容 |
---|---|
sample-batchlet | batchlet方式で実装されたサンプルアプリケーション。 |
sample-chunk | chunk方式で実装されたサンプルアプリケーション。 |
sample-etl | Nablarchが提供するETL機能のサンプルアプリケーション。 |
上記3つのバッチアプリケーションの動作確認を行うことで、ブランクプロジェクトの生成に成功していることを確認する。
8.3.3.3.2.1. バッチアプリケーションのビルド¶
まだ、生成したプロジェクトにカレントディレクトリを移動していない場合は移動する。
cd myapp-batch-ee
以下のコマンドを実行することで、バッチアプリケーションのビルドを行う。
mvn package
以下のコマンドを実行することで、依存するライブラリを一箇所に集める。
mvn dependency:copy-dependencies -DoutputDirectory=target/dependency -DincludeScope=runtime
8.3.3.3.2.2. batchlet方式のバッチアプリケーションの起動¶
batchlet方式のバッチアプリケーションでは、SAMPLE_USERテーブルのデータを削除する処理が実装されている。
以下のコマンドを実行する。
Unix系の場合:
java -cp "target/myapp-batch-ee-0.1.0-dev.jar:target/dependency/*" org.jberet.se.Main sample-batchlet
Windowsの場合:
java -cp "target/myapp-batch-ee-0.1.0-dev.jar;target/dependency/*" org.jberet.se.Main sample-batchlet
実行に成功すると、以下のようなログがコンソールに出力される。
2016-08-26 09:42:16.844 -DEBUG- SQL [null] nablarch.core.db.statement.BasicSqlPStatement#executeUpdate
execute_time(ms) = [1] update_count = [1]
2016-08-26 09:42:16.847 -INFO- ROO [null] 削除件数:10件
2016-08-26 09:42:16.850 -DEBUG- SQL [null] transaction commit. resource=[transaction]
2016-08-26 09:42:16.853 -INFO- ROO [null] finish step. step name=[step1], step status=[SUCCEEDED]
2016-08-26 09:42:16.855 -INFO- ROO [null] finish job. job name=[sample-batchlet], batch status=[COMPLETED]
ちなみに
このbatchletはSAMPLE_USERテーブルのデータの全件削除を行っている。削除したデータを復元したい場合は、 ETL機能を使用するアプリケーションの起動 のコマンドを実行すること。
8.3.3.3.2.3. ETL機能を使用するアプリケーションの起動¶
ETL機能を使用したアプリケーションでは、SAMPLE_USERテーブルにデータを投入するように設定されている。
以下のコマンドを実行する。
Unix系の場合:
java -cp "target/myapp-batch-ee-0.1.0-dev.jar:target/dependency/*" org.jberet.se.Main sample-etl
Windowsの場合:
java -cp "target/myapp-batch-ee-0.1.0-dev.jar;target/dependency/*" org.jberet.se.Main sample-etl
起動に成功すると、以下のようなログがコンソールに出力される。
2016-08-26 09:42:19.603 -DEBUG- SQL [null] nablarch.core.db.statement.BasicSqlPStatement#executeBatch
execute_time(ms) = [1] batch_count = [10]
2016-08-26 09:42:19.606 -DEBUG- SQL [null] transaction commit. resource=[transaction]
2016-08-26 09:42:19.608 -INFO- ROO [null] chunk progress. write count=[10]
2016-08-26 09:42:19.609 -DEBUG- SQL [null] transaction commit. resource=[transaction]
2016-08-26 09:42:19.612 -INFO- ROO [null] finish step. step name=[load], step status=[SUCCEEDED]
2016-08-26 09:42:19.614 -INFO- ROO [null] finish job. job name=[sample-etl], batch status=[COMPLETED]
8.3.3.3.2.4. chunk方式のバッチアプリケーションの起動¶
chunk方式のバッチアプリケーションでは、SAMPLE_USERテーブルからデータを取り出し、編集してCSVファイルに出力する処理が実装されている。
以下のコマンドを実行する。
Unix系の場合:
java -cp "target/myapp-batch-ee-0.1.0-dev.jar:target/dependency/*" org.jberet.se.Main sample-chunk
Windowsの場合:
java -cp "target/myapp-batch-ee-0.1.0-dev.jar;target/dependency/*" org.jberet.se.Main sample-chunk
起動に成功すると、以下のようなログがコンソールに出力される。
2016-08-26 09:42:28.802 -INFO- ROO [null] start job. job name=[sample-chunk]
2016-08-26 09:42:28.809 -INFO- ROO [null] start step. step name=[step1]
2016-08-26 09:42:29.495 -DEBUG- SQL [null] nablarch.core.db.statement.BasicSqlPStatement#executeQuery
SQL = [SELECT FAMILY_NAME,FIRST_NAME,USER_ID FROM SAMPLE_USER]
additional_info:
2016-08-26 09:42:29.501 -DEBUG- SQL [null] nablarch.core.db.statement.BasicSqlPStatement#executeQuery
execute_time(ms) = [3]
2016-08-26 09:42:29.536 -DEBUG- SQL [null] transaction commit. resource=[transaction]
2016-08-26 09:42:29.537 -INFO- ROO [null] chunk progress. write count=[5]
2016-08-26 09:42:29.540 -DEBUG- SQL [null] transaction commit. resource=[transaction]
2016-08-26 09:42:29.542 -INFO- ROO [null] chunk progress. write count=[10]
2016-08-26 09:42:29.545 -DEBUG- SQL [null] transaction commit. resource=[transaction]
2016-08-26 09:42:29.548 -INFO- ROO [null] finish step. step name=[step1], step status=[SUCCEEDED]
2016-08-26 09:42:29.551 -INFO- ROO [null] finish job. job name=[sample-chunk], batch status=[COMPLETED]
また、testdata/output/outputdata.csvに以下のデータが出力される。
ユーザID,氏名
1,名部楽 一郎
2,名部楽 二郎
3,名部楽 三郎
4,名部楽 四朗
5,名部楽 五郎
6,名部楽 六郎
7,名部楽 七郎
8,名部楽 八郎
9,名部楽 九郎
10,名部楽 十郎
ちなみに
testdata/output/outputdata.csvはUTF-8で出力される。 testdata/output/outputdata.csvの内容を確認する際、Excelで開くと化けて表示されるため、テキストエディタで開くこと。
8.3.3.3.2.5. 疎通確認になぜか失敗する場合¶
原因は分からないが疎通確認に失敗する場合、どこかで手順を誤っている可能性がある。
原因が分からない場合は、ブランクプロジェクト作成 からやり直してみること。
8.3.3.3.3. 補足¶
H2のデータの確認方法や、ブランクプロジェクトに組み込まれているツールに関しては、 初期セットアップ手順 補足事項 を参照すること。