JP1/Automatic Job Management System 3 - SOA Option ジョブ・ジョブネット呼び出し機能編
ジョブ制御クラスは,サブミットジョブを制御するクラスです。JP1/AJS3 - SOA Option専用のマネージャーホストのキューへ,サブミットジョブを実行登録します。ジョブの実行登録に成功した場合,ジョブ実行状況を監視します。ジョブの実行を強制的に終了することもできます。
- 注意
- サブミットジョブの実行登録先がJP1/AJS3の場合,JP1/AJS3 - Managerのデータベース構成に制限があります。詳細は,「2.2.2 ジョブの操作」を参照してください。
このクラスのインスタンスを作成して使用してください。
ジョブ制御クラスインターフェースの詳細を次に示します。
- クラス定義
- public class AjsWsSubjob
- パッケージ名
- jp.co.Hitachi.soft.ajs2.ws.jobcontrol
- メソッド一覧
メソッド名 説明 AjsWsSubjob ジョブ制御クラスのコンストラクタです。 subJobEntry サブミットジョブの実行登録をします。 subJobGet サブミットジョブの実行状況を監視します。 subJobKill 実行中のサブミットジョブを強制終了します。 各メソッドの詳細を説明します。
- 参考
- ジョブ制御クラスのメソッドは,JP1/AJSのコマンドに対応しています。例えば,AjsWsSubjobメソッドが持つ引数は,JP1/AJSのjpqjobsubコマンドの引数に対応しています。ジョブ制御クラスのメソッドとJP1/AJSのコマンドとの対応については,「付録C JP1/AJS3 - SOA Optionで使用できるJP1/AJSコマンドの対応一覧」を参照してください。
- <この項の構成>
- (1) AjsWsSubjobメソッド
- (2) subJobEntryメソッド
- (3) subJobGetメソッド
- (4) subJobKillメソッド
- (5) ジョブ制御クラスの実装例
- (6) ジョブ制御クラスの注意事項
- (7) ジョブ制御クラスで,標準入力データ・標準出力データ・標準エラー出力データを指定する場合の注意事項
- (8) ジョブ制御クラスで,環境変数ファイルを指定する場合の注意事項
- 説明
- AjsWsSubjobのコンストラクタです。ジョブの実行登録に必要な情報をクラス内に保持します。
- 形式
public AjsWsSubjob( jp.co.Hitachi.soft.ajs2.ws.jobcontrol.AjsWsClient client, java.lang.String manager, java.lang.String queueName, java.lang.String userName, java.lang.String jobName, int priority, java.lang.String execFile, java.lang.String[] args, java.lang.String workPath, java.lang.String shellPath, java.lang.String exclusiveResourceName, java.lang.String startTime, int execLimitTime, int recoverStatus, java.lang.String stdinFilePath, java.lang.String stdoutFilePath, int stdoutWriteMode, java.lang.String stderrFilePath, int stderrWriteMode, java.lang.String envFilePath)
- 引数
項番 引数名 省略 説明 1 client 不可 初期化済みのAjsWsClientのインスタンスを指定します。 2 manager 不可 ジョブ制御要求を依頼するJP1/AJS3 - ManagerまたはJP1/AJS2 - Managerのホスト名を,1~255バイトの文字列で指定します。
JP1/AJS3 - SOA Optionのセットアップ時に設定するWS-Server動作環境設定定義ファイル(ajswsserver.conf)の「接続先JP1/AJS3 - Managerホスト名または接続先JP1/AJS2 - Managerホスト名」と同じ値を指定してください。
WS-Server動作環境設定定義ファイルの設定については,「6.6.7(1) WS-Server動作環境設定定義ファイル(ajswsserver.conf)」を参照してください。3 queueName 不可 ジョブの投入先のキュー名を,1~63バイトの文字列で指定します。
なお,JP1/AJS3 - SOA Optionからサブミットジョブの操作を要求する場合,エージェントの直接指定はできません。4 userName 可 ジョブ実行時のアカウントとなるOSユーザー名を,1~63バイトの文字列で指定します。
ジョブ実行ホストがWindowsの場合,サブミットジョブの実行ユーザーをローカルホストのユーザーに限定したいときは,OSユーザー名を「サーバ名\ユーザー名」の形式で指定してください。
OSユーザー名を指定しない場合は,nullを指定してください。nullを指定した場合,WS-Server動作環境設定定義ファイルで指定するJP1ユーザーにマッピングされているエージェントホストのOSユーザーで実行されます。5 jobName 可 登録するジョブ名を,1~63バイトの文字列で指定します。
ジョブ名を指定しない場合は,nullを指定してください。nullを指定した場合,execFileで指定する実行ファイル名のファイル名部分(パス名を除いた部分)の先頭から63バイト分の文字列が仮定されます。6 priority※1 可 登録するジョブの実行優先順位を,1~5の整数で指定します。
指定する実行優先順位の値と意味については,表4-6を参照してください。
実行優先順位を指定しない場合は,0を指定してください。何も指定しなかった場合は,実行優先順位は1が仮定されます。7 execFile 不可 実行ファイル名を,1~511バイトの文字列で指定します。
ジョブ実行先エージェントホストがWindowsの場合,エージェントホストにある実行ファイル名を指定します。
ジョブ実行先エージェントホストがUNIXの場合,ジョブを実行するエージェントホストにあるスクリプトファイル名を指定します。
ファイル名は,絶対パスまたは相対パスで指定できます。相対パスで指定した場合,workPathで指定されたジョブ実行時の作業用パスまたはPATH環境変数で指定されたパスからの相対パスになります。有効となるPATH環境変数は,エージェントホストのOSによって異なります。
- エージェントホストがWindowsの場合
- システム環境変数
実行ファイル名に空白文字が含まれる場合,実行ファイル名を「"」で囲んでください。例えば,「aaa bbb」は「"aaa bbb"」と指定します。
- エージェントホストがUNIXの場合
- ジョブを実行するOSユーザーのPATH環境変数
8 args 可 実行ファイルに対する引数を,文字列の配列形式で指定します。
各配列要素の文字列長の総和が1~(1,024 - (配列要素数*3))となるように指定します。
引数を指定しない場合はnullを指定してください。9 workPath 可 ジョブ実行時の作業用パス名を,1~511バイトの文字列で指定します。絶対パスで指定します。
作業用パスを指定しない場合は,nullを指定してください。nullを指定した場合,ジョブ実行時の作業用パスは次のパスが仮定されます。
- エージェントホストがWindowsの場合
- エージェントの環境設定に設定されている,エージェントプロセス実行時の作業用フォルダ
- エージェントホストがUNIXの場合
- ジョブ実行ユーザーのホームディレクトリ
10 shellPath 可 エージェントホストのOSがUNIXの場合だけ指定できます。
ジョブの起動シェルおよび実行シェルを,1~511バイトの文字列で指定します。絶対パスで指定します。
起動シェルおよび実行シェルを利用しない場合,nullを指定してください。11 exclusiveResourceName 可 ジョブの排他実行をする場合,排他実行リソース名を1~63バイトの文字列で指定します。
ジョブの排他実行をしない場合は,nullを指定してください。12 startTime 可 ジョブの実行開始日時を指定します。
実行開始日時を指定しない場合,nullを指定してください。nullを指定した場合,または過去の日時を指定した場合,ジョブ実行開始日時は指定されなかったと仮定され,登録後ジョブは実行待ちまたは実行中状態になります。
日時は次の形式のどれかで指定してください。
各指定の意味を次に説明します。()内は,指定できる範囲を示します。
- YYYY/MM/DD.hh:mm:ss
指定日時よりあとにジョブ実行登録した場合,ジョブ実行開始日時は指定されなかったと仮定されます。
- 曜日.hh:mm:ss
指定した曜日がジョブを登録した曜日と同じで,かつ指定時刻よりあとにジョブ実行登録した場合,ジョブ実行開始日時は指定されなかったと仮定されます。
- hh:mm:ss
指定時刻よりあとにジョブ実行登録した場合,ジョブ実行開始日時は指定されなかったと仮定されます。
- YYYY/MM/DD
ジョブの開始時刻は,指定日付の00:00:00が仮定されます。指定日付の00:00:00よりあとにジョブ実行登録した場合,ジョブ実行開始日時は指定されなかったと仮定されます。
- n
ジョブ実行登録を行ったn日後に実行待ちまたは実行中状態になります。
- YYYY
- 西暦年(1980~2038)
- MM
- 月(01~12)
- DD
- 日(01~31)
- hh
- 時(00~23)
- mm
- 分(00~59)
- ss
- 秒(00~59)
- 曜日
- 曜日(sun,mon,tue,wed,thu,fri,sat)
- 小文字で指定します。
- n
- 日(0~366)
13 execLimitTime 不可 ジョブの実行が終了しない場合に実行を打ち切るジョブ実行開始時刻からの相対時間(分)を,1~1,440の整数で指定します。
ジョブ実行の打ち切りをしない場合は,0を指定してください。14 recoverStatus※2 不可 ジョブ実行中にエージェントホストでトラブルが発生した場合の,ジョブの回復モードを整数定数で指定します。
指定できる値と内容は表4-7を参照してください。
ジョブの回復モードを指定しない場合は,0を指定してください。15 stdinFilePath 可 ジョブ実行時に使用する標準入力ファイル名を,1~511バイトの文字列で指定します。絶対パスまたは相対パスで指定します。
相対パスで指定した場合,workPathで指定されたジョブ実行時の作業用パスからの相対パスとなります。
指定する標準入力ファイルは,ジョブを実行するエージェントホストに作成しておく必要があります。
標準入力ファイルを使用しない場合は,nullを指定してください。16 stdoutFilePath 可 ジョブ実行時に出力する標準出力ファイル名を,1~511バイトの文字列で指定します。絶対パスまたは相対パスで指定します。
相対パスで指定した場合,workPathで指定されたジョブ実行時の作業用パスからの相対パスとなります。指定する標準出力ファイルは,ジョブを実行するエージェントホストに作成されます。
標準出力ファイルを出力しない場合は,nullを指定してください。17 stdoutWriteMode※3 不可 標準出力ファイルに出力するとき,ファイルを上書きするか,または追加書きするかを整数定数で指定します。
指定できる値と内容は,表4-8を参照してください。
stdoutFilePathにnullを指定した場合,この指定は無視されます。18 stderrFilePath 可 ジョブ実行時に出力する標準エラー出力ファイル名を,1~511バイトの文字列で指定します。絶対パスまたは相対パスで指定します。
相対パスで指定した場合,workPathで指定されたジョブ実行時の作業用パスからの相対パスとなります。
指定する標準出力エラーファイルは,ジョブを実行するエージェントホストに作成されます。
標準エラー出力ファイルを出力しない場合は,nullを指定してください。19 stderrWriteMode※3 不可 標準エラー出力ファイルに出力するとき,ファイルを上書きするか,または追加書きするかを整数定数で指定します。
指定できる値と内容は,表4-8を参照してください。stderrFilePathにnullを指定した場合,この指定は無視されます。20 envFilePath 可 ジョブ実行時に使用する環境変数ファイル名を,1~511バイトの文字列で指定します。絶対パスまたは相対パスで指定します。
相対パスで指定した場合,workPathで指定されたジョブ実行時の作業用パスからの相対パスとなります。
指定する環境変数ファイルは,ジョブを実行するエージェントホストに作成しておく必要があります。
環境変数ファイルを使用しない場合は,nullを指定してください。
- 注※1
- 引数priorityに指定する実行優先順位の指定値と意味を,次の表に示します。
表4-6 実行優先順位の指定値と意味
実行優先順位の
指定値Windowsでの実行優先順位 UNIXでの実行優先順位 1 対話処理と比較して低い nice値+20 2 nice値+10 3 対話処理と同等 nice値 4 対話処理と比較して高い nice値-10 5 nice値-20 - エージェントホストがUNIXの場合で,実行時のユーザーがスーパーユーザー権限を持たないユーザーのとき,実行優先順位として4または5を指定すると,ジョブ実行登録時に権限エラーになります。
- 補足事項
- Windowsの場合,実行優先順位は3段階になります。次の三つの実行優先順位クラスを設定してジョブのプロセスを起動します。
- 実行優先順位の設定値が1または2の場合,システムがアイドル状態のときに実行されます(Windowsで規定されるIDLE_PRIORITY_CLASSを設定します)。
- 実行優先順位の設定値が3の場合,一般的なプロセスとして実行されます(Windowsで規定されるNORMAL_PRIORITY_CLASSを設定します)。
- 実行優先順位の設定値が4または5の場合,上記の優先順位クラスを割り当てられたプロセスのスレッドより先に実行されます(Windowsで規定されるHIGH_PRIORITY_CLASSを設定します)。
- UNIXの場合,nice値のデフォルトとして,jajs_spmdを実行した際のJP1/AJS3サービスまたはJP1/AJS2サービスのnice値を基準とします。特に設定されていない場合のnice値は20が仮定されます。
- 実行優先順位の設定値が1でnice値が20の場合,実行優先順位の値は次のようになります。
- 39 ≒ 20(初期値)+ 20(増分値)
- 実行優先順位の値がnice値の範囲(0~39)を超える場合,最大値は39,最小値は0です。
- 注※2
- 引数recoverStatusに指定するジョブ回復モードの指定値と意味を,次の表に示します。
表4-7 定数一覧(ジョブ回復モード)
型 定数名 説明 int STATUS_WAITING ジョブを実行待ち状態にします。 int STATUS_HOLDING ジョブを保留状態にします。 int STATUS_TERMINATE ジョブを強制終了します。
- 注※3
- 引数stdoutWriteModeおよびstderrWriteModeに指定するファイル出力モードの指定値と意味を,次の表に示します。
表4-8 定数一覧(標準出力ファイルおよび標準エラー出力ファイルの出力モード)
型 定数 説明 int MODE_APPEND 標準出力ファイルまたは標準エラー出力へ追加モードで出力します。 int MODE_TRUNC 標準出力ファイルまたは標準エラー出力へ上書きモードで出力します。
- 戻り値
- なし
- 例外
- 例外が発生した場合,このメソッドは例外クラス(AjsWsException)を送出します。
- 説明
- このクラスのコンストラクタ(AjsWsSubjob)で指定されたマネージャーホストのキューへ,ジョブの実行登録を要求します。ジョブ実行終了の待ち合わせはしません。ジョブ実行登録時の動作は,コンストラクタで指定された情報によって決まります。
- 形式
public synchronized void subJobEntry()
- 引数
- なし
- 戻り値
- なし
- 例外
- 例外が発生した場合,このメソッドは例外クラス(AjsWsException)を送出します。
- 説明
- ジョブの実行状況を監視し,結果をジョブ情報クラス(AjsWsSubjobInfo)のインスタンスとして返します。
- 形式
public AjsWsSubjobInfo subJobGet()
- 引数
- なし
- 戻り値
- ジョブの実行状況監視の結果をジョブ情報クラス(AjsWsSubjobInfo)のインスタンスとして返します。
- 例外
- 例外が発生した場合,このメソッドは例外クラス(AjsWsException)を送出します。
- 説明
- ジョブを強制終了します。ジョブが実行待ち,保留,または時間待ち状態の場合は,ジョブの実行をキャンセルします。ジョブが実行中の場合は,ジョブの実行を強制終了します。
- 形式
public void subJobKill()
- 引数
- なし
- 戻り値
- なし
- 例外
- 例外が発生した場合,このメソッドは例外クラス(AjsWsException)を送出します。
ジョブ制御クラスの実装例を次に示します。
(6) ジョブ制御クラスの注意事項
- AjsWsSubjobクラスの同一インスタンスに対してsubJobEntryメソッドでジョブを実行登録したあと,subJobKillメソッドでジョブを強制終了した場合,再度subJobEntryメソッドを呼び出すことはできません。
- subJobEntryメソッドでの実行登録が成功したジョブに対してだけ,subJobGetメソッドおよびsubJobKillメソッドでジョブ制御できます。
- JP1/NQSEXECホスト,JP1/OJE for VOS3ホスト,およびAS/400システムには,ジョブの実行登録はできません。
- 次の条件すべてに該当するジョブを実行する場合は,実行ファイルパス名を「"(ダブルクォーテーション)」および「\\\"」で囲んでください。
- エージェントホストのOSがWindows
- 実行ファイルの拡張子がEXE,COM,CMD,PIF,およびBAT以外
- パス名に空白を含む
- (例)
- String execFile = "\\\"C:\PROGRAM FILES\HITACHI\SCRIPT\XXX_0.SPT\\\""
- ジョブの排他実行をする場合,事前に排他実行リソースをJP1/AJSコマンドjpqresaddまたはjpqimportで作成しておく必要があります。
ジョブの排他実行については,マニュアル「JP1/Automatic Job Management System 3 導入ガイド」またはマニュアル「JP1/Automatic Job Management System 2 解説」のジョブ実行時の排他制御について記載している個所を参照してください。コマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス2」またはマニュアル「JP1/Automatic Job Management System 2 コマンドリファレンス」を参照してください。
(7) ジョブ制御クラスで,標準入力データ・標準出力データ・標準エラー出力データを指定する場合の注意事項
- ジョブ実行時に,標準出力ファイルまたは標準エラー出力ファイルを作成する場合,ファイルはエージェントホストに作成されます。
- ジョブ実行時に標準入力ファイルを使用する場合,使用する標準入力ファイルはエージェントホストに置いておく必要があります。
- ジョブ実行時の標準出力ファイル名または標準エラー出力ファイル名に,アクセスできないネットワークファイル名を指定した場合,ジョブが異常終了する場合があります。正しいネットワークファイル名を指定してください。
- ジョブの標準出力ファイル名または標準エラー出力ファイル名にネットワークファイル名を指定する場合,指定するファイルは次に示す権限が必要です。
- エージェントホストのOSがWindowsの場合
- エージェントホストのJP1/AJS3サービスまたはJP1/AJS2サービスに設定されているアカウントで作成,参照および更新する権限。
- エージェントホストのOSがUNIXの場合
- ジョブの実行OSユーザーに指定されているアカウントで作成,参照および更新する権限。
- 標準入力ファイル名,標準出力ファイル名,および標準エラー出力ファイル名にスクリプトファイル名や実行ファイル名と同じファイル名を指定しないでください。指定している場合,ジョブが異常終了することがあります。
- 実行ファイルの引数にリダイレクトを指定しないでください。標準出力ファイル,標準エラー出力ファイルを指定してください。
リダイレクトと標準出力ファイル,標準エラー出力ファイルの指定を併用すると,ジョブ実行情報を正しく取得できない場合があります。
- 同時に実行する複数のジョブには,異なる標準出力ファイル名および標準エラー出力ファイル名を指定してください。
同一の標準出力ファイル名または標準エラー出力ファイル名を指定してジョブを実行すると,標準出力や標準エラー出力の出力結果が上書きされます。
- 同時に複数のジョブを実行登録する場合,同一の標準出力ファイル,標準エラー出力ファイルを指定すると,指定したファイルが壊れてジョブ実行ができなくなることがあります。
- 標準出力データや標準エラー出力データの出力先に指定できるファイルは,テキスト形式のファイルだけです。
- 標準出力データや標準エラー出力データには,外字や機種依存文字を使用しないでください。
- 標準出力データや標準エラー出力データは,エージェントホストに一時ファイルとして作成され,ジョブ実行終了時にマネージャーホストに転送されます。これらの一時ファイルは,マネージャーホストおよびエージェントホストのジョブ実行環境のワークディレクトリにそれぞれ次に示す名前で作成されます。なお,一時ファイルは,マネージャーホストではジョブ情報削除処理の実行時に,エージェントホストではジョブ終了時に自動的に削除されます。
- マネージャーホスト
- M_JPQSTDE_ジョブ番号
- M_JPQSTDO_ジョブ番号
- エージェントホスト
- A_JPQSTDE_*_ジョブ番号
- A_JPQSTDO_*_ジョブ番号
- 標準出力ファイルおよび標準エラー出力ファイルに関する注意事項に関する詳細は,マニュアル「JP1/Automatic Job Management System 3 設計ガイド(業務設計編)」またはマニュアル「JP1/Automatic Job Management System 2 設計・運用ガイド」の,標準出力ファイルおよび標準エラー出力ファイルの注意事項について記載している個所を参照してください。
(8) ジョブ制御クラスで,環境変数ファイルを指定する場合の注意事項
- 環境変数ファイル名にスクリプトファイル名や実行ファイル名と同じファイル名を指定しないでください。指定している場合,ジョブが異常終了することがあります。
- 環境変数ファイルに環境変数名を定義する前に,実行するホスト側のOSで有効な名称かどうか確認してください。
- 定義した環境変数名が,サブミットジョブを実行するエージェントホストで扱えない名称の場合は,環境変数ファイルに指定した内容は無効になり,エージェントホスト側で環境変数は設定されません。
- Windows環境の実行環境ホストで環境変数ファイルを定義する場合は,次の点に注意してください。
- 環境変数名は,行の先頭から記載してください。
- 環境変数を複数指定する場合は,「環境変数名=値」ごとに改行文字で区切ってください。
(例)
環境変数名1=ABCD<改行>
環境変数名2=EFGH<改行>
- 値は,「=」から改行コードまでを一つとします。
- 「AJS」で始まる環境変数(例:AJSxxxx(xxxxは任意の文字列))は,システムで予約しているため,大文字・小文字に関係なく,使用しないでください。
- 「JP1」で始まる環境変数(例:JP1xxxx(xxxxは任意の文字列))は,システムで予約しているため,大文字・小文字に関係なく,使用しないでください。
- 次の例のように値に環境変数を参照する指定はできません。
環境変数'xyz'には'%abc%'がそのまま文字列として設定されます。
(例)
abc=1
xyz=%abc%
環境変数の値を参照する指定をする場合は,実行するジョブのバッチファイルで指定してください。
- UNIX環境の実行環境ホストで環境変数ファイルを定義する場合は,次の点に注意してください。
- 環境変数名は,行の先頭から記載してください。
- 環境変数を複数指定する場合は,「環境変数名=値」ごとに改行文字で区切ってください。
(例)
環境変数名1=ABCD<改行>
環境変数名2=EFGH<改行>
- 値は,「=」から改行コードまでを一つとします。
- 「AJS」で始まる環境変数(例:AJSxxxx(xxxxは任意の文字列))は,システムで予約しているため,大文字・小文字に関係なく,使用しないでください。
- 「JP1」で始まる環境変数(例:JP1xxxx(xxxxは任意の文字列))は,システムで予約しているため,大文字・小文字に関係なく,使用しないでください。
- 次に示す環境変数は,JP1/AJSで値が設定されているため,環境変数ファイルの中に指定しないでください。
・HOME
・SHELL
・LANG
・LOGNAME
・PATH
- 次の例のように,値に環境変数を参照する指定はできません。
環境変数'xyz'には,'$abc'がそのまま文字列として設定されます。
(例)
abc=1
xyz=$abc
環境変数の値を参照する指定をする場合は,実行するジョブのスクリプトファイルで指定してください。
- 環境変数ファイルを指定する場合の注意事項に関する詳細は,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス1」,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス2」,またはマニュアル「JP1/Automatic Job Management System 2 コマンドリファレンス」の,環境変数ファイルを定義するときの注意事項について記載している個所を参照してください。
Copyright (C) 2009, 2011,Hitachi, Ltd.
Copyright (C) 2009, 2011,Hitachi Solutions, Ltd.