プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA Suiteヘルスケア統合ユーザーズ・ガイド
12c (12.1.3)
E59478-04
目次へ移動
目次

前
前へ
次
次へ

5 コールアウトの操作

この章では、Oracle SOA Suite for healthcare integrationでJavaコールアウトを作成および使用する方法について説明します。 Oracle SOA Suite for healthcare integrationでは、ヘルスケア・コンポジットの作成に必要なほとんどの機能を、Oracle Healthcareコンソールで使用できる様々な構成を使用して提供します。ただし、Javaコールアウトを使用して構成を拡張したり、Javaで記述された機能を追加できます。たとえば、Javaコールアウトを使用して、HL7メッセージ内の非標準デリミタをプログラムで処理できます。Javaコールアウトを使用してPGP暗号化/復号化ロジックを記述することもできます。

この章のトピックは、次のとおりです:

5.1 コールアウトの概要

コールアウトは、リモート取引パートナとは異なるメッセージ書式をホスト・エンドポイントで使用している環境で使用されます。

また、コールアウトは、メッセージのヘッダー情報をカスタマイズするためにも使用されます。

5.1.1 コールアウト・ライブラリJARファイルの作成

Oracle SOA Suite for healthcare integrationに用意されているコールアウトJARファイルがユーザーのニーズを十分に満たさない場合は、Oracle Fusion Middleware B2B Callout Java APIリファレンスに記載されている標準に従って、Oracle SOA Suite for healthcare integrationの外部で独自のコールアウトJARファイルを作成できます。外部JARファイルのディレクトリの場所は、「コールアウト・ディレクトリ」フィールドに指定できます。このフィールドにアクセスするには、図5-1に示すように、Oracle SOA Suite for healthcare integrationユーザー・インタフェースで、「管理」タブ→「設定」「ランタイム」リンクの順に選択します。独自のコールアウト用には、外部JARファイルを作成することをお薦めします。独自のコールアウトはb2b.jarにバンドルしないでください。

図5-1 コールアウト・ディレクトリの指定

図5-1の説明が続きます
「図5-1 コールアウト・ディレクトリの指定」の説明

注意:

MySampleCalloutは制限されたキーワードであるため使用しないでください。すでにb2b.jarにパッケージされています。

5.2 コールアウトのタイプ

Oracle SOA Suite for healthcare integrationでは次の2タイプのコールアウトが提供されます。

5.2.1 トランスポート・コールアウト

トランスポート・コールアウトはエンドポイントに関連付けられます。インバウンド・メッセージの場合、Oracle SOA Suite for healthcare integrationはリモート・エンドポイントからメッセージを受信するとすぐにトランスポート・コールアウトを呼び出します。アウトバウンド・メッセージの場合、Oracle SOA Suite for healthcare integrationはリモート・エンドポイントにメッセージを送信する直前にトランスポート・コールアウトを呼び出します。トランスポート・コールアウトは、図5-2で示されているようにエンドポイント構成で選択でき、サポートされている任意のプロトコル(一般的なTCPやMLLP 1.0など)で使用できます。

図5-2 トランスポート・コールアウト

図5-2の説明が続きます
「図5-2 トランスポート・コールアウト」の説明

トランスポート・コールアウトを使用すると、インバウンド・メッセージのトランスポート・カスタム・ヘッダーを抽出して、アウトバウンド・メッセージのトランスポート・ヘッダーを設定できます。例 - CUSTOM_HEADERプロパティの設定と取得では、コールアウトでCUSTOM_HEADERプロパティを設定および取得する方法を示します。

例 - CUSTOM_HEADERプロパティの設定と取得

import java.util.*;
import oracle.tip.b2b.callout.*;
import oracle.tip.b2b.callout.exception.*;

   public class SampleCallout implements Callout {
   public void execute(CalloutContext context,List input,List output)
               throws CalloutDomainException, CalloutSystemException {
     try {
      CalloutMessage cmIn = (CalloutMessage)input.get(0);
      String s =cmIn.getBodyAsString();

      //for getting the CUSTOM_HEADER
      Properties params =  (Properties)cmIn.getParameters();
      String customHeader = (String)params.get("CUSTOM_HEADER");

      //for setting the CUSTOM_HEADER
      CalloutMessage cmOut = new CalloutMessage(s);
      cmOut.setParameter("CUSTOM_HEADER", "your_value");
      output.add(cmOut);

      } catch (Exception e) {
      throw new CalloutDomainException(e);
      }
   }
}

トランスポート・コールアウトはPGP暗号化/復号化にも使用できます。Javaコールアウトでは、外部システムまたはエンドポイントに送信されるHL7メッセージを暗号化できます。受信者側で、Javaコールアウトは受信したデータを復号化できます。

詳細は、Oracle Fusion Middleware Oracle B2Bユーザーズ・ガイドのトランスポート・コールアウトを使用したカスタム・ヘッダーの抽出を参照してください。

トランスポート・コールアウトは、コールアウトの作成で説明するように、「デザイナ」「構成」タブで作成しますすべてのトランスポート・コールアウトは、エンドポイント・ページの「トランスポート・コールアウト」リストと「ドキュメント・コールアウト」リストの両方に表示され、選択できます。混乱を回避するには、トランスポート・コールアウトの作成時にタイプがわかる名前を付けて、「ドキュメント・コールアウト」リストから選択しないようにしてください。

5.2.2 ドキュメント・コールアウト

ドキュメント・コールアウトは、同じメッセージ書式を使用していないエンドポイント間で通信を行うために使用されます。たとえば、リモート・エンドポイントがHL7 2.3.1 XML書式のメッセージをホスト・エンドポイントに送信するとします。ホスト・エンドポイントはHL7 2.5 XML書式メッセージを使用しています。

2つの異なる書式間での通信を可能にするには、次のように2つのコールアウトを作成します。

  • たとえば、1つ目のコールアウトcallout_inboundによって、リモートのメッセージがホスト・エンドポイントで認識される書式に変換されます。これに対して、ホスト・エンドポイントは、HL7 2.5 XML書式の発注受入れメッセージを使用して、リクエスト・メッセージに応答します。

  • たとえば、2つ目のコールアウトcallout_outboundでは、HL7 2.5 XML書式がリモート・エンドポイントのためにHL7 2.3.1 XML書式のメッセージに戻されます。

これら2つのコールアウトを、次のように2つのエンドポイントに関連付けます。

  • callout_outboundは、アウトバウンド・メッセージのエンドポイント(メッセージ・リクエストを送信するエンドポイント)に関連付けます。

  • callout_inboundは、インバウンド・メッセージのエンドポイント(メッセージ受入れを応答するエンドポイント)に関連付けます。

ドキュメント定義はエンドポイントのコンポーネントであるため、コールアウトは特定のドキュメント定義に関連付けられます。

この例は、1つのコールアウトから1つのエンドポイントへの単純なアソシエーションを示しています。しかし、実際には、1つ以上のコールアウト・パラメータの値を変更することによって、同じコールアウトを多数の異なるエンドポイントにインクルードできます。パラメータを追加する場所については、図5-4を参照してください。パラメータ属性のリストは、表5-2を参照してください。

ドキュメント・コールアウトを使用して、HL7メッセージ内の非標準デリミタを処理することもできます。たとえば、受信者側システムが、healthcareコンポーネントが想定する"|"ではなく非標準の"^"をデリミタとして使用してHL7メッセージを送信した場合、非標準デリミタを標準デリミタに変換するJavaコールアウトを記述できます。

5.3 コールアウトの作成

コールアウトを作成するには、コールアウトの詳細(ライブラリ名と実装クラス名)およびコールアウト・パラメータを指定します。

図5-4は、コールアウトを示しています。

注意:

外部コールアウト・ライブラリJARファイルからコールアウトを作成するには、コールアウト・ライブラリJARファイルの作成を参照してください

図5-3 コールアウトの作成

図5-3の説明が続きます
「図5-3 コールアウトの作成」の説明

コールアウトを作成するには:

  1. Oracle SOA Suite for healthcare integrationユーザー・インタフェースにログオンします。
  2. 「デザイナ」タブ→「構成」「コールアウト」をクリックします。
  3. 「作成」ボタン(プラス記号)をクリックして、「コールアウトの作成」ダイアログを表示します。
  4. コールアウトの名前を入力します。

    (トランスポート・コールアウトを作成しているかどうかは、名前で示すことができます。)

  5. 表5-1の説明に従って、コールアウトの詳細を入力します。
  6. 「OK」をクリックします。

表5-1に、指定するコールアウトの詳細を示します。

表5-1 コールアウトの詳細

フィールド 説明

Jarファイル名

コールアウト実装クラスを含むライブラリ名を選択します。

注意: 独自のコールアウトJARファイルを1つ以上指定する場合は、ディレクトリの場所を指定する必要があります。「管理」リンクの「設定」の下の「ランタイム」リンクを使用します。Oracle Healthcareに付属するデフォルトのb2b.jarファイルのディレクトリの場所を指定する必要はありません。

コールアウト・ライブラリを環境間で移行するには、手動で行う必要があります。Oracle SOA Suite for healthcare integrationのエクスポートおよびインポート機能では、コールアウト・ライブラリJARは移行されません。

実装クラス

実装クラス名を選択します。

注意: Oracle SOA Suite for healthcare integrationには、XML間のトランスフォーメーションに使用できるXSLTCalloutImplという事前定義クラス・ファイルがあります。

注意:

エンドポイントにインクルードされているコールアウトは削除できません。

コールアウトを作成したら、図5-4に示すようにタイムアウト値とオプション・パラメータを指定して構成できます。

図5-4 コールアウトの構成

図5-4の説明が続きます
「図5-4 コールアウトの構成」の説明

コールアウト・パラメータは、グローバル変数の概念に似ており、特定のコールアウト使用にのみ適用可能なローカル値を指定できます。また、作成したコールアウト・パラメータは、すべてのコールアウト使用に適用可能なデフォルト値として指定できます。既存のコールアウトのコールアウト・パラメータを変更すると、そのコールアウトを使用するすべてのエンドポイントに影響を与えます。

表5-2に、オプションのコールアウト・パラメータ属性を示します。


表5-2 コールアウト・パラメータの属性

フィールド 説明

名前

パラメータ名を入力します。

タイプ

「整数」「浮動小数」「文字列」「ブール」「日付」の中から選択します。「日付」タイプの書式はMM/DD/YYYYです。

注意: タイプを変更すると、パラメータのデフォルト値が無効になることがあります。

値を入力します。「暗号化」「True」に設定されている場合、この値は暗号化されます。

必須

「True」または「False」を選択します。

暗号化

「True」または「False」を選択します。

説明

説明を入力します(オプション)。


作成したコールアウトは、エンドポイントへのインクルードが可能になります。詳細は、「エンドポイントへのコールアウトのインクルード」を参照してください。エンドポイントへのデプロイ後にコールアウトを変更した場合は、サーバーを再起動する必要があります。

5.4 エンドポイントへのコールアウトのインクルード

作成したコールアウトは、エンドポイントへのインクルードが可能になります。

コールアウトをエンドポイントにインクルードするには:

  1. 「構成」タブでエンドポイントをダブルクリックして開きます。
  2. 図5-5に示すように、メッセージのタイプ(インバウンドまたはアウトバウンド)に応じて、「送信」または「受信」のセクションの「ドキュメント・コールアウト」リストからコールアウト名を選択します。

    図5-5 エンドポイントとコールアウトの関連付け

    図5-5の説明が続きます
    「図5-5 エンドポイントとコールアウトの関連付け」の説明
  3. 「適用」をクリックします。