8.2 複数のREST APIコールに対するOracle-Tmm-Tx-Tokenの伝播
            
         アプリケーションのビジネス・ロジックが複数のAPIコールにまたがってトランザクションを完了する場合、複数のREST APIコールに対してOracle-Tmm-Tx-Tokenを伝播する必要があります。
               
この項では、アプリケーションのビジネス・ロジックが複数のAPIコールにまたがってトランザクションを完了するときに、Oracle_Tmm_Tx_Tokenトークンがどのように伝播されるかを説明します。YAMLファイルでtransactionTokenEnabledをtrueに設定し、アプリケーションのビジネス・ロジックがトランザクションを完了するために複数のAPIコールにまたがる場合、Oracle_Tmm_Tx_Tokenの値を取得し、ユーザーが行う後続のすべてのAPIコールのリクエスト・ヘッダーでそれを渡す必要があります。
                  
アプリケーションのビジネス・ロジックがトランザクション全体を完了するためにユーザーによる1つのAPIコールしか必要ない場合、これらのステップはスキップしてください。アプリケーションのビジネス・ロジックでユーザーによる1つのAPIコールしか必要がないときにOracle_Tmm_Tx_Tokenトークンがどのように伝播されるかを理解するには、「Oracle_Tmm_Tx_Tokenトランザクション・トークンについて」を参照してください。
                  
旅行予約アプリケーションについて考えてみますが、これにはユーザーによる2つのコールが必要です。最初のコールは、トランザクションを開始して、暫定的な予約を行います。アプリケーションでは、予約を確定または取り消すために、ユーザーによる2番目のAPIコールが必要です。このようなシナリオで、アプリケーションのビジネス・ロジックが1つのトランザクションを完了するためにユーザーによる複数のAPIコールにまたがるときは、ユーザーによる後続のAPIコールのリクエスト・ヘッダーにOracle_Tmm_Tx_Tokenを含めて、予約の確定または取消を行う必要があります。
                  
次のステップでは、MicroTxがOracle_Tmm_Tx_Tokenトランザクション・トークンを作成して最初のコールに伝播する方法と、ユーザーによる後続のAPIコールにOracle_Tmm_Tx_Tokenを含める方法について説明します。
                  
- ユーザーがトランザクションを開始すると、トランザクション・イニシエータ・サービスがMicroTxにリクエストを送信します。
- MicroTxはトランザクション・イニシエータに応答し、レスポンス・ヘッダーでOracle_Tmm_Tx_Tokenを返します。MicroTxライブラリは、指定した秘密キーと公開キーのペアに基づいてこのトークンを作成します。ユーザーが Oracle_Tmm_Tx_Tokenトランザクションを作成したり、リクエスト・ヘッダーで渡したりする必要はありません。MicroTxは、複数のヘッダーおよびトークンを使用して動作します。わかりやすくするために、この項では Oracle_Tmm_Tx_Tokenトランザクション・トークンについてのみ説明します。
- 参加側サービスからトランザクション・コーディネータへのコールを保護するため、MicroTxライブラリは、後続のすべてのコールのリクエスト・ヘッダーにOracle_Tmm_Tx_Tokenを渡します。
- MicroTxは、ユーザーからの最初のコールに応答する際に、レスポンス・ヘッダーでOracle_Tmm_Tx_Tokenを返します。レスポンス・ヘッダーからOracle_Tmm_Tx_Tokenの値を取得します。
- ユーザーが行う後続のすべてのAPIコールで、Oracle_Tmm_Tx_Tokenをリクエスト・ヘッダーに手動で含める必要があります。前のステップで取得した値を指定します。
こうすると確実にユーザーによる複数のAPIコールが結び付けられ、すべてのコールが1つのトランザクションの一部と見なされます。
親トピック: Sagaでのアプリケーションの開発