9.4.3 例: 会話モードによるトランザクションのコミット

次の図は、グローバル・トランザクションを行う階層構造の会話型接続を示しています。

図9-1 トランザクション・モードにおける接続階層構造


トランザクション・モードにおける接続階層構造の図

接続階層構造は、次の処理が行われることで構築されます。

  1. クライアント(プロセスA)は、tpbegin()tpconnect()を呼び出して、トランザクション・モードで接続を開始します。
  2. クライアントは、実行する従属サービスを呼び出します。
  3. 各従属サービスは、処理が完了すると、処理が成功したか失敗したか(TPEV_SVCSUCCまたはTPEV_SVCFAIL)を示す応答を階層構造を通じてトランザクションを開始したプロセスに送信します。この例では、トランザクションを開始したプロセスはクライアント(プロセスA)です。従属サービスは、応答の送信が終了すると、つまり未処理の応答がなくなると、tpreturn()を呼び出します。
  4. クライアント(プロセスA)は、すべての従属サービスが正常終了したかどうかを確認します。
    • すべての従属サービスが正常終了した場合、クライアントはtpcommit()を呼び出して、それらのサービスが実行した変更をコミットし、トランザクションを終了します。
    • 正常終了していない従属サービスがある場合、tpcommit()は成功しないので、クライアントはtpabort()を呼び出します。