LoginSignup
0
0

More than 1 year has passed since last update.

Nablarchを使ったバッチアプリケーションの作成

Last updated at Posted at 2022-04-03

はじめに

こんばんわ、きりです。
本記事はNablarchを使ってみようのサブ記事として作成しております。

今回はNablarchのメイン機能であるバッチアプリケーションの作成を行います。
テンプレートとなるプロジェクトが用意されているためまずはテンプレートのダウンロードと実行を行ってみたいと思います。

本記事以外のコンテンツはこちらから閲覧可能です。

なるべく、初心者目線で作成するつもりですが、分かりづらい部分ありましたら、コメント頂きたいです。

動作環境

種類 バージョン
OS Windows Professional 20H2
Eclipse 2022 Full Edition

※Eclipseのダウンロードについては、こちらの記事をご確認ください。

バッチとは

システムの世界では一定量のデータに対して、一括処理を行うことをいうようです。

バッチの例としては、
・毎月月初にDBなどから各会員の利用料や利用時間などを取得し、その情報をメールで通知する
などが考えられます。

スケジュールするかは任意ですが、システム的な利用タイミングを考えると、スケジューラーと組み合わせて実行されるケースが多いかなと思います。

バッチアプリケーションとは

バッチ処理を実行する(仕組みをもった)アプリケーションです。
Nablarchにはバッチ処理を行う仕組みが予め用意されています。

作業内容

  1. バッチアプリケーションのテンプレートプロジェクトをダウンロードする
  2. テンプレートプロジェクトの動作確認を行う

バッチアプリケーションのテンプレートプロジェクトをダウンロードする

テンプレートプロジェクトのダウンロード

Webアプリケーションの時と同様に、予め用意されたバッチのブランクプロジェクトをダウンロードします。

ダウンロードはこちらのドキュメントを参考に行います。

Eclipseからテンプレートをダウンロードする

テンプレートはmvnからダウンロードします。
一般的にはコマンドプロンプトやターミナルからmvnのコマンドを実行するのですが、今回はEclipseからmvnを実行します。
※コマンドプロンプトやターミナルからmvnコマンドを実行するには事前にmvnのインストール(mvnのダウンロードとPathの設定)が必要です。

メニュー>実行>実行構成 をクリックします。
image.png

実行構成ダイアログにて、Mavenビルドを選択し、新規の起動構成ボタンをクリックします。
image.png

名前に任意の値を入力し、規定ディレクトリーを「${workspace_loc}」、ゴールに以下の値を入力し、適用ボタン>実行ボタンの順でボタンをクリックします。
※archetypeVersion,groupId,artifactId,version,package名は変更可能です

org.apache.maven.plugins:maven-archetype-plugin:2.4:generate -DinteractiveMode=false -DarchetypeGroupId=com.nablarch.archetype -DarchetypeArtifactId=nablarch-batch-archetype -DarchetypeVersion="5u21" -DgroupId=com.example -DartifactId=myapp-batch -Dversion=0.1.0 -Dpackage=com.example

image.png

コンソールビューで以下のようにBUILD SUCCESSが表示されれば成功です。
ワークスペース直下に、「myapp-batch」フォルダが作成されているはずです。
image.png

テンプレートプロジェクトの読み込み

メニュー>ファイル>ファイル・システムからプロジェクトを開く をクリックします。
image.png

ファイル・システムまたはアーカイブからプロジェクトをインポートダイアログでディレクトーボタンをクリックします。
image.png

Eclipseからテンプレートをダウンロードするにてダウンロードした「myapp-batch」を選択して、「フォルダーの選択」ボタンをクリックします。
image.png

「myapp-batch」にチェックがついていることを確認して、完了ボタンをクリックします。
image.png

プロジェクトが追加されました。

テンプレートプロジェクトの動作確認を行う

testの実施

テンプレートプロジェクトには既にテストコードが用意されており、「mvn test」 コマンドにより単体テストが行えます。

プロジェクト名を右クリック>実行>Maven test をクリックします。
※下図の通り、「clean」、「generate-sources」、「install」、「test」はデフォルトで用意されているようです。
image.png

初回だと、依存関係のあるjarのダウンロードに数分かかる場合があります。

BUILD SUCCESSとなれば成功です。
image.png

パッケージの作成

mvn packageコマンドでパッケージ(jar)ファイルを作成します。

まずは実行構成を作成します。

プロジェクト名を右クリック>実行>実行の構成をクリックします。
image.png

実行構成ダイアログにて、Mavenビルドを選択し、新規の起動構成ボタンをクリックします。
image.png

名前に任意の文字列を入力、基底ディレクトリーに「${project_loc:myapp-batch」、ゴールに「package」を入力し、適用ボタン>実行ボタンの順番でクリックします。
内部的に「mvn package」コマンドが実行されます。
image.png

BUILD SUCCESSとなっていれば成功です。
プロジェクト・エクスプローラにてtargetフォルダ内にmyapp-batch-0.1.0.jarファイルが作成されているはずです。
表示されない場合はF5ボタンをクリックすると表示が更新されます。

image.png
image.png

バッチ処理を実行してみる

今度は実際にバッチ処理を実行してみます。
コード内容は次回説明予定ですので、今回は成功することを確認します。

コマンドプロンプトから実行する場合は以下のコマンドで実行できます。
※mvnを事前にインストールする必要があります。

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

今回はEclipseより実行します。

前回同様、新規の起動構成を追加します。

項目
名前 任意の値 mvn-exec-java
基底ディレクトリー ${project_loc:myapp-batch} プロジェクト名は適時変更
ゴール exec:java
exec.mainClass nablarch.fw.launcher.Main
exec.args '-diConfig' 'classpath:batch-boot.xml' '-requestPath' 'SampleBatch' '-userId' 'batch_user'

※exec.mainClassとexec.argsは追加ボタンより登録します。

保存後、実行ボタンをクリックします。

image.png

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

2022-03-13 11:31:36.689 -INFO- com.example.SampleBatch [202203131131366890002] boot_proc = [] proc_sys = [batch] req_id = [SampleBatch] usr_id = [batch_user] 疎通確認を開始します。
2022-03-13 11:31:36.766 -INFO- com.example.SampleBatch [202203131131366890002] boot_proc = [] proc_sys = [batch] req_id = [SampleBatch] usr_id = [batch_user] 取得したコード名称:ロック
2022-03-13 11:31:36.769 -INFO- com.example.SampleBatch [202203131131366890002] boot_proc = [] proc_sys = [batch] req_id = [SampleBatch] usr_id = [batch_user] 疎通確認が完了しました。
2022-03-13 11:31:36.775 -INFO- nablarch.fw.handler.MultiThreadExecutionHandler [202203131131366680001] boot_proc = [] proc_sys = [batch] req_id = [SampleBatch] usr_id = [batch_user] 
Thread Status: normal end.
Thread Result:[200 Success] The request has succeeded.

バッチ処理を実行してみる②

今度は別のバッチリクエストを実行してみます。

前回同様、新規の起動構成を追加し、実行してみます。

項目
名前 任意の値 mvn-exec-java2
基底ディレクトリー ${project_loc:myapp-batch} プロジェクト名は適時変更
ゴール exec:java
exec.mainClass nablarch.fw.launcher.Main
exec.args '-diConfig' 'classpath:resident-batch-boot.xml' '-requestPath' 'SampleResiBatch' '-userId' 'batch_user'

コンソールから実行する場合は以下を実行します。

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

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

2022-03-13 11:34:59.023 -INFO- com.example.SampleResiBatch [202203131134590220002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] handleが呼ばれました。
2022-03-13 11:34:59.024 -INFO- com.example.SampleResiBatch [202203131134590220002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] USER_INFO_ID:00000000000000000001
2022-03-13 11:34:59.025 -INFO- com.example.SampleResiBatch [202203131134590220002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] LOGIN_ID:TAROU
2022-03-13 11:34:59.027 -INFO- com.example.SampleResiBatch [202203131134590220002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] KANA_NAME:たろう
2022-03-13 11:34:59.029 -INFO- com.example.SampleResiBatch [202203131134590220002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] KANJI_NAME:太郎

その他の方法でバッチを実行する

これまではmvnコマンドでバッチの実行を行ってきましたが、それ以外の方法で実行する方法を見つけたので一緒に紹介しておきます。
実行時のパラメータを確認した限りでは、こちらの方がより実際の実行に近いのかなと思います(が今はそこまで深く考えなくても良い気がしています)。

実行の前の準備

プロジェクトフォルダ/h2/dbフォルダに存在する以下の2ファイルを削除します

  • SAMPLE.h2.db
  • SAMPLE.lock.db

次に、SAMPLE.h2.db.orgを同じフォルダにコピーして、ファイル名をSAMPLE.h2.dbに変更します。

これらのファイル操作で何をしたかといいますと、
SAMPLE.h2.dbがデータベースの実体なのですが、一度今回のバッチを実行すると、値が更新されてしまうためそのままだと期待通りの結果が得られなくなります。
そのため、orgの状態にSAMPLE.h2.dbを戻し、データベースの状態を元の状態に戻しました。

実行構成のダイアログにて、Mavenビルドではなく、「Javaアプリケーション」を選択して、新規の起動構成のボタンをクリックします。
メインタブにて、以下の項目を入力

項目
名前 任意の値 run-app-batch
プロジェクト名 myapp-batch
メイン・クラス nablarch.fw.launcher.Main

image.png

引数タブにて、以下の項目を入力

項目
プログラムの引数 -diConfig classpath:resident-batch-boot.xml -requestPath SampleResiBatch -userId batch_user

image.png

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

2022-03-13 11:34:59.023 -INFO- com.example.SampleResiBatch [202203131134590220002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] handleが呼ばれました。
2022-03-13 11:34:59.024 -INFO- com.example.SampleResiBatch [202203131134590220002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] USER_INFO_ID:00000000000000000001
2022-03-13 11:34:59.025 -INFO- com.example.SampleResiBatch [202203131134590220002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] LOGIN_ID:TAROU
2022-03-13 11:34:59.027 -INFO- com.example.SampleResiBatch [202203131134590220002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] KANA_NAME:たろう
2022-03-13 11:34:59.029 -INFO- com.example.SampleResiBatch [202203131134590220002] boot_proc = [] proc_sys = [batch] req_id = [SampleResiBatch] usr_id = [batch_user] KANJI_NAME:太郎

最後に

Nablarchのバッチアプリケーションのテンプレートをダウンロードし、Eclipseから実行を行い動作確認を行いました。
今回は言われるままに操作をしただけで、バッチの中身についてはわからなかったと思いますが、
次回、テンプレートの中身を確認しながらバッチアプリケーションの動作について整理したいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0