ExitCodeMapper

概要

ExitCodeMapper は、ジョブの実行結果(ExitStatus と BatchStatus)をもとに、コマンドプロセスの終了コードを決定する機能です。
本機能を利用することで、ExitStatus と BatchStatusに対応する任意の終了コードをコマンドがプロセスの戻り値として返すことができます。ExitStatus と BatchStatus と 終了コード の対応関係は、戻り値定義ファイルに設定します。
ExitCodeマッピング機能は、ジョブ開始コマンド(jobctl startstart-job)、および、ジョブ実行結果取得コマンド(jobctl resultresult-job)でのみ有効です。規定の動作は、Batch Serverが定めた既定値の終了コードが返却されます。

これにより、シンプルなバッチアプリケーションと同様の方法で、ジョブスケジューラ製品等のバッチ処理を開始する側で、バッチ処理の結果を、バッチ処理の開始時に起動するプロセスの戻り値(exit code)として取得することを可能にしています。

バッチアプリケーションの実行スケジューリング、および、結果の管理を担う一般的なジョブスケジューラ製品では、ジョブとして定義されたバッチ処理の開始時に起動したプロセスの標準出力、標準エラー出力、および、プロセスの戻り値(exit code)をハンドリング、保持することで、バッチ処理の結果の管理に利用しています。
シンプルなバッチアプリケーション(※)では、バッチ処理の開始時に起動するプロセスと、バッチ処理を実行するプロセスが同一である為、バッチ処理内でexitする際に指定した値がプロセスの戻り値(exit code)として返されます。
※ Unixのシェルスクリプト や Windowsのバッチファイルでバッチ処理を実装したバッチアプリケーション 等
Batch Serverでは、バッチ処理を実行するプロセスを常駐化させている為、バッチ処理の開始時に起動するプロセス(≒ジョブ制御コマンドプロセス)と、バッチ処理を実行するプロセス(≒コンテナプロセス)とが別プロセスとなっています。その為、バッチ処理内でバッチ処理内でexit(java.lang.System#exit())した場合、バッチ処理の開始時に起動するプロセスが意図した値でexitしないだけでなく、コンテナプロセスが終了することによって、同一のコンテナプロセス上で実行中のバッチ処理までもを異常終了させてしまいます。

関連