この章では、Oracle SOA Suite for healthcare integrationでJavaコールアウトを作成および使用する方法について説明します。Javaコールアウトは、ホストとリモートのエンドポイントの間で交換するメッセージの書式を変換します。通常、コールアウトを使用することで、XSLTスタイル・シートおよびJavaプログラムを起動できます。
この章には次のトピックが含まれます:
コールアウトは、リモート取引パートナとは異なるメッセージ書式をホスト・エンドポイントで使用している環境で使用されます。また、コールアウトは、メッセージのヘッダー情報をカスタマイズするためにも使用されます。
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
にバンドルしないでください。
注意: MySampleCalloutは制限されたキーワードであるため使用しないでください。すでにb2b.jar にパッケージされています。 |
Oracle SOA Suite for healthcare integrationでは次の2タイプのコールアウトが提供されます。
トランスポート・コールアウトはエンドポイントに関連付けられます。インバウンド・メッセージの場合、Oracle SOA Suite for healthcare integrationはリモート・エンドポイントからメッセージを受信するとすぐにトランスポート・コールアウトを呼び出します。アウトバウンド・メッセージの場合、Oracle SOA Suite for healthcare integrationはリモート・エンドポイントにメッセージを送信する直前にトランスポート・コールアウトを呼び出します。トランスポート・コールアウトは、図5-2で示されているようにエンドポイント構成で選択でき、サポートされている任意のプロトコル(一般的なTCPやMLLP 1.0など)で使用できます。
トランスポート・コールアウトを使用すると、インバウンド・メッセージのトランスポート・カスタム・ヘッダーを抽出して、アウトバウンド・メッセージのトランスポート・ヘッダーを設定できます。例5-1では、コールアウトでCUSTOM_HEADER
プロパティを設定および取得する方法を示します。
例5-1 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);
}
}
}
詳細は、Oracle Fusion Middleware Oracle B2Bユーザーズ・ガイドのトランスポート・コールアウトを使用したカスタム・ヘッダーの抽出を参照してください。
5.3項「コールアウトの作成」の説明のとおり、トランスポート・コールアウトは「デザイナ」の「構成」タブから作成します。すべてのトランスポート・コールアウトは、エンドポイント・ページの「トランスポート・コールアウト」リストと「ドキュメント・コールアウト」リストの両方に表示され、選択できます。混乱を回避するには、トランスポート・コールアウトの作成時にタイプがわかる名前を付けて、「ドキュメント・コールアウト」リストから選択しないようにしてください。
ドキュメント・コールアウトは、同じメッセージ書式を使用していないエンドポイント間で通信を行うために使用されます。たとえば、リモート・エンドポイントが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を参照してください。
コールアウトを作成するには、図5-4に示すように、コールアウトの詳細(ライブラリ名と実装クラス名)を指定します。
コールアウトを作成するには:
Oracle SOA Suite for healthcare integrationユーザー・インタフェースにログオンします。
「デザイナ」タブ→「構成」→「コールアウト」をクリックします。
「作成」アイコン(プラス記号)をクリックして、「コールアウトの作成」ダイアログを表示します。
コールアウトの名前を入力します。
(トランスポート・コールアウトを作成しているかどうかは、名前で示すことができます。)
表5-1の説明に従って、コールアウトの詳細を入力します。
「OK」をクリックします。
表5-1に、指定するコールアウトの詳細を示します。
表5-1 コールアウトの詳細
注意: エンドポイントにインクルードされているコールアウトは削除できません。 |
コールアウトを作成したら、図5-4に示すようにタイムアウト値とオプション・パラメータを指定して構成できます。
コールアウト・パラメータは、グローバル変数の概念に似ており、特定のコールアウト使用にのみ適用可能なローカル値を指定できます。また、作成したコールアウト・パラメータは、すべてのコールアウト使用に適用可能なデフォルト値として指定できます。既存のコールアウトのコールアウト・パラメータを変更すると、そのコールアウトを使用するすべてのエンドポイントに影響を与えます。
表5-2に、オプションのコールアウト・パラメータ属性を示します。
表5-2 コールアウト・パラメータの属性
フィールド | 説明 |
---|---|
名前 |
パラメータ名を入力します。 |
タイプ |
「整数」、「浮動小数」、「文字列」、「ブール」、「日付」の中から選択します。「日付」タイプの書式はMM/DD/YYYYです。 注意: タイプを変更すると、パラメータのデフォルト値が無効になることがあります。 |
値 |
値を入力します。「暗号化」が「True」に設定されている場合、この値は暗号化されます。 |
必須 |
「True」または「False」を選択します。 |
暗号化 |
「True」または「False」を選択します。 |
説明 |
説明を入力します(オプション)。 |
作成したコールアウトは、エンドポイントへのインクルードが可能になります。詳細は、5.4項「エンドポイントへのコールアウトのインクルード」を参照してください。エンドポイントへのデプロイ後にコールアウトを変更した場合は、サーバーを再起動する必要があります。
作成したコールアウトは、エンドポイントへのインクルードが可能になります。
コールアウトをエンドポイントにインクルードするには:
「構成」タブでエンドポイントをダブルクリックして開きます。
図5-5に示すように、メッセージのタイプ(インバウンドまたはアウトバウンド)に応じて、「送信」または「受信」のセクションの「ドキュメント・コールアウト」リストからコールアウト名を選択します。
「適用」をクリックします。