この章では、Oracle SOA Suite for healthcare integrationにおいて、エンドポイント間でWebサービス・ベースのメッセージ交換(通常はSOAPベース)を有効化する方法について説明します。
この章の内容は次のとおりです。
Oracle Healthcareでは、Webサービス(SOAP)ベースのメッセージをエンドポイント間で交換できます。インバウンドおよびアウトバウンド方向の両方でメッセージを交換できます。ただし、現在これがサポートされているのは、HTTP経由のSOAP 1.1メッセージのみです。
Webサービス機能により、エンドポイントでのメッセージの送受信が可能になるだけでなく、プロトコル実装として階層化され、レポートや追跡、監査など、その他の一般的な機能も使用できるようになります。
多くの企業が、Healthcare固有のプロトコルに加え、Webサービスを使用したエンドポイント・ファイルの転送やメッセージ交換の統合に、要件を設けるようになってきています。
SOAPベース・メッセージは、インバウンドおよびアウトバウンド方向の両方でサポートされます。要件に応じたカスタマイズが可能なWeb Service Definition Language (WSDL)ファイルを作成または更新する必要があります。
アウトバウンドのSOAPベース・メッセージの交換を可能にするには、次のタスクを実行する必要があります。
1つ目のタスクでは、Webサービスを登録してメッセージを交換するために必要な、WSDLファイルをアップロードする必要があります。次のいずれかの方法でWSDLをアップロードできます。
インラインWSDL - XSD情報がWSDL自体に定義されている通常のWSDLファイル
WSDLファイルとXSDファイルが含まれているZIPファイル
複数のWSDLファイルとXSDファイルが含まれているZIPファイル
WSDLをアップロードするには:
Oracle SOA Suite for healthcare integrationコンソール(http://<hostname>:<port>/healthcare)にログインします(ここで、hostnameは、Oracle SOA Suiteがホストされているコンピュータの名前で、portは、SSL以外の接続の場合には、通常、8001
です)。
「デザイナ」タブ、「構成」タブの順にクリックします。
「WSDL」フォルダをクリックして選択します。
+アイコン(作成)をクリックします。「WSDLの作成」ダイアログが表示されます。
TransmitWSDLなど、WSDLの名前を指定します。名前に空白または特殊文字が使用されていないことを確認します。
「定義ファイル」フィールドで、「参照」ボタンをクリックして、アップロードするWSDLを選択します。この例では、選択されているWSDLはTransmitDoc2way.wsdlです。「OK」をクリックして、プロセスを完了します。
図15-1に、新しく作成されたWSDLを示します。
確認ダイアログで「保存」、「OK」の順にクリックします。
次のタスクでは、アウトバウンド・フロー用のドキュメントを作成します。現在、サポートされているドキュメント・タイプはカスタムのみであることに注意してください。
カスタム・ドキュメントを作成するには:
3.4項「ドキュメント定義の作成」に指定されているようにドキュメント定義を作成します。次のように指定します。
ドキュメント・バージョン - 1.0
ドキュメント・タイプ - TransmitDocumentRequest
ドキュメント定義 - TransmitDocumentDef
「WSDLの使用」を選択します。
関連するWSDLアーティファクトを選択します(この場合はTransmitWSDL)。
必要なWSDLメッセージを選択します(図15-2に示すように、この場合は、TransmitDocumentsRequestMessageです)。
「適用」をクリックします。
カスタム・ドキュメントを作成したら、エンドポイントを作成し、そのエンドポイントをカスタム・ドキュメントに関連付ける必要があります。
エンドポイントを作成するには:
Oracle Healthcareコンソールで、「デザイナ」タブの「構成」の下にある「エンドポイント」フォルダをクリックします。
+アイコン(作成)をクリックします。「エンドポイントの作成」ダイアログ・ボックスが表示されます。
「トランスポート・プロトコル」リストから、WS-HTTPを選択します。
エンドポイントの名前を指定します。
同じ接続を使用してドキュメントの送受信を可能にする場合は、「同期」チェック・ボックスを選択します。この場合、チェック・ボックスはそのままにします。
「方向」リストから「アウトバウンド」を選択します。
「WSDL」リストから必要なWSDLを選択します。この場合は、タスク1でアップロードしたTransmitWSDLを選択します。
注意: カスタムWSDLをアップロードして使用しない場合は、「汎用SOAPの使用」チェック・ボックスを選択できます。これにより、任意のXMLドキュメントをSOAP経由で送信できるようになります。Oracle SOA Suite for healthcare integrationには、「汎用SOAPの使用」を選択する場合に使用する、事前シード済の汎用WSDLが用意されています。 |
使用可能なサービス(この場合はTransmitsDocumentService)を選択します
使用可能なポート(TransmitDocuments2WayPort)を選択します
SOAPアクションを選択します(「WSDL」から選択可能)
注意: 前述のパラメータに、手動で文字列値を指定することも可能です。サービス名を手動で指定する場合は、次の形式でないと、検証エラーが発生します。 {namespace}ServiceName |
「URL」フィールドに、サーバーがリスニングするURLを入力します。
エンドポイント構成は、図15-3のようになります。
「OK」をクリックします。
注意: アップロードしたWSDLがエンドポイントによって使用されると、そのWSDLファイルは更新できなくなります。 |
TransmitOutboundページの「送信するドキュメント」セクションで、+ (追加)アイコンをクリックして、「ドキュメント」ウィンドウを表示します。
必要なカスタム・ドキュメント定義(TransmitDocumentDef)に移動してそれを選択し、「OK」をクリックして、そのドキュメントをエンドポイントに関連付けます。
「トランスポートの詳細」ボタンをクリックして、「トランスポート・プロトコル・パラメータ」ダイアログ・ボックスを表示します。ここでは、次のことが可能です。
必要な場合は、追加のHTTPヘッダーを入力します。
交換するメッセージの中にWS Addressingヘッダーを含めない場合は、「WS Addressingヘッダーの省略」を選択します。
Oracle Healthcare Webサービスのアウトバウンド・チャネルで、To、Doctype、DocRevisionなどのデフォルトのSOAPヘッダーを送信しないようにする場合は、「OracleのデフォルトSOAPヘッダーの省略」を選択します(図15-4を参照)。
必要な場合は、「詳細」タブで、追加のSOAPヘッダーを入力します。
「OK」をクリックして、エンドポイント・ページに戻ります。
図15-5に示すように、「有効」チェック・ボックスを選択し、「適用」をクリックして、エンドポイントをアクティブ化します。
インバウンドのSOAPベース・メッセージを交換するには、次のタスクを実行する必要があります。
このタスクは、アウトバウンドの「タスク1 WSDLのアップロード」と同じです。
このタスクは、アウトバウンドの「タスク2 ドキュメントの作成」と同じです。
カスタム・ドキュメントを作成したら、エンドポイントを作成し、そのエンドポイントをカスタム・ドキュメントに関連付ける必要があります。
このタスクは、アウトバウンドの「タスク3 エンドポイントの作成」に似ていますが、次の点が異なります。
「エンドポイントの作成」ダイアログ・ボックスで、エンドポイント名に「TransmitInbound
」を指定し、方向に「インバウンド」を選択します。
TransmitInboundページで、「受信するドキュメント」セクションにカスタム・ドキュメントを追加します。
注意: リスニング・メッセージにWebサービスが登録されていることを確認するには、次のURLにアクセスし、ユーザー名とパスワードを指定してログインし、登録済のWebサービスのリストに該当のWebサービスがあることを確認します。 http:<host>:<port>/b2b/services Oracle Weblogic Serverコンソールにユーザーを作成する必要があります(パスワードも指定してください)。Oracle Weblogic Serverコンソールでのユーザー作成の詳細は、次のリンクにアクセスしてください。
Webサービスは、次の書式でリストされています。 ws/WebService 次の図に示されている、それぞれの「WSDL」リンクをクリックすると、特定のサービスからWSDLをダウンロードできます。 図ws_servicelist.gifの説明 |
Oracle Healthcareでは、アウトバウンドのWebサービス・ベース・メッセージの一部として、カスタムSOAPヘッダーを送信できます。
アウトバウンドJMSチャネルの場合、次の例に示すように、送信者取引パートナは、複数レベルのカスタムSOAPヘッダーを送信できます。
<CustomSOAPHeader xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <hello xmlns="http://xmlns.oracle1.com/soa1/generic/soap"> <name xmlns="http://MY_NAME_SPACE"> <firstname>John</firstname> <lastname>Doe</lastname> </name> </hello> </CustomSOAPHeader>
アウトバウンド・ファブリックの場合、次の例に示すように、送信者は複数レベルのカスタム・ヘッダーを送信できます。
<bpelx:inputProperty name="hc.customSOAPHeaders" expression="'<CustomSOAPHeader xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <hello xmlns="http://xmlns.oracle1.com/soa1/generic/soap"> <name xmlns="http://MY_NAME_SPACE"> <firstname>John</firstname> <lastname>Doe</lastname> </name> </hello> </CustomSOAPHeader>
この項では、Webサービスまたは汎用SOAPを使用する場合の、同期されたリクエスト/リプライ・シナリオについて説明します。
この項の内容は次のとおりです。
コンポジットとのアウトバウンド同期の場合:
Webサービス: 同期を一方向にするか、リクエスト/リプライ・パターンを使用するかの決定は、コンポジットに依存します。soapAction
が指定されている場合は、HTTP soapAction
ヘッダーを上書きする場合にのみ使用されます。
コンポジットとのインバウンド同期の場合:
Webサービス: 一方向か、WSDLに指定されたリクエスト/リプライ操作かの決定に、HTTPヘッダーのsoapAction
が使用されます。ペイロードが応答しない場合は、リクエスト/リプライでエラーがレポートされます。
JMSキューとのアウトバウンド同期の場合:
Webサービス: カスタムWSDLの場合は、一方向か、WSDLに指定されたリクエスト/リプライ操作かの決定に、(バックエンドから指定されたか、エンドポイントに構成されている)soapAction
が使用されます。リプライは、内部デリバリ・チャネル構成を使用してバックエンドに送信されます。汎用SOAP WSDLの場合は、エンドポイントのトランスポート・パラメータによって、一方向かリクエスト/リプライ操作かが決定されます。
Webサービス: 一方向か、WSDLに指定されたリクエスト/リプライ操作かの決定に、HTTPヘッダーのsoapAction
が使用されます。「同期」の場合は、バックエンドに送信されるOracle SOA Suite for healthcare integrationのコールアウトに、リプライを生成する必要があります。汎用SOAP WSDLの場合は、エンドポイントに指定されているトランスポート・パラメータに基づいて決定されます。