ワークユニット出口プログラムは、以下の形式で作成します。
注意
ワークユニット出口プログラムは、C言語で作成する必要があります。
■形式
long 出口名 ( char *sysname, char *wuname, char *username, long mode, long user_data1, long user_data2 ) |
■パラメタ
パラメタ | 設定内容 | 入出力 |
---|---|---|
char *sysname | システム名(注1) | 入力値 |
char *wuname | ワークユニット名 | 入力値 |
char *username | ワークユニット起動ユーザ名 | 入力値 |
long mode | 状態遷移モード | 入力値 |
long *userdate1 | 復帰情報1設定領域アドレス | 入出力値(注2) |
long *userdate2 | 復帰情報2設定領域 | 入出力値(注2) |
注1)“default”が設定されます。
注2)状態遷移モードが“1”(ワークユニット起動)の場合、出口プログラムで復帰情報を設定します。それ以外の状態遷移モードでは、ワークユニット起動時に設定された復帰情報が出口プログラムの入力値として設定されます。
■状態遷移モード
状態遷移モードでは、ワークユニット出口の呼出し契機を通知します。以下のどれかが設定されます。
状態 | 設定値 | 呼出し契機 |
---|---|---|
ワークユニット起動 | 1 | ワークユニット起動時 |
ワークユニット通常停止 | 2 | ワークユニット通常停止時 |
ワークユニット強制停止 | 3 |
|
ワークユニット異常終了 | 4 | ワークユニット異常終了時 |
ワークユニット起動失敗 | 5 | ワークユニット起動失敗時 |
ワークユニット出口は、各呼出し契機で同じ出口プログラムが呼び出され、状態遷移モードによって呼出し契機を通知します。したがって、出口プログラムでは、必要に応じて状態遷移モードごとに処理を作成し、状態遷移モードに設定されている値により呼出し契機を判断して、処理を振り分けてください。
■復帰情報1、復帰情報2
ワークユニット起動時のユーザ情報を設定する領域です。ワークユニット起動時の情報を、その他の状態で呼び出された場合にもちまわることができます。
状態遷移モードが“ワークユニット起動”の場合に、ワークユニット出口の出力値として復帰情報を設定してください。その他のモードの場合は、ワークユニット起動時に設定された復帰情報が、入力値として設定されます。
これにより、ワークユニット起動時の復帰情報を、その他の呼出し契機に使用することができます。また、ワークユニット起動時に設定された復帰情報は、プロセス回収出口にも入力値として設定されます。さらに、ワークユニットプロセス情報通知機能を使用して、サーバアプリケーションプログラムに情報を通知することができます。
ワークユニットプロセス情報通知機能については、“Interstage Business Application Server 運用ガイド(アプリケーション連携実行基盤編)”の“ワークユニットプロセス情報通知機能”を参照してください。
◆復帰値
復帰値 | 意味 |
---|---|
0 | 正常復帰 |
0以外 | 異常復帰 |
出口プログラムが正常復帰する場合は復帰値に0を設定し、異常の場合は0以外を設定してください。
ワークユニット起動時にワークユニット出口が異常復帰(復帰値が0以外で復帰)した場合、メッセージが出力され、ワークユニットの起動に失敗します。
また、ワークユニット起動以外の契機で呼び出されたワークユニット出口が異常復帰した場合は、メッセージだけが出力され、動作異常にはなりません。
■標準出力およびエラー出力
ワークユニット出口プログラムが動作するときのカレントディレクトリは、以下のような構成になっています。
カレントディレクトリ:xxx/yyy/zzz_exit xxx:ワークユニット定義で指定されたディレクトリ yyy:当該ワークユニット名 zzz:ワークユニット出口プログラムの実行プロセスid |
カレントディレクトリ配下に、標準出力用のファイルと標準エラー出力用のファイルが設定されています。
標準出力には、stdoutファイルが割り当てられています。ワークユニット出口プログラムで標準出力にデータを出力した場合に、出力先として使用されます。
標準エラー出力には、stderrファイルが割り当てられています。ワークユニット出口プログラムで標準エラー出力にデータを出力した場合に、出力先として使用されます。
■記述例
ワークユニット出口プログラムの記述例を以下に示します。
long wuexit( char *sysname, char *wuname, char *username, long mode, long *userdata1, long *userdata2) { long data1, data2; /* 状態遷移モードごとに処理を振り分ける */ switch(mode){ case 1: /* ワークユニット起動時の処理を記述 */ /* 復帰情報を設定して復帰 */ *userdata1 = data1; *userdata2 = data2; break; case 2: /* 起動時の情報の取出し */ data1 = *userdata1; data2 = *userdata2; /* ワークユニット通常停止時の処理を記述 */ break; case 3: /* 起動時の情報の取出し */ data1 = *userdata1; data2 = *userdata2; /* ワークユニット強制停止時の処理を記述 */ break; case 4: /* 起動時の情報の取出し */ data1 = *userdata1; data2 = *userdata2; /* ワークユニット異常終了時の処理を記述 */ break; case 5: /* 起動時の情報の取出し */ data1 = *userdata1; data2 = *userdata2; /* ワークユニット起動失敗時の処理を記述 */ break; } return(0); } |