20.3.3 ユーザ連携型
「プロセス内連携型」,「プロセス間連携型」以外のトランザクションで業務IDを引き継ぐ場合は,ユーザ処理で業務IDを引き継ぎます。
(1) オリジナル業務ID
ユーザは,業務IDの引き継ぎ元トランザクションでee_rpc_get_bizid()/CBLEERPC('GETBIZID')を発行して業務IDを取得,その業務IDをDB,通信,メモリ(自プロセス時だけ)などで別トランザクションに通知し,別トランザクションでee_rpc_set_bizid()/CBLEERPC('SETBIZID')を発行してオリジナル業務IDを設定します。オリジナル業務IDを設定すると,カレント業務IDも同時に設定されます。設定した業務IDは,それ以降の「プロセス内連携型」および「プロセス間連携型」にも適用されます。そのため,トランザクションの早い段階で設定することを推奨します。
ee_rpc_set_bizid()/CBLEERPC('SETBIZID')によるオリジナル業務IDの設定は,同一トランザクション内で1回だけ発行可能です。複数回発行した場合は,2回目以降のee_rpc_set_bizid()/CBLEERPC('SETBIZID')がエラーリターンします。
指定した業務IDが正しいかどうかのチェックは行わないため,不正な業務IDを指定した場合は業務IDによるトランザクション紐づけができなくなります。
「プロセス内連携型」,「プロセス間連携型」で業務IDを引き継いだトランザクションに対しても,ユーザが業務IDを設定(上書き)することができます。
オリジナル業務IDはTASKTMおよびHiRDBと連携しています。
(2) カレント業務ID
ユーザは任意のトランザクションでee_rpc_get_bizid()/CBLEERPC('GETBIZID')を発行して業務IDを取得し,その業務情報をee_rpc_set_bizid()/CBLEERPC('SETBIZID')を発行することでカレント業務IDをして使用することができます。それ以降の「プロセス間連携型」に適用されます。
ee_rpc_set_bizid()/CBLEERPC('SETBIZID')は同一トランザクション内で複数回発行することができます。
カレント業務IDはTASKTMおよびHiRDBとは連携していません。
(3) ee_rpc_get_bizid()/CBLEERPC('GETBIZID')で取得する業務IDについて
本関数で取得できる業務IDとして,自トランザクションの業務IDと,引き継ぎ用の業務IDの2つがあり,オリジナル業務ID,カレント業務IDとの組み合わせによって関数引数で選択します。
別トランザクションに通知し,ee_rpc_set_bizid()/CBLEERPC('SETBIZID')で設定する場合は,引き継ぎ用の業務IDを使用します。保守などの目的で自トランザクションの業務IDをログなどに退避したい場合は,自トランザクションの業務IDを使用します。
引き継ぎ用の業務IDは,自トランザクション用の業務IDを比べて,次の点が異なります。
-
ネスト通番がインクリメントされます
-
ノード識別子が自TP1/EEのノード識別子