WebSAM JobCenter 変数継承機能との連携部品

概要

ジョブスケジューラ製品である WebSAM JobCenter では、複数の単位ジョブ間での値渡しの仕組みとして、変数継承機能を提供しています。 変数継承機能では、単位ジョブの標準出力に所定のメッセージと共に出力したプロパティを次の単位ジョブに渡すことができます。

WebSAM JobCenter 変数継承機能との連携部品 com.nec.webotx.batch.util.ExportVariableJobExecutionListener は、ジョブ実行ログファイル に、指定されたPropertiesを「EXPORTVAR」というメッセージと共に KEY=VALUE の形式で出力する部品です。
利用者は、作成するジョブ内でこの部品を利用することで、容易に WebSAM JobCenter の変数継承機能を利用することができます。

下記は、変数継承 連携部品 ExportVariableJobExecutionListener の使用例です。
次の単位ジョブに継承させるプロパティは、stepX 内で transmitProperties beanにセットしています。job のリスナに追加されているwritePropertiesListener beanが、 transmitProperties beanの内容を出力します。

<b:job id="job">

  <b:step id="stepX">
    <property name="props" ref="transmitProperties"/>
  </b:step>

  <b:listeners>
    <b:listener ref="writePropertiesListener"/>
  </b:listeners>
</b:job>

<bean id="transmitProperties" class="java.util.Properties"/>

<bean id="writePropertiesListener" class="com.nec.webotx.batch.util.ExportVariableJobExecutionListener">
  <property name="properties" ref="transmitProperties"/>
  <property name="logLevel" value="INFO"/>
  <property name="shouldExportIfNotCompleted" value="true"/>
</bean>

シンプルなバッチアプリケーション(※)では、バッチ処理の開始時に起動するプロセスと、バッチ処理を実行するプロセスが同一である為、バッチ処理内で標準出力、標準エラー出力に出力したメッセージが、バッチ処理の開始時に起動したプロセスの標準出力、標準エラー出力に出力されます。
※ Unixのシェルスクリプト や Windowsのバッチファイルでバッチ処理を実装したバッチアプリケーション 等
Batch Serverでは、バッチ処理を実行するプロセスを常駐化させている為、バッチ処理の開始時に起動するプロセス(≒ジョブ制御コマンドプロセス)と、バッチ処理を実行するプロセス(≒コンテナプロセス)とが別プロセスとなっています。その為、バッチ処理内で標準出力、標準エラー出力に出力したメッセージは、コンテナプロセスの標準出力、標準エラー出力に出力されるだけで、ジョブ制御コマンドの標準出力、標準エラー出力には出力されません。
Batch Serverでは、ジョブの実行毎に ジョブ実行ログファイル を作成し、ジョブ開始コマンド(jobctl startstart-job)、および、ジョブ実行結果取得コマンド(jobctl resultresult-job)の標準出力に転送することができます。
これにより、シンプルなバッチアプリケーションと同様の方法で、ジョブスケジューラ製品等のバッチ処理を開始する側で、バッチ処理が出力するメッセージを取得することを可能にしています。

関連