[B2B] Implementing Oracle B2B 11g as a Hub

Oracle B2Bをハブとして使う方法についてご紹介します。B2B 11gから、特別な構成を施さなくてもハブとして利用することができます。

説明に使用するトレーディングパートナーは以下の通りです。
  • OracleServices : ハブのホスト
  • MarketInc : HL7 ADT_A01ドキュメントをOracleServicesの提供するサービスを介してRetailIncに送信するトレーディングパートナー
  • RetailInc :  HL7 ADT_A01ドキュメントをOracleServicesの提供するサービスを介してMarketIncから受信するトレーディングパートナー
つまり、メッセージは物理的には以下のように流れます。
MarketInc  <- ADT_A01 -> OracleServices <- ADT_A01 -> RetailInc
しかし、OracleServicesはハブなので、論理的には以下のように流れます。
MarketInc  <---------> RetailInc
MarketIncのB2Bサーバでは、MarketIncとRetailInc間のアグリーメントを構成しますが、OracleServicesがメッセージを待機するチャネルは一つだけです。

では、まずOracle B2BコンソールでHL7ドキュメントを作成しましょう。

以下の2個のドキュメント定義を作成します。特殊な設定はしません。通常の1対1の通信と同じように設定します。
  • ADT_A01_Def
  • ACK_A01-Def
ドキュメント設定が終了すると、トレーディングパートナーを設定します。リモートトレーディングパートナーの"MarketInc"の「ドキュメント」タブから、作成したドキュメントの定義を追加します。

MarketIncをADTの送信者、ACKの受信者として設定します。同様に、RetailIncではADTの受信者、ACKの送信者として設定します。ドキュメントを追加したら、チャネルを設定しトレーディングパートナーのプロファイル識別子を追加します。


次に、アグリーメントを設定します。まず、MarketIncに2つのアグリーメント(インバウンド用のADTとアウトバウンド用のACK)を設定します。RetailIncについても、2つのアグリーメント(インバウンドにACK、アウトバウンドにADT)を設定します。

アグリーメントの作成が完了したら保存し、検証後サーバにデプロイしましょう。デプロイが済めば、テストが可能になります。
メッセージフローをテストするには、ADT_A01メッセージを、OracleServicesの外部リスニングチャネルに配置する必要があります。今回の場合はファイルチャネルなのでディレクトリに配置しました。
ファイルがチャネルディレクトリから削除されると、Oracle B2Bのレポートへ移動し、以下のことを確認しましょう。
  1. MarketIncから受信したADTは正常に処理されている
  2. ADTに対するACKはMarketIncに返信されている
  3. ADTはRetailIncに転送されている
注:RetailIncも同様に設定しているなら、RetailIncからACKを返していることが確認できるはずです。

これで実装は終了です。

仕組み
単にインバウンドメッセージの受信者を識別しようとしているだけです。受信したメッセージのトレーディングパートナーをホストしていない場合、送信先に紐付くアウトバウンドのアグリーメントを探します。トレーディングパートナーが見つかれば、受信したメッセージを当該トレーディングパートナーへ転送します。

このサンプル実装の設定をこちらからダウンロードできます。この設定を使っている場合はチャネルエンドポイントの設定を変更することを忘れないでください。テストで使用したサンプルADTメッセージもこちらからダウンロードできます。

この実装に関連する質問がありましたら、OTN Oracle B2Bフォーラムでどんどん質問してください。

Forum: Integration - B2B


原文はこちら。
http://blogs.oracle.com/oracleb2bgurus/entry/implementing_oracle_b2b_11g_as

0 件のコメント:

コメントを投稿