C MLLP上の同期リクエスト/リプライのサポート

この付録では、MLLP上での同期リクエストおよびリプライの詳細を示します。

この付録の内容は次のとおりです。

C.1 同期リクエスト/リプライの概要

リクエスト/リプライ通信は、リクエスト・メッセージが送られた場合にはレスポンス・メッセージが必要な同期呼出しです。一般的に、これはブロック化コールです。この機能によって、メッセージがコンポジットを通じてエンドポイントAからエンドポイントBに送信され、同じコンポジットまたは別のコンポジットを通じてエンドポイントBがエンドポイントAにACKを戻すリクエスト/リプライ・メッセージ・フローを実装できます。エンドポイントAは、ACKがエンドポイントAに返されるまで次のORMメッセージを受信しません。

同期リクエスト/リプライ機能は、どの時点においても1つのアプリが1つのインバウンド・エンドポイントを呼び出すように制限されています。つまり、同時呼出しはありません。

C.2 エンド・ツー・エンド・メッセージ・フロー

このトピックでは、同期リクエスト/リプライのエンド・ツー・エンド・メッセージ・フローの例を示します。

App A ---ORM--> SSHI -> composite -> SSHI ---ORM--> App B
App A <--ACK--- SSHI <- composite <- SSHI <--ACK--- App B

基本的に、SOA Suiteヘルスケア統合は、TCPソケットからORMを読み取り、ACKを同じソケットに書き込む必要があります。この使用例での違いはACKがアプリBから出ていることです。この使用例は、自動的に処理されるFunctional Acknowledgementをオフにすることで解決できます。コンポジットに処理させるようにします。同様にして、コンポジットはアプリBからACKを受け取ります。この使用例では、コンポジットには同期リクエスト/リプライ設定は必要ありません。

左上から始めます。

App A ---ORM--> SSHI -> composite

SSHIはORMを受信し、ORM xmlに変換し、他の情報とともにDOCTYPE_NAME、DOCTYPE_REVISION、TO_ENDPOINT/TO_PARTY、FROM_ENDPOINT/FROM_PARTY、MSG_ID情報を使用してコンポジットに渡します。これらのプロパティのリストについては、『Oracle B2Bの使用』SCAの正規化されたメッセージ・プロパティへのB2B IP_MESSAGE_TYPEのマッピングに関する項を参照してください。

この例では、FROM_ENDPOINT=EndpointAppAおよびMSG_ID=1234だとします。コンポジットでは、この情報またはORMコンテンツを使用して変換してアプリBに送ります。それを実行する際に、コンポジットはアプリBに送るために他のパラメータに加えてTO_ENDPOINT=EndpointAppBおよびMSG_ID=1234__EndpointAppBを設定します (この例では、元のMSG_IDに__EndpointAppBを追加します。これは、後で示される相関として使用されます)。これにより、最上部のセクションが完了します。

右下側を続行します。

composite <- SSHI <--ACK--- App B

ACKが入り、ORMに関連付けられ、このACKは自動的に処理される機能確認が「いいえ」に設定されているためコンポジットに渡されます。ACKはFROM_ENDPOINT=EndpointAppB、INREPLY_MSG_ID=1234__EndpointAppBに設定されています。コンポジットでは、元のメッセージIDを取得するために後続の修正を削除するロジックがあります。また、EndpointAppB with EndpointAppAを照合するビジネス・ルールを持つか、b2b_instancemessageビューを問い合せて元のメッセージID 1234で元のEndpointAppAベースを検索できます。

最終的にApp A <--ACK--- SSHI <-コンポジット・セグメント、TO_ENDPOINT=EndpointAppA、INREPLY_MSG_ID=1234およびその他の関連パラメータです。この最後のセグメントでACKは、ACK内の情報を使用せずに元のORMに相関されます。