【GeneXus】Command Line(Java)

GeneXusも一応バッチ作れます。

作り方

適当にプロシージャを作って、処理を書く。
今回はテスト的なテーブルにレコードを10件Insertする処理です。

Pro_InsertTest

For &i = 1 to 10	New	// test_id = AutoNumber(自動採番)	test_name = !"Test" + &i.ToFormattedString()	test_date = ServerDate()	test_datetime = ServerNow()	test_boolean = True	Endnew
Endfor
Commit

プロパティを変更。

これをコマンドライン、
ウィンドウズならコマンドプロンプト
MacやLinuxならターミナル?から起動します。

起動方法(Windows)

cd C:¥Program Files¥Apache Software Foundation¥Tomcat 9.0¥webapps¥TestJavaEnvironment¥WEB-INF¥classes
java -cp .;..¥lib¥* com.oqiita.apro_inserttest

起動方法(Linux)

cd /opt/apache-tomcat-9.0.22/webapps/TestJavaEnvironment/WEB-INF/classes
java -cp .:../lib/* com.oqiita.apro_inserttest

注意

以下のことを確認してください。
・Javaのバージョンの確認。Pathが通っているJavaとビルドしているJavaのバージョンが違うと正しく動かない場合があります。
・ライブラリの不足。なぜか知らんけど、Jarを1個1個通しているのを見かけますが、GeneXusに置いてそんなの無駄っす。
バージョンあがるたびJarの確認とか名前の確認とかマジ無駄。ワイルドカードで全部認識させろ。

Batファイル

適当に作成したbatファイルを置いておきます。WEB-INFフォルダの中にbatchフォルダを作成してbatファイルを作成することを想定しています。

無駄なコマンドも入っているので、いらなかったら消してねw

GeneXus.bat

@echo off
echo ########################################
echo # 実行プログラム : GeneXus Command Line Program
echo # 実行プログラム名 : Command Line Program
echo # 返却値 : 0 [正常終了]
echo # : 1 [異常終了]
echo ########################################
echo.
REM ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
REM # ライブラリパス設定
SET BATCH_LIBRARY_PATH=..\lib
REM # クラスパス設定
SET CLASS_PATH=.;%BATCH_LIBRARY_PATH%\*
REM # 実行するクラスが存在するパス
SET EXECUTE_PATH=..\classes
REM # 実行するJavaClass指定
SET EXECUTE_CLASS=com.oqiita.apro_inserttest
REM ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
echo ###########################
echo # 各種情報を確認
echo ###########################
echo Javaのバージョンを表示
java -version
echo.
echo 各設定値を確認
echo EXECUTE_BAT=%~0
echo %~dp0
echo EXECUTE_PATH=%EXECUTE_PATH%
echo EXECUTE_CLASS=%EXECUTE_CLASS%
echo CLASS_PATH=%CLASS_PATH%
echo.
echo ###########################
echo # 階層移動
echo ###########################
echo cd %EXECUTE_PATH% %1
cd %EXECUTE_PATH%
echo.
echo ###########################
echo # Java実行
echo ###########################
echo java -cp %CLASS_PATH% %EXECUTE_CLASS% %1
java -cp %CLASS_PATH% %EXECUTE_CLASS% %1
echo.
echo ###########################
echo # 返却値
echo ###########################
IF %ERRORLEVEL%==1 (	echo 異常終了 %ERRORLEVEL%	REM pause	EXIT /b 1
)
echo ###########################
echo # 場所移動
echo ###########################
cd /d %~dp0
echo 正常終了 %ERRORLEVEL%
REM pause
EXIT /b 0

Shellファイル

GeneXusBatch

#!/bin/sh
echo "########################################"
echo "# 実行プログラム : Sample.class"
echo "# 実行プログラム名 : サンプルクラス"
echo "# 返却値 : 0 [正常終了]"
echo "# : 1 [異常終了]"
echo "########################################"
echo ""
# ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
# batchファイルのパスを取得
BATCH_PATH=$(cd $(dirname ${BASH_SOURCE:-$0}); pwd)
# ライブラリパス設定
BATCH_LIBRARY_PATH="../lib"
# クラスパス設定
CLASS_PATH=".:${BATCH_LIBRARY_PATH}/*"
# 実行するクラスが存在するパス
EXECUTE_PATH="../classes"
# 実行するJavaClass指定
EXECUTE_CLASS=com.oqiita.apro_inserttest
# ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
echo "###########################"
echo "# 各種情報を確認"
echo "###########################"
echo "Javaのバージョンを表示"
java -version
echo ""
echo $(cd $(dirname $0);pwd)
echo ""
echo "各設定値を確認"
echo "${EXECUTE_PATH}"
echo "${EXECUTE_CLASS}"
echo "${CLASS_PATH}"
echo ""
echo "###########################"
echo "# 階層移動"
echo "###########################"
echo "cd ${BATCH_PATH} $1"
cd "${BATCH_PATH}" $1
echo ""
echo "cd ${EXECUTE_PATH} $1"
cd "${EXECUTE_PATH}" $1
echo ""
echo "###########################"
echo "# Java実行"
echo "###########################"
echo "java -cp ${CLASS_PATH} ${EXECUTE_CLASS} $1"
java -cp "${CLASS_PATH}" "${EXECUTE_CLASS}" $1
RESULT=$?
echo ""
echo "###########################"
echo "# 返却値"
echo "###########################"
if [ ${RESULT} = 1 ]; then echo "異常終了" ${RESULT} exit 1
fi
echo "正常終了" ${RESULT}
exit 0
echo ""

まとめ

一回作ってしまえば、どのプロジェクトでも使えるし、複数個バッチがある場合は
もう1個親のバッチを作って呼び出すなんてこともいいかもしれない。
今回はBlog用なので設定とかを外だしにしてませんが、設定などは外出しにしておくて便利・・・・かも?

以上です

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください