この章では、アウトバウンドWebサービスおよび変換WebサービスなどのOracle B2B Webサービスについて説明します。また、Webサービスを保護する方法について説明します。
この章では、次の項目について説明します。
Oracle B2Bでは、Oracle JDeveloperでドキュメント詳細を取得するためのWebサービスが公開されています。これらはパートナに直接接続しているWebサービスであり、ユーザーはOracle B2Bにメッセージを送信できます。同様に、Oracle B2Bでは、Oracle B2Bにデプロイされたアグリーメントに基づいて、メッセージを受信し、処理してパートナに送信するために、バックエンドに対して公開されたWebサービスが提供されています。
Oracle B2B Webサービスを使用するには、Oracle JDeveloperでアプリケーション内にWebサービス・プロキシを作成します。WebサービスのWebサービス記述言語(WSDL)ファイルは、Oracle B2Bがインストールされているシステム上の次のURLで入手できます。
http://host_name:port_number/b2b/services/
URIを指定せず、サーブレットのURLパターンのみを接尾辞として付けたURLをWebブラウザに入力すると、ダウンロードできるWSDLのリストが表示されます(セキュリティ制限はありません)。
Oracle B2Bには、次のWebサービスAPIがあります。
アウトバウンドWebサービスAPIでは、組込み内部リスニング・チャネルが提供されます。詳細は、第21.2項 アウトバウンドWebサービスの使用を参照してください。
変換WebサービスAPIが、HL7、EDIなどのネイティブ・ペイロードをXML書式に変換するために公開されています。詳細は、第21.3項 変換Webサービスの使用を参照してください。
問合せAPIは、Oracle B2Bの構成済の詳細を取得するのに役立ちます。詳細は、第21.4項 問合せAPIの使用を参照してください。
Oracle B2B Webサービスのセキュリティ
Oracle Web Services Managerを使用すると、Webサービスのランタイムとフローに影響を及ぼすことなく、様々なタイプのポリシーを統合できます。また、サービス・インフラストラクチャのセキュリティが提供されます。署名、暗号化/復号化、認証、認可、監査およびレポートが、このツールキットによって提供されます。したがって、このWebサービス実装は、セキュリティ、署名および暗号化の詳細には対応しません。Webサービス・メソッドには、セキュリティの詳細ではなく、ビジネス・ロジックが保持されます。Oracle Weblogic Serverコンソールにおいて適用されるポリシーに基づき、Webサービス・クライアントでは、セキュリティの詳細をWebサービス・ポートと関連付ける必要があります。
アウトバウンドWebサービスは組込み内部リスニング・チャネルとして公開され、メッセージはこのサービスにエンキューされます。soap:body
内の詳細およびヘッダーに基づいて、アグリーメント識別が行われ、メッセージはパートナにルーティングされます。
表21-1、表21-2および表21-3では、アウトバウンドWebサービスのリクエスト、レスポンスおよびフォルト通知メッセージのパラメータについて説明します。
表21-1 アウトバウンドWebサービス・リクエストのパラメータ
ヘッダー | データ型 | 説明 | 必須 |
---|---|---|---|
from |
文字列 |
ホスト名または識別値 |
いいえ |
to |
文字列 |
取引パートナ名または識別値 |
はい |
@type |
文字列 例: |
識別タイプ |
いいえ |
documentProtocolVersion |
文字列 例: |
ドキュメント・タイプ・バージョン |
はい脚注1 |
documentTypeName |
文字列 例: |
ドキュメント・タイプ名 |
|
action |
文字列 例: |
ebMSアクション名 |
|
service |
文字列 例: |
ebMSサービス名 |
|
serviceType |
文字列 例: デフォルト: |
ebMSサービス・タイプ |
|
messageId |
文字列 |
このパラメータで指定するメッセージIDは、 |
いいえ |
replyToMessageId |
文字列 例: |
この応答の宛先メッセージのメッセージIDをコラボレーションIDとともに保持します。 |
いいえ |
messageType |
文字列 |
メッセージのタイプ |
いいえ |
encoding |
文字列 例: デフォルト: |
エンコーディング形式 |
いいえ |
payload |
Xsd:anyType |
ペイロードを保持します |
はい |
attachment |
Xsd:anyType |
添付ファイル(存在する場合) |
いいえ |
脚注1 documentProtocolVersion
およびdocumentTypeName
が存在するか、action
、service
およびserviceType
が存在する必要があります。カスタムの一般的なケースではaction
のみが必要であり、その他は必要ありません。
変換Webサービスでは、HL7、EDIなどのXMLペイロードがネイティブ・フォーマットに変換され、同様にネイティブ・ドキュメントがXMLに変換されます。
注意: 非EDI XMLが送信されると、Oracle B2Bサーバーでアグリーメントが一致する場合には、変換された内容に、同じペイロードがそのまま含められます。EDI XMLが変換のために送信され、かつ、バッチの一部としてドキュメントが含まれている場合、変換されたレスポンスではペイロードは変換されません。 |
注意: 変換Webサービス・リクエストは、レポートおよびメトリックの他のアウトバウンド・リクエストと区別されません。 |
注意: TranslateService Webサービスは非推奨になっています。 |
このサービスは、指定されたXMLペイロードをネイティブ・ドキュメントに変換します。完全なエンベロープまたはトランザクション・セットのみの2つのレベルで変換できます。
この変換は、完全なネイティブ・ドキュメントを生成します。
前提条件:
有効なアウトバウンド・アグリーメントがデプロイ済であること。
取引パートナ名、ドキュメント・タイプ名、ドキュメント・プロトコル・バージョンおよびペイロードはサービスを起動するために必須です。
サポートされているプロトコル:
EDI X12
EDI EDIFACT
HL7
この変換は、返されるネイティブ・コンテンツ内にトランザクション・セットのみ生成します。
前提条件:
サービスは、Oracle B2Bでドキュメント・タイプとリビジョンが構成されていることを想定しています。
transactionSetOnly
要素をtrue
に設定する必要があります。サービス起動リクエストで取引パートナ名を指定しないでください。
transactionSetOnly
、documentTypeName
、documentProtocolVersion
およびpayload
の各要素はサービスを起動するために必須です。
サポートされているプロトコル:
EDI X12
このサービスは、指定されたネイティブ・ドキュメントをXMLに変換します。完全なネイティブ・ドキュメントまたはトランザクション・セットのみのどちらかを変換できます。
このサービスは、完全なネイティブ・ドキュメントをXMLに変換します。
前提条件:
有効なインバウンド・アグリーメントがデプロイ済であること。
取引パートナ名およびペイロードはサービスを起動するために必須です。
サポートされているプロトコル:
EDI X12
EDI EDIFACT
HL7
このサービスは、指定されたトランザクション・セットのXMLコンテンツを生成します。
前提条件およびサポートされているプロトコルは、「XMLToNativeService」と同じです。
表21-4に、変換Webサービス・メッセージ・パラメータを示します。
Table 21-4 変換Webサービスのパラメータ
ヘッダー | データ型 | 説明 | 必須 |
---|---|---|---|
transactionSetOnly |
ブール |
変換対象がトランザクション・セットのみかどうか |
|
TPName |
文字列 |
取引パートナ名 |
|
documentTypeName |
文字列 |
ドキュメント・タイプ名 |
はい |
documentProtocolVersion |
文字列 |
ドキュメント・プロトコル・バージョン |
はい |
encoding |
文字列 |
エンコーディング・タイプ |
|
payload |
文字列 |
実際のペイロード |
はい |
FAonError |
文字列 |
エラーの場合のみFAを送信するかどうか |
|
追加ヘッダー |
|||
HeaderName |
文字列 |
任意の追加ヘッダー名 |
はい |
HeaderValue |
文字列 |
任意の追加ヘッダー値 |
はい |
ElementDelimiters |
文字列 |
||
Segment |
文字列 |
セグメント・デリミタ |
|
要素 |
文字列 |
要素デリミタ |
|
Subelement |
文字列 |
サブ要素デリミタ |
|
ReplacementCharacter |
文字列 |
置換文字 |
|
RepeatingSeparator |
文字列 |
繰返しセパレータ |
問合せAPIでは、Oracle B2Bから構成済の詳細が取得され、アプリケーションと共有されます。
アプリケーションからのメッセージ伝送を開始する前に、特定のパラメータに対してヘルス・チェック・リクエストが行われます。このチェックによって、構成が存在するかどうか、およびアクティブな構成の数がわかります。構成が見つからない場合、アプリケーションでは、B2Bで構成が見つからないというメッセージを出力して、レイヤー内のメッセージ・フローを停止できます。
次のAPIが提供されています。
Is Trading Partner Agreement Setup
は、特定の入力に対してアグリーメントが見つかった場合、trueを返します。パラメータの詳細は、第21.4.1項 Is Trading Partner Agreement Setupのパラメータを参照してください。
Get Trading Partner Agreement Information
は、アグリーメントの詳細を返します。パラメータの詳細は、第21.4.2項 Get Trading Partner Agreement Informationのパラメータを参照してください。
GetParameterService
は、トランスポート・バインディング情報を戻します。第21.4.3項「GetParameterServiceパラメータ」を参照してください。
表21-5 Is Trading Partner Agreement Setupのリクエストのパラメータ
ヘッダー | データ型 | 説明 | 必須 |
---|---|---|---|
from |
文字列 |
ホスト名または識別値 |
いいえ |
to |
文字列 |
取引パートナ名または識別値 |
いいえ |
@type |
文字列 例: |
識別タイプ |
いいえ |
document |
文字列 例: |
送信される内部アプリケーション・ドキュメントまたはAIA EBOの名前 |
はい |
action |
文字列 例: |
取引パートナとの特定の相互作用を識別するサブ分類 |
はい |
表21-8 Get Trading Partner Agreement Informationのリクエストのパラメータ
ヘッダー | データ型 | 説明 | 必須 |
---|---|---|---|
from |
文字列 |
ホスト名または識別値 |
いいえ |
to |
文字列 |
取引パートナ名または識別値 |
いいえ |
@type |
文字列 例: |
識別タイプ |
いいえ |
document |
文字列 例: |
送信される内部アプリケーション・ドキュメントまたはAIA EBOの名前 |
いいえ |
action |
文字列 例: |
取引パートナとの特定の相互作用を識別するサブ分類 |
いいえ |
表21-9 Get Trading Partner Agreement Informationのレスポンスのパラメータ
ヘッダー | データ型 | 説明 | 必須 |
---|---|---|---|
AgreementID |
文字列 |
一致したアグリーメントの一意のアグリーメントID |
はい |
B2BDocumentDef |
文字列 |
Oracle B2Bドキュメント・タイプの作成に使用されるOracle B2B内のドキュメント定義 |
はい |
B2BDocumentType |
文字列 |
リクエストされたアプリケーション・ドキュメントおよびアクションに対してOracle B2Bで定義されているドキュメント・タイプ |
はい |
B2BDocumentRevision |
文字列 |
リクエストされたアプリケーション・ドキュメントおよびアクションに対してOracle B2Bで定義されているドキュメント・リビジョン |
はい |
B2BDocumentProtocol |
文字列 |
リクエストされたアプリケーション・ドキュメントおよびアクションに対してOracle B2Bで定義されているドキュメント・プロトコル名 |
はい |
Direction |
文字列 |
ドキュメントの方向 |
はい |
XSLTファイル |
文字列 |
Oracle B2B TPドキュメントを生成するためにAIAレイヤーによって使用されるXSLTファイル |
いいえ |
表21-10 Get Trading Partner Agreement Informationのフォルト・メッセージのパラメータ
ヘッダー | データ型 | 説明 |
---|---|---|
ExceptionMessage |
文字列 |
フォルトが見つかった場合、例外スタック・トレースが伝送されます。 |
拡張パラメータ
表21-8および表21-9に示すパラメータに加えて、デリバリ・チャネル・タイプ(HTTP/WSなど)およびモード("one-way"または"request-response")を返す必要があります。取引パートナ問合せAPIコールは、SOAコンポーネントからの起動時にTPAConfigResponseのTPAコンテキストの一部として次の追加のフィールドを戻します。
表21-11 GetTPAConfigService問合せAPIパラメータ
パラメータ | 説明 |
---|---|
DCName |
問い合せたTPに関連付けられているデリバリ・チャネル名。 |
ExchangeProtocol |
DC名に関連付けられている交換プロトコル。 |
SyncMode |
デリバリ・チャネルが構成されているモード。"True"のSyncModeは、レスポンス・メッセージ(レスポンスまたは確認)が戻ると予想されていることを示します。 |
表21-12 交換プロトコル構成詳細
交換プロトコル・タイプ | チャネル構成 | SynchMode |
---|---|---|
Generic WS |
汎用SOAPの場合: 取引パートナのデリバリ・チャネル構成のレスポンス・モードの同期を選択します。WSDLベースの場合: チャネルを有効なWSDLに関連付ける必要があります。 |
汎用SOAPの場合: レスポンス・モードがTrueの場合はSyncMode = Trueです。それ以外の場合、同期モードがfalseに設定されます。 WSDLベースの場合: SyncModeがWSDL指定モードに設定されます。 |
汎用HTTP |
リモート取引パートナのHTTPデリバリ・チャネル構成の"追加トランスポート・ヘッダー"パラメータとして"syncresponse=true"を追加します。 |
"syncresponse=true"が設定されている場合、SyncModeはTrueです。それ以外の場合はfalseです。 |
汎用電子メール 汎用ファイル(オプション) 汎用AQ (オプション) 汎用JMS (オプション) 汎用FTP (オプション) 汎用SFTP (オプション) 汎用MFT(オプション) |
該当なし |
SyncModeは常にfalseに設定されます。 |
AS1 (オプション) AS2 (オプション) ebMS-2.0 (オプション) ebMS-1.0 (オプション) RosettaNet-V02.00 (オプション) RosettaNet-01.10 (オプション) MLLP-1.0 (オプション) HLLP -1.0(オプション) |
取引パートナのデリバリ・チャネル構成の確認モードの同期を選択します |
確認モードが同期に設定されている場合、SyncMode = Trueです。それ以外の場合、SyncMode = falseです。 |
トランスポート・バインディング情報を取得するため、Collaboration Messaging Framework(CMK)では、すべてのHTTPトランスポート・ヘッダーおよびCMKに渡されるMSG_IDに基づく対応する値を取得できる必要があります。
これは、CMKを流れるメッセージの処理に関連する取引パートナまたはチャネル情報を取得するためにCMKによって使用される取引パートナ問合せAPIに似ているWebサービスであるGetParameterServiceで行うことができます。このサービスを起動するには、次の入力パラメータが必要です:
表21-13 GetParameterServiceリクエストのパラメータ
ヘッダー | データ型 | 説明 | 必須 |
---|---|---|---|
messageId |
文字列 |
このパラメータに指定されるビジネス・メッセージIDを使用して、トランスポート・ヘッダーを取得します。 |
はい |
parameterName |
文字列 |
取引パートナ名または識別値 |
はい |
GetParameterService - レスポンス・パラメータ
レスポンス・メッセージには、すべてのHTTPヘッダーおよび対応する値の名前と値のペアが含まれます。ただし、この問合せAPIに表示されるトランスポート・ヘッダー・パラメータGetParameterServiceは、リスニング・チャネル・プロトコルによって異なります。
B2Bで公開されるWebサービスは、構成の詳細が侵入者から見えないように保護する必要があります。Oracle Web Services Managerのポリシー・アプローチには、要件に基づいてWebサービスを保護する機能があります。
Webサービスのエンドポイントは、oracle.webservices.provider.ProviderConfig.addService(...)
APIを使用して動的およびプログラム的に登録されます。これらのエンドポイントはOracle Enterprise Manager Fusion Middleware Controlコンソールに表示されないため、WebサービスとそのポリシーのライフサイクルはOracle B2Bによって管理されます。
ポリシーを指定してWebサービスのエンドポイントに関連付けるには、次の手順に従います。
Oracle B2Bコンソールで、「管理」→「構成」タブに移動します。
「パージ不可」セクションの「Webサービス・ポリシー」フィールドに、適切な値を入力します。
エンドポイントのみを保護するには、Oracle Web Services ManagerポリシーURIを入力します。RM、アドレッシングおよびロギングを取得するには、<policy>
タグ全体を入力します。次の例を参照してください。
使用可能なOracle WSMポリシーのリストは、Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護の使用可能なOracle WSMセキュリティ・ポリシーを参照してください。
「保存」をクリックします。
ここで関連付けられるポリシーに基づいて、WSDL URLによって、このサービスのプロキシ・クライアントの作成時に使用する必要があるポリシー詳細のパブリッシュ/記述が開始されます。
ポリシーの変更を反映するためにB2Bを再起動する必要はありません。
例
例1: セキュリティ・ポリシーoracle/wss_username_token_service_policyを適用するには、次のURIを「Webサービス・ポリシー」
に入力します。
oracle/wss_username_token_service_policy
例2: 次のXMLを「Webサービス・ポリシー」に入力します。セキュリティおよびRMポリシーが適用されます。
<policy><policy-references><policy-reference uri="oracle/wss_username_token_
service_policy" category="security"/><policy-reference uri="oracle/wsrm11_policy"
category="wsrm"/></policy-references></policy>
制限事項
特定のエンドポイントについてのみポリシーを制御する方法はありません。どのようなポリシーを指定しても、すべてのエンドポイントに適用されます。
「Webサービス・ポリシー」フィールドをクリアして、すでに指定されているポリシーURIを削除することはできません。なんらかの文字列(noneなど)をフィールドに入力する必要があります。
Oracle Enterprise Manager Fusion Middleware Controlコンソールには、Oracle B2B Webサービスの使用方法に関するメトリックは表示されません。