2.3.3 トランザクション属性の指定
UAPの実行環境を設定するときには,UAPのプロセスをトランザクションとして稼働させるかどうかを指定しておきます。トランザクションとして稼働する指定をしたUAPプロセスを,トランザクション属性のUAPといいます。ファイルの更新など,トランザクション処理をするUAPには,トランザクション属性である指定をしておく必要があります。
(1) UAPをトランザクション属性とする方法
サーバUAPのプロセスをトランザクションブランチとしたい場合は,トランザクション属性のUAPであることを指定します。トランザクション属性を指定する方法を次に示します。
-
TP1/Server Baseの場合:
ユーザサービス定義のatomic_updateオペランドにYを指定
-
TP1/LiNKの場合:
ユーザサーバにトランザクション機能を使うことを指定
トランザクション属性を指定したUAPの処理がトランザクションとなるのは,次の場合です。
-
トランザクション属性を指定したUAPから,トランザクションの開始(dc_trn_begin関数)を呼び出して正常にリターンした場合
-
トランザクションとして処理しているほかのUAPから,dc_rpc_call関数でサービスを要求された場合
(2) UAPをトランザクション属性なしとする場合
演算だけのサーバUAPなど,処理をトランザクションとして保証しなくてもよいサーバUAPには,トランザクション属性なし(atomic_updateオペランドにN,またはトランザクション機能を使わないと指定)にしておきます。トランザクション属性なしと指定したサーバUAPは,グローバルトランザクションの処理とは無関係に,いつでもほかのクライアントUAPにサービスを提供できます。そのため,複数のクライアントUAPからサービスを要求された場合でも,同期点を取得する処理が完了するのを待たないで並行して処理できて,サービス要求待ちのオーバヘッドを減らせます。
RPCとトランザクション属性の関係を次の図に示します。
|
- 注※
-
グローバルトランザクションBでアクセスした資源の内容は,グローバルトランザクションBが開始する直前の状態に戻ります。グローバルトランザクションBがロールバックしたことは,同期点を取得する関数(この図の場合はdc_trn_unchained_commit関数)がエラーリターンすることで通知されます。