外部トランザクションのコミットまたはロールバック

正常にコミットできなかった外部トランザクションをコミットまたはロールバックするグラフを作成できます。

この手順では、前述の推薦される方法に従っていることを前提としています。特にこの手順では、プロジェクトの workspace.prmファイルで空のOUTER_TRANSACTION_IDグローバル変数を指定し、プロジェクト内のコンポーネントでそのグローバル変数を使用していることを前提としています。

場合によっては、外部トランザクションを起動するグラフがトランザクションをコミットできないことがあります。たとえば、新しいグラフの作成中で、そのサブグラフをトラブルシューティングしているときに、コミットされていないトランザクションが発生することがあります。いずれかのサブグラフが失敗した場合、外部トランザクションを実行するグラフ全体もまた失敗することがあります。

一度に進行できるのは1つの外部トランザクションのみであるため、外部トランザクションを実行するグラフが失敗した場合、進行中の外部トランザクションがコミットされるまで、外部トランザクションを開始する他のグラフを実行することはできません。そのような場合は、外部トランザクションを手動でコミットできます。

一般的に、いずれかのグラフを実行しようとしてトランザクションに関連するエラーが発生したときは、すでに実行中の外部トランザクションを閉じることが必要になる場合があります。推薦される方法に従っている場合、外部トランザクションはtransactionというIDで実行しています。

ここでは、トランザクションWebサービスの操作を使用して実行中のトランザクションのコミットまたはロールバックのいずれかを行うグラフを作成する方法について説明します。
  • トランザクションのコミット・グラフでは、トランザクションを終了するためにcommitOuterTransaction操作を使用します。指定のID(通常はtransaction)を持つ外部トランザクションが進行中である場合で、この操作が成功したときは、Endecaデータ・ドメインによりこの外部トランザクションで加えられた索引に対する変更がコミットされ、このバージョンの索引に対する非修飾の問合せおよび更新の処理が開始されます。
  • トランザクションのロールバック・グラフは、外部トランザクションをロールバックするためにrollBackOuterTransaction操作を使用します。実行中の外部トランザクションが失敗した場合、この操作を使用して、以前にコミットされた索引のバージョンにロールバックし、トランザクションを停止します。

トランザクションのコミットまたはロールバック・グラフを実行する前に、データ・ドメイン・インスタンスが実行中であり、次の例のようにブラウザからURLコマンドを発行することによりトランザクションWebサービスが使用可能であることを確認します。Endeca Serverの正しいポート番号(デフォルトでは7770)およびEndecaデータ・ドメイン名(次の例ではbikes)を使用していることを確認します。

http://localhost:7770/ws/transaction/bikes?wsdl

トランザクションのコミット・グラフまたはトランザクションのロールバック・グラフを作成する手順は次のとおりです。

  1. 空のグラフを作成し、WebServiceClientコンポーネントを追加します。
  2. Web Service Clientを編集します。
    1. 前の図に示したように、「WSDL URL」フィールドでトランザクションWebサービスのURLを指定します。自分の実装のポートおよびデータ・ストアを忘れずに使用してください。
    2. 「操作名」フィールドで、「commitOuterTransaction」または「rollbackOuterTransaction」のいずれかを選択します。
    3. リクエスト構造の編集ダイアログを開き、「リクエストの生成」フィールドで、次のいずれかのコード・ブロックを入力します(注意: 次のコードでは、推薦される方法に従っていることを前提としています)。

      トランザクションのコミット・グラフの場合:

      <ns:request xmlns:ns="http://www.endeca.com/MDEX/transaction/1/0">
        <ns:commitOuterTransaction>
          <ns:OuterTransactionId>transaction</ns:OuterTransactionId>
        </ns:commitOuterTransaction>
      </ns:request>

      トランザクションのロールバック・グラフの場合:

      <ns:request xmlns:ns="http://www.endeca.com/MDEX/transaction/1/0">
        <ns:rollBackOuterTransaction>
          <ns:OuterTransactionId>transaction</ns:OuterTransactionId>
        </ns:rollBackOuterTransaction>
      </ns:request>
  3. グラフを保存します。