19 Oracle Mediatorのスタート・ガイド

この章では、Oracle SOA Suiteアプリケーションにトランスフォーメーション、検証およびルーティング・ロジックを提供するOracle Mediatorについて説明します。また、この章では、Oracle JDeveloperでメディエータ・コンポーネントおよび関連するWSDLドキュメントを作成する方法についても説明します。

この章の内容は次のとおりです。

19.1 Oracle Mediatorの概要

Oracle SOA Suiteのサービス・コンポーネントであるOracle Mediatorは、様々なメッセージ交換パターン(同期、非同期、イベントの公開またはサブスクリプションなど)に加え、選択的なルーティング、トランスフォーメーションおよび検証の機能などの仲介機能を備えています。

メディエータは、Web Services Description Language (WSDL)ドキュメントをインタフェースとして使用してコンポジット・アプリケーション内の様々なコンポーネント間(ビジネス・プロセスやヒューマン・ワークフローなど)を仲介する軽量のフレームワークを提供します。また、様々なコンポーネントで公開される様々なインタフェース間での通信が容易になるようにデータを変換します。これらのコンポーネントは接続されて、SOAコンポジット・アプリケーションが構築されます。たとえば、メディエータでは、アプリケーションまたはサービスからテキスト・ファイルに格納されたデータを受け入れ、顧客リポジトリとして使用するデータベースの更新に適した書式に変換し、変換したデータをそのデータベースにルーティングおよび配信できます。

メディエータによって、イベントとサービス間の統合が容易になり、この統合によって、サービスの起動とイベントの組合せや調整が可能となります。メディエータ・サービス・コンポーネントを使用すると、ビジネス・イベントを処理したり、サービスの起動を受信できます。メディエータ・サービス・コンポーネントは、ルーティング・ルールの評価、変換の実行、検証を行い、別のサービスを起動したり、別のビジネス・イベントを発生させることができます。メディエータ・サービス・コンポーネントを使用すると、返されたレスポンス、コールバック、フォルトおよびタイムアウトを処理できます。

19.2 メディエータの機能

次の各項では、Oracle MediatorがOracle SOA Suiteアプリケーションに提供する主な機能について説明します。

19.2.1 コンテンツ・ベースおよびヘッダー・ベースのルーティング

メディエータでは、メッセージ・ペイロードまたはメッセージ・ヘッダーに基づいてルールを定義できます。メッセージ・ペイロードまたはメッセージ・ヘッダーから要素または属性を選択し、その要素または属性の値に基づいてアクションを指定できます。たとえば、メディエータで、新規顧客に関するデータが含まれているファイルをアプリケーションまたはサービスから受信したとします。顧客の住所に記載されている国に基づいて、その特定の国に関するデータが格納されているデータベースにデータをルーティングおよび配信できます。同様に、メッセージ・ヘッダーに基づいてメッセージをルーティングできます。

ヘッダーに基づいたルーティングの詳細は、「フィルタおよび割当てのためのヘッダー・アクセス方法」を参照してください。

19.2.2 同期および非同期の相互作用

メディエータでは、同期と非同期、両方のリクエストとレスポンスの相互作用がサポートされています。同期相互作用では、クライアントはサービスをリクエストした後、そのリクエストに対するレスポンスを待機します。非同期相互作用では、クライアントはサービスを起動しますが、そのレスポンスを待機しません。非同期相互作用に対してはタイムアウト時間を指定できます。このタイムアウト時間には、イベントの発生やプロセスの開始など、タイムアウト時間後に実行するアクションを指定できます。

メディエータでは、イベントベースの相互作用もサポートされています。イベントは、一方向(fire-and-forget)の非同期相互作用です。

同期および非同期の相互作用の詳細は、「レスポンス・メッセージの構成方法」および「Oracle Mediatorのメッセージ交換パターンの理解」を参照してください。

19.2.3 メッセージの順次およびパラレルのルーティング

メディエータでは、ルーティング・ルールをパラレルまたは順次のいずれかで実行するように指定できます。実行タイプは、メディエータ・エディタ「ルーティング・ルール」セクションから構成できます。

メッセージの順次およびパラレルのルーティングの詳細は、「順次実行またはパラレル実行の指定方法」を参照してください。

19.2.4 メッセージの再順序付け

メディエータの再シーケンサを使用すると、再シーケンサにより、関連がありながらも順序が正しくないメッセージは、使用されている再シーケンサのタイプと定義されているルールに基づいて適切な順序に並べ替えられます。受信メッセージがランダムな順番で着信した場合、再シーケンサは、メッセージを順次または時系列の情報に基づいて並べ替え、再順序付けの構成に基づいた正しい順序でメッセージをターゲット・サービスに送信します。

メッセージの再順序付けの詳細は、「Oracle Mediatorにおける再順序付け」を参照してください。

19.2.5 データ・トランスフォーメーション

メディエータでは、XMLスキーマ間のデータ・トランスフォーメーションを定義できます。この機能を使用することで、異なるスキーマを使用しているアプリケーション間でのデータ交換が可能になります。たとえば、カンマ区切りのファイルをデータベースと互換性のあるXMLスキーマに変換できます。

トランスフォーメーションの詳細は、「XSLTトランスフォーメーションの作成方法」を参照してください。

19.2.6 ペイロード検証

SchematronまたはXSDファイルを使用して受信メッセージ・ペイロードを検証するようにメディエータを構成できます。ユーザーは各インバウンド・メッセージ・パートに対してSchematronファイルを指定でき、メディエータはこれらのパートに対してSchematronファイル検証を実行します。

検証の詳細は、「検証および優先度のプロパティの指定」「セマンティク検証の使用方法」およびhttp://www.schematron.com/を参照してください。

19.2.7 Javaコールアウト

メディエータでは、ルーティング・ルールにJavaコールアウトを追加できます。Javaコールアウトを使用すると、メディエータを介してフローするメッセージの操作に外部のJavaクラスを使用できます。

Javaコールアウトの詳細は、「Javaコールアウトの使用方法」を参照してください。

19.2.8 イベント処理

イベントは、ビジネス環境でアクティビティが発生すると送信されるメッセージです。メディエータでは、ビジネス・イベントのサブスクライブと発生の両方を実行できます。目的の状況が発生したときに生成されるビジネス・イベントをサブスクライブできます。たとえば、新規顧客の作成時に生成されるイベントをサブスクライブし、次にこのイベントを使用して、確認電子メールの送信などのビジネス・プロセスを開始できます。同様に、目的の状況が発生した場合は、ビジネス・イベントを生成することができます。たとえば、新規顧客プロファイルの作成後に顧客作成済イベントを生成できます。

イベント処理の詳細は、「ビジネス・イベントおよびイベント配信ネットワークの使用」を参照してください。

19.2.9 動的ルーティング

動的ルーティングは、プロセスの制御ロジックをプロセスの実行から分離します。制御ロジックは、プロセスが経由するパスを決定します。動的ルーティング・ルールは、メディエータ・エディタを使用して作成できます。

動的ルーティングの詳細は、「動的ルーティング・ルールの作成方法」を参照してください。

19.2.10 エラー処理

メディエータでは、手動によるエラー処理とフォルト・ポリシーに基づくエラー処理の両方がサポートされています。フォルト・ポリシーは複数の条件とアクションで構成され、条件によって、特定のエラー状態の場合に実行されるアクションを指定します。

エラー処理の詳細は、「Oracle Mediatorエラー処理の使用」を参照してください。

19.2.11 コール元へのメッセージの返信(エコー)

メディエータでは、他のターゲットにメッセージをルーティングすることなく、ソース・メッセージを最初のコール元にエコーして戻すことができます。メディエータでは、メッセージをコール元にエコーして戻す前に、トランスフォーメーション、検証、割当てまたは順序の操作を実行できます。

メディエータのエコー・サポートの詳細は、「メディエータ・サービスまたはイベントの指定方法」サービスをエコーするには:を参照してください。

19.2.12 複数パート・メッセージ

メディエータでは、複数のパートで構成されたメッセージを処理できます。リモート・プロシージャ・コール(RPC) Webサービスの中には、SOAPメッセージに複数のパートが含まれているものがあります。

複数パート・メッセージのサポートに関する詳細は、「Oracle Mediatorにおける複数パート・メッセージの使用」を参照してください。

19.3 メディエータの作成

アプリケーション開発プロセスの現在の段階に応じて、複数の方法でメディエータを作成できます。コンポーネントを作成するには、次の項の該当する指示に従ってください。

19.3.1 メディエータの作成方法

開発サイクルの次のどの時点でも、Oracle JDeveloperでSOAコンポジット・アプリケーション内にメディエータを作成できます。

  • コンポジット・アプリケーションの作成時

  • 既存のコンポジット・アプリケーションの変更時

  • プロジェクトの作成時

  • 既存のプロジェクトの変更時

メディエータの作成時には、「メディエータの作成」ダイアログが表示され、メディエータの名前を決定してインタフェースのテンプレートを選択できます。

19.3.1.1 メディエータを使用するコンポジット・アプリケーションを作成するには:
  1. SOAアプリケーションの作成ウィザードを使用して、SOAアプリケーションおよびプロジェクトを作成し、名前を指定します。

  2. 図19-1に示すように、「SOA設定の構成」ページが表示されたら、「コンポジット・テンプレート」リストから「メディエータを使用するコンポジット」を選択します。

    図19-1 「SOAプロジェクトの作成」ウィザードの「メディエータを使用するコンポジット」の選択

    図19-1の説明が続きます
    「図19-1 「SOAプロジェクトの作成」ウィザードの「メディエータを使用するコンポジット」の選択」の説明
  3. 「終了」をクリックします。

    「メディエータの作成」ダイアログが表示されます。

  4. 「メディエータのインタフェース定義の構成」の説明に従って、メディエータのインタフェースを構成します。

  5. 「Oracle Mediatorルーティング・ルールの作成」の説明に従って、メディエータのルーティング・ルールを定義します。

19.3.1.2 既存のコンポジット・アプリケーション内にメディエータを作成するには:
  1. SOAコンポジット・エディタで、メディエータを追加するコンポジット・アプリケーションを開きます。

  2. 「コンポーネント」ウィンドウ(図19-2を参照)からエディタの「コンポーネント」セクションにメディエータをドラッグ・アンド・ドロップします。

    または、エディタの「コンポーネント」セクションの空白領域を右クリックします。表示されるコンテキスト・メニューから「挿入」→「メディエータ」の順に選択します。

    ヒント:

    「コンポーネント」ウィンドウはSOAコンポジット・エディタの右側にあります。

    図19-2 メディエータ・サービス・コンポーネントが表示された「コンポーネント」ウィンドウ

    図19-2の説明が続きます
    「図19-2 メディエータ・サービス・コンポーネントが表示された「コンポーネント」ウィンドウ」の説明

    「メディエータの作成」ダイアログが表示されます。

  3. 「メディエータのインタフェース定義の構成」の説明に従って、メディエータのインタフェースを構成します。

  4. 「Oracle Mediatorルーティング・ルールの作成」の説明に従って、メディエータのルーティング・ルールを定義します。

19.3.1.3 メディエータを使用する新規プロジェクトを作成するには:
  1. 「アプリケーション」ウィンドウで右クリックしてから、「新規」を選択します。

    新規ギャラリ・ウィザードが表示されます。

  2. 「SOA層」カテゴリに新規SOAプロジェクトを作成し、名前を付けます。

  3. 図19-3に示すように、「新規ギャラリ」ダイアログの「SOA設定の構成」ページで、「コンポジット・テンプレート」リストから「メディエータを使用するコンポジット」を選択します。

    図19-3 表示される「メディエータを使用するコンポジット」テンプレートを使用した「SOAプロジェクトの作成」ウィザード

    図19-3の説明が続きます
    「図19-3 表示される「メディエータを使用するコンポジット」テンプレートを使用した「SOAプロジェクトの作成」ウィザード」の説明
  4. 「終了」をクリックします。

    「メディエータの作成」ダイアログが表示されます。

  5. 「メディエータのインタフェース定義の構成」の説明に従って、メディエータのインタフェースを構成します。

19.3.1.4 既存のプロジェクト内にメディエータを作成するには:
  1. 「アプリケーション」ウィンドウで、メディエータを追加するプロジェクトを選択します。

  2. ナビゲータ・ペインを右クリックし、「新規」を選択します。

  3. 図19-4に示すように、「カテゴリ」「サービス・コンポーネント」を選択し、次に「項目」リストから「メディエータ」を選択します。

    図19-4 メディエータ・サービス・コンポーネントが表示された「新規ギャラリ」ダイアログ

    図19-4の説明が続きます
    「図19-4 メディエータ・サービス・コンポーネントが表示された「新規ギャラリ」ダイアログ」の説明
  4. 「OK」をクリックします。

    「メディエータの作成」ダイアログが表示されます。

  5. 「メディエータのインタフェース定義の構成」の説明に従って、メディエータのインタフェースを構成します。

  6. 「Oracle Mediatorルーティング・ルールの作成」の説明に従って、メディエータのルーティング・ルールを定義します。

19.4 メディエータ・エディタ環境の概要

Oracle JDeveloperのSOAコンポジット・アプリケーション内にメディエータ・サービス・コンポーネントを作成した後、そのメディエータ・サービス・コンポーネントはメディエータ・エディタを使用して構成できます。メディエータ・エディタを表示するには、SOAコンポジット・エディタで、メディエータ・サービス・コンポーネントをダブルクリックします。SOAコンポジット・エディタの詳細は、「SOAコンポジット・アプリケーションの開発のスタート・ガイド」を参照してください。

図19-5には、メディエータ・エディタが「アプリケーション」ウィンドウ、「構造」および「メッセージ」の各ウィンドウとともに表示されています。

ノート:

メディエータのグローバリゼーションを完全にサポートするために、Unicodeデータベースのデータベース文字セットには、AL32UTF8を使用することをお薦めします。

図19-5 メディエータ・エディタ・ウィンドウ

図19-5の説明が続きます
「図19-5 メディエータ・エディタ・ウィンドウ」の説明

図19-5のビューの各セクションで、特定の設計タスクやデプロイメント・タスクを実行できます。このビューのセクションは次のとおりです。

  • 「アプリケーション」ウィンドウ

    図19-5の左上のセクションにある「アプリケーション」ウィンドウは、メディエータのmplanファイルを示しています。このファイルは、メディエータを作成したプロジェクトの「SOAコンテンツ」フォルダの下に表示されます。「アプリケーション」ウィンドウおよびコンポジット・ファイルの詳細は、表2-3を参照してください。

  • メディエータ・エディタ

    図19-5の中央に表示されているメディエータ・エディタでは、メディエータのビジュアル・ビューが提供されます。このビューは、次のいずれかの処理を実行すると表示されます。

    • SOAコンポジット・エディタで、Oracle Mediatorアイコンをダブルクリックした場合。

    • 「アプリケーション」ウィンドウでメディエータの.mplanファイルをダブルクリックした場合。

  • ソース・ビュー

    「ソース」ビューに、メディエータのソース・コードが表示されます。メディエータ・エディタの下部にある「ソース」をクリックすると、ソース・コードが表示されます。「ソース」ビューのコードは即時に更新され、メディエータ内のすべての変更が反映されます。

    次の例は、メディエータのソース・コードのサンプルを示しています。

    <?xml version = '1.0' encoding = 'UTF-8'?>
    <!--Generated by Oracle SCA Modeler version 1.0 at [4/16/07 10:05 PM].-->
    <Mediator name="CustomerDataRouter" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.oracle.com/sca/1.0/mediator"/>
    
  • 「履歴」ウィンドウ

    「履歴」ウィンドウには、リビジョン履歴や、ファイルの読取り専用バージョンと編集可能バージョンを並べた比較など、メディエータ・ファイルの履歴情報を表示できます。図19-5の「設計」ウィンドウ下部にある「履歴」をクリックすると、「履歴」ウィンドウが表示されます。図19-6に、メディエータ・ファイルの「履歴」ビューを示します。

    図19-6「履歴」ウィンドウ

    図19-6の説明が続きます
    「図19-6 「履歴」ウィンドウ」の説明

19.5 メディエータのインタフェース定義の構成

新規のメディエータを作成するときに、メディエータ・プロジェクトの基本的な一連のデフォルト・ファイルを生成するインタフェース・テンプレートを指定できます。これらのファイルは、メディエータを設計および構成できるフレームワークを提供します。次のインタフェース・オプションを使用して、メディエータを作成できます。

  • インタフェース定義を使用しないメディエータ

    空のメディエータを作成し、WSDLファイルは作成しません。この方法を使用すると、目的の順番でSOAコンポーネントを柔軟に作成できます。

    インタフェース定義を使用せずにメディエータを作成した後、そのコンポーネントを起動するサービスまたはイベントを作成する必要があります。サービスまたは別のコンポーネントからの出力インタフェースをメディエータ入力にドラッグ・アンド・ドロップすることで、インタフェースを暗黙的に定義することもできます。

  • WSDLファイルで定義されているインタフェースを使用したメディエータ

    これは、メディエータのインタフェース(ポート・タイプ、操作、サービス、スキーマなど)が記述されているWSDLファイルのインタフェース定義に基づきます。WSDLファイルは、既存のものを使用するか、スキーマ・ファイルから生成できます。

  • 一方向インタフェースを使用したメディエータ

    クライアントはサービスにメッセージを送信するが、サービスからのリプライは不要の一方向相互作用のインタフェースを定義します。

  • 同期インタフェースを使用したメディエータ

    同期リクエスト/レスポンス相互作用のインタフェースを作成します。同期相互作用では、クライアントはサービスにリクエストを送信し、すぐにレスポンスを受信します。クライアントはレスポンスが届くまで次へ進みません。

  • 非同期インタフェースを使用したメディエータ

    非同期リクエスト/レスポンス相互作用のインタフェースを作成します。非同期相互作用では、クライアントはサービスにリクエストを送信しますが、リプライをブロックおよび待機しません。

  • イベントをサブスクライブするメディエータ

    目的の状況が発生したときに生成されるビジネス・イベントをサブスクライブするメディエータを作成します。ビジネス・イベントは、ビジネス環境における発生の結果として送信されるメッセージ・データで構成されています。ビジネス・イベントの詳細は、「ビジネス・イベントおよびイベント配信ネットワークの使用」を参照してください。

    イベントをサブスクライブするには、イベント定義(EDL)ファイルでイベントを定義する必要があります。

19.5.1 メディエータのインタフェース定義の構成方法

メディエータのインタフェース定義の構成は、「メディエータの作成」ダイアログで行います。

メディエータのインタフェース定義を構成するには:

  1. 「メディエータの作成」に記載されているいずれかの方法で、メディエータを作成します。

    「メディエータの作成」ダイアログが表示されます。

  2. 「名前」フィールドに、メディエータ・サービス・コンポーネントの名前を入力します。

  3. 「テンプレート」リストで、次のいずれかを選択します。それぞれの詳細は、この項の最初の説明を参照してください。

    • インタフェースを後で定義

    • WSDLからのインタフェース定義

    • 一方向インタフェース

    • 同期インタフェース

    • 非同期インタフェース

    • イベントのサブスクライブ

    図19-7および図19-8は、インタフェース・タイプが異なる場合に「メディエータの作成」ダイアログのプロパティがどのように変わるかを示しています。

    図19-7 「メディエータの作成」ダイアログの「同期インタフェース」テンプレートの選択

    図19-7の説明が続きます
    「図19-7「メディエータの作成」ダイアログの「同期インタフェース」テンプレートの選択」の説明

    図19-8 「メディエータの作成」ダイアログの「WSDLからのインタフェース定義」テンプレートの選択

    図19-8の説明が続きます
    「図19-8 「メディエータの作成」ダイアログの「WSDLからのインタフェース定義」テンプレートの選択」の説明
  4. 「イベントのサブスクライブ」以外のインタフェース・タイプの場合は、適切なプロパティを構成します。各タイプで表示されるプロパティの詳細は、この手順の後の表19-1を参照してください。

  5. 「イベントのサブスクライブ」を選択した場合は、次の手順を実行します。

    1. 「メディエータの作成」ダイアログで「追加」をクリックします。

      図19-9 「メディエータの作成」ダイアログの「イベントのサブスクライブ」テンプレートの選択

      図19-9の説明が続きます
      「図19-9 「メディエータの作成」ダイアログの「イベントのサブスクライブ」テンプレートの選択」の説明

      「イベント・チューザ」ダイアログが表示されます。

    2. 「イベント定義」フィールドの右側にある「検索」をクリックします。

      「SOAリソース・ブラウザ」ダイアログが表示されます。

    3. イベント定義ファイル(.edl)を選択し「OK」をクリックします。

      「イベント」フィールドに、選択した.edlファイルに記述されているイベントが移入されます。.edlファイルの作成方法の詳細は、「ビジネス・イベントおよびイベント配信ネットワークの使用」を参照してください。

    4. 図19-10に示すように、「イベント」フィールドで1つ以上のイベントを選択し、「OK」をクリックします。

      図19-10 「イベント・チューザ」ダイアログ

      図19-10の説明が続きます
      「図19-10 「イベント・チューザ」ダイアログ」の説明
    5. イベントと一貫性がある配信のレベルを選択します。

      唯一: イベント配信にはグローバル(JTA)トランザクションが使用されます。イベント・コールが失敗した場合、トランザクションはロールバックされ、コールは構成可能な回数だけ再試行されます。

      保証付き: 配信を保証するためにローカル・トランザクションが使用されます。失敗時の再試行はありません。

      即時: イベントはコール元と同じスレッドおよび同じトランザクション上で配信されます。

    6. 「パブリッシャとして実行」フィールドで、イベント・パブリッシャのセキュリティ下でイベント・サブスクリプションを実行するかどうかを選択します。

      デフォルトでは、イベント・サブスクリプションはイベント・パブリッシャのセキュリティ下で実行します。

    7. イベントをフィルタリングするには、選択したイベントの「フィルタ」列をダブルクリックするか、またはイベントを選択して「フィルタ」アイコン(最初のアイコン)をクリックします。

      「式ビルダー」ダイアログが表示されます。

    8. 「式」フィールドでXPath式を入力し、「OK」をクリックします。

      図19-11に、「式ビルダー」ダイアログのサンプルを示します。

      図19-11 ビジネス・イベント・フィルタ

      図19-11の説明が続きます
      「図19-11 ビジネス・イベント・フィルタ」の説明

      「メディエータの作成」ダイアログの「フィルタ」列に、作成した式が表示されます。

    9. 「OK」をクリックします。

  6. 「メディエータの作成」ダイアログで「OK」をクリックします。

  7. インタフェースなしのメディエータを作成するように選択した場合は、「メディエータのインタフェースの定義方法」の説明に従って、後でインタフェースを作成する必要があります。

次の表に、インタフェースを定義するために構成可能なプロパティをリストして説明します。選択したインタフェース・タイプによって使用可能なプロパティは異なるため、リストされているすべてのプロパティがすべてのインタフェース・タイプに適用されるわけではありません。

表19-1 メディエータのインタフェースのプロパティ

プロパティ 説明

SOAPバインディングを持つコンポジット・サービスの作成

このオプションを選択すると、インタフェースが生成されたときに自動的にメディエータに接続されるSOAPバインディングを使用した公開されたサービスが作成されます。

WSDL URL

WSDLファイルからインタフェースを作成する場合に、使用するWSDLファイルの場所を入力します。次のいずれかを行います:

  • 既存のWSDLファイルを使用するには、ファイルの名前を入力するか、「既存のWSDLを検索します。」をクリックしてファイルを参照します。

  • 新規のWSDLファイルを作成するには、「スキーマからWSDLを生成します。」をクリックします。

これらのオプションに関する詳細は、「WSDLファイルの生成」を参照してください。

ポート・タイプ

リストからポート・タイプ名を選択します。使用可能なポート・タイプは、「WSDL URL」フィールドに指定したWSDLファイルから解析されます。

コールバック・ポート・タイプ

非同期通信のレスポンス・メッセージが送信されるポート・タイプ名を選択します。使用可能なポート・タイプは、「WSDL URL」フィールドに指定したWSDLファイルから解析されます。

入力

入力メッセージ用のスキーマ要素を入力します。フィールドの右側にある「検索」をクリックして、要素を選択します。デフォルトでは、入力メッセージ用にsingleStringスキーマ要素が選択されています。

サンプル・スキーマについては、この表の下のスキーマをご覧ください。

出力

出力メッセージ用のスキーマ要素を入力します。フィールドの右側にある「検索」をクリックして、要素を選択します。デフォルトでは、入力メッセージ用にsingleStringスキーマ要素が選択されています。

メディエータで処理する入力文書の形式は、XSDスキーマを使用して指定できます。次にスキーマのサンプルを示します。

<xsd:schema attributeFormDefault="qualified"
            elementFormDefault="qualified"
            targetNamespace="http://samples.otn.com/helloworld"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://samples.otn.com/helloworld">
         <include namespace="http://samples.otn.com/helloworld"
            schemaLocation="helloworld.xsd" />
         <xsd:element name="name1" type="xsd:string" />
         <xsd:element name="result1" type="xsd:string"/>
</xsd:schema>

19.5.2 メディエータ作成時の処理内容

メディエータ・ファイルは「アプリケーション」ウィンドウで指定されたアプリケーションおよびプロジェクトの下に生成され、新しいメディエータは設計ビューのメディエータ・エディタに表示されます。インタフェース定義を使用したメディエータを作成し、WSDLファイルが存在しなかった場合は、新しいWSDLファイルがメディエータと同じ名前で一緒に生成されます。指定したWSDLファイルがプロジェクト・ファイルと異なるディレクトリに格納されている場合は、ファイルおよび関連するスキーマ・ファイルがメディエータ・プロジェクトにコピーされます。

19.5.2.1 インタフェース定義を使用しない

このメディエータはWSDLファイル、ポート・タイプまたは操作に関連付けられていません。「メディエータのインタフェースの定義」の説明に従って、これらを個別に定義する必要があります。図19-12は、インタフェース定義を使用せずに作成したメディエータがメディエータ・エディタ内でどのように表示されるかを示しています。

図19-12 メディエータ・エディタでインタフェース定義を使用しないメディエータ

図19-12の説明が続きます
「図19-12 メディエータ・エディタでインタフェース定義を使用しないメディエータ」の説明
19.5.2.2 WSDLベースのインタフェースを使用

このメディエータの外観およびソース・コードは、WSDLファイルの名前、およびWSDLファイルで定義されているポート・タイプおよび操作によって異なります。図19-13は、WSDLファイルから作成されたメディエータのサンプルを示しています。

図19-13 メディエータ・エディタ内のWSDLからのメディエータ

図19-13の説明が続きます
「図19-13 メディエータ・エディタ内のWSDLからのメディエータ」の説明
19.5.2.3 一方向インタフェース定義を使用

図19-14は、一方向インタフェースを使用して作成したメディエータがメディエータ・エディタ内でどのように表示されるかを示しています。「execute」操作の左側にある矢印は、一方向操作を表しています。

図19-14 メディエータ・エディタ内の一方向インタフェースOracle Mediator

図19-14の説明が続きます
「図19-14 メディエータ・エディタ内の一方向インタフェースOracle Mediator」の説明
19.5.2.4 同期インタフェース定義を使用

同期相互作用ではレスポンスがリクエストと同じポートに送信されるため、ポートは1つのみ定義されます。図19-15は、同期インタフェースを使用して作成したメディエータがメディエータ・エディタ内でどのように表示されるかを示しています。図19-15「execute」操作の左側にある矢印は、同期操作を表しています。

図19-15 メディエータ・エディタ内の同期メディエータ

図19-15の説明が続きます
「図19-15 メディエータ・エディタ内の同期メディエータ」の説明
19.5.2.5 非同期インタフェース定義を使用

図19-16は、非同期インタフェースを使用して作成したメディエータがメディエータ・エディタ内でどのように表示されるかを示しています。「ポート・タイプ」フィールドには、リクエスト・メッセージが送信されるポートが表示されます。「コールバック・ポート・タイプ」フィールドには、レスポンスが送信されるポートが表示されます。図19-16「execute」操作の左側にある矢印は、非同期操作を表しています。

図19-16 メディエータ・エディタ内の非同期メディエータ

図19-16の説明が続きます
「図19-16 メディエータ・エディタ内の非同期メディエータ」の説明
19.5.2.6 イベント・サブスクリプションを使用

SOAコンポジット・エディタでメディエータを表示すると、図19-17に示すように、メディエータの左側にあるアイコンにより、そのメディエータがイベント・サブスクリプション用に構成されていることが示されます。

図19-17 「イベントのサブスクライブ」テンプレートを使用して作成されたメディエータ

図19-17の説明が続きます
「図19-17 「イベントのサブスクライブ」テンプレートを使用して作成されたメディエータ」の説明

メディエータをダブルクリックすると、図19-18に示すように、メディエータ・エディタが表示されます。

図19-18 メディエータ・エディタ内のイベント・サブスクリプション・メディエータ

図19-18の説明が続きます
「図19-18 メディエータ・エディタ内のイベント・サブスクリプション・メディエータ」の説明

19.6 メディエータのインタフェースの定義

インタフェース定義を使用せずにメディエータを作成した後、イベントのサブスクライブまたはサービスの定義によって、インタフェースを定義する必要があります。サービスの定義は、次の2つの方法で行えます。

  • SOAコンポジット・エディタのワイヤを通じてメディエータをサービスに接続します。

  • メディエータ・エディタ「サービスの定義」オプションまたは「イベント・サブスクリプションの追加」オプションを使用します。

19.6.1 メディエータのインタフェースの定義方法

次の手順は、既存のメディエータのインタフェースを定義するために、イベントをサブスクライブして定義する方法、コンポジット内にワイヤを作成するサービスを定義して定義する方法、メディエータ・エディタを使用してサービスを定義して定義する方法を示しています。

19.6.1.1 イベントをサブスクライブするには:

イベントをサブスクライブするには、イベント定義(EDL)ファイルでイベントを定義する必要があります。

  1. メディエータ・エディタで編集するメディエータを開きます。

  2. 「ルーティング・ルール」セクションで、「イベント・サブスクリプションの追加」をクリックします。

    「サブスクライブ済イベント」ダイアログが表示されます。

  3. 「追加」をクリックします。

    「イベント・チューザ」ダイアログが表示されます。

  4. 既存のEDLファイルを使用するには、「メディエータのインタフェース定義の構成」のステップ5.b以降のステップに従います。

    ノート:

    または、新しいEDLファイルを作成できます。新しいEDLファイルを作成するには、「EDLファイルの作成」をクリックします。表示される「イベント定義の作成」ダイアログにイベントの詳細を入力します。

  5. 「OK」をクリックします。

19.6.1.2 ワイヤを使用してメディエータのサービスを定義するには:
  • SOAコンポジット・エディタで、メディエータからサービスにワイヤをドラッグします。

    ワイヤの詳細、およびサービス・コンポーネントをサービスに接続する方法については、「サービスとサービス・コンポーネントの接続方法」を参照してください。

    ノート:

    定義済サービス・インタフェースを使用して、メディエータを別のインタフェースに接続することもできます。ただし、メディエータをサービスに接続するには、そのメディエータとサービスのインタフェースが一致している必要があります。

    ワイヤを使用してサービスを定義した場合、メディエータのサービスは、ワイヤのソースのWSDLファイルを使用して自動的に定義されます。たとえば、図19-19に示すReadFileサービスをCustomerDataRouterメディエータに接続すると、そのCustomerDataRouterメディエータでは自動的にReadFileサービスのサービス定義が継承されます。

    図19-19 メディエータからサービスへの接続

    図19-19の説明が続きます
    「図19-19 メディエータからサービスへの接続」の説明

    2つのメディエータ・サービス・コンポーネントを接続したときに無限ループが発生するケースに関する必知事項は、「ワイヤの追加と削除に関する必知事項」を参照してください。

19.6.1.3 メディエータ・エディタでメディエータのサービスを定義するには:
  1. メディエータ・エディタで編集するメディエータを表示します。

  2. 「WSDL URL」フィールドの右側にある「サービスの定義」をクリックします。

    図19-20に示すように、「サービスの定義」ダイアログが表示されます。

    図19-20 「サービスの定義」ダイアログ

    図19-20の説明が続きます
    「図19-20 「サービスの定義」ダイアログ」の説明
  3. 次のいずれかを行います:

    • 既存のWSDLファイルを使用するには、「WSDL URL」フィールドの右側にある「既存のWSDLを検索します。」をクリックします。

    • WSDLファイルを作成するには、「WSDL URL」フィールドの右側にある「スキーマからWSDLを生成します。」をクリックします。

    WSDLファイルの生成方法は、「WSDLファイルの生成」を参照してください。

  4. 「ポート・タイプ」リストから、ポートを選択します。

  5. 「コールバック・ポート・タイプ」リストから、非同期相互作用のレスポンス・メッセージのポートを選択します。

  6. 「OK」をクリックします。

19.7 WSDLファイルの生成

メッセージに対するWSDLファイルは、XMLスキーマ定義(XSD)ファイルを使用して生成できます。メディエータを使用する場合は、次のいずれかのタイミングでWSDLファイルを生成できます。

  • メディエータの作成時に「メディエータの作成」ダイアログの「WSDLからのインタフェース定義」テンプレートを選択した場合は、「WSDL URL」フィールドの横にある「スキーマからWSDLを生成します。」を選択すると、「WSDLの作成」ダイアログが開きます。

  • インタフェース定義を使用しないメディエータで、メディエータ・エディタ「WSDL URL」フィールドの横にある「サービスの定義」をクリックした場合は、「WSDL URL」フィールドの横にある「スキーマからWSDLを生成します。」を選択すると、「WSDLの作成」ダイアログが開きます。

「WSDLの作成」ダイアログでファイル名、ディレクトリ、ネームスペースなどの標準フィールドが移入され、選択するインタフェース・タイプに応じてダイアログが変更されます。入力メッセージに対して、同一または異なるスキーマ・ファイルを指定できます。

19.7.1 WSDLファイルの生成方法

WSDLファイルの構成方法は、WSDLファイルで定義されているインタフェースのタイプによって異なります。一方向インタフェース、同期インタフェースまたは非同期インタフェースを定義できます。

19.7.1.1 XSDファイルから一方向インタフェース用のWSDLファイルを生成するには:

メディエータを作成する場合や、メディエータのサービスを定義する場合は、「WSDLの作成」ダイアログが表示された後に、これらのステップを実行します。

  1. 「WSDLの作成」ダイアログで、デフォルト値を受け入れるか、WSDLファイルに次の情報を入力します。

    表19-2 WSDLのプロパティ

    プロパティ 説明

    ファイル名

    WSDLファイルの一意の名前。

    ディレクトリ

    WSDLファイルを格納するディレクトリ。デフォルトでは、プロジェクト・フォルダの下にあるSOA/WSDLsフォルダに格納されています。

    ネームスペース

    WSDLファイルのネームスペース・アドレス。たとえば、http://oracle.com/esb/namespaces/Mediator。デフォルトのネームスペースは、JDeveloperのアプリケーション名、プロジェクト名およびメディエータ名に基づきます。

    指定するネームスペースは、WSDLファイルでtnsネームスペースとして定義されます。

    ポート・タイプ

    使用する操作が含まれるWSDLファイルのポート・タイプの名前。

    操作

    実行するアクションの名前。たとえば、executeQuery

    ノート:

    操作名やポート・タイプで、空白や特殊文字は使用できません。アルファベットおよび数字のみがサポートされますが、最初の文字に数字は使用できません。

  2. 「インタフェース・タイプ」フィールドで、「一方向インタフェース」を選択します。

    図19-21に示すように、「入力」フィールドが表示されます。

    図19-21 一方向インタフェースの「WSDLの作成」ダイアログ

    図19-21の説明が続きます
    「図19-21 一方向インタフェースの「WSDLの作成」ダイアログ」の説明
  3. 「入力」フィールドの右上の「新規メッセージ・パートを追加します。」をクリックします。

    図19-22に示すように、「メッセージ・パートの追加」ダイアログが表示されます。

    図19-22 「メッセージ・パートの追加」ダイアログ

    図19-22の説明が続きます
    「図19-22 「メッセージ・パートの追加」ダイアログ」の説明
  4. 「パート名」フィールドに、メッセージ・パートの名前を入力します。

  5. 「URL」フィールドの右側にある「スキーマ・ファイルを参照」アイコンをクリックして、URLを参照します。

    図19-23に示すように、「タイプ・チューザ」ダイアログが表示され、これにはスキーマ・ファイル(XSDファイル)のリストが含まれます。

    図19-23「タイプ・チューザ」ダイアログ

    図19-23の説明が続きます
    「図19-23 「タイプ・チューザ」ダイアログ」の説明
  6. 「タイプ・エクスプローラ」ツリーを開き、検索して使用するスキーマ要素を選択します。

    使用するスキーマが、作業しているプロジェクトにない場合、「スキーマ・ファイルのインポート」またはダイアログの右上隅にある「WSDLのインポート」アイコンを使用して、スキーマXSDファイルまたはWSDLファイルをプロジェクトにインポートできます。

    ファイルを指定すると、Oracle JDeveloperによってファイルが解析されて定義済のスキーマ要素が決定され、選択するリストに表示されます。

  7. XSDファイルのルート要素を選択し、「OK」をクリックします。

    「メッセージ・パートの追加」ダイアログが再度表示され、「URL」「スキーマ要素」フィールドに「タイプ・チューザ」ダイアログからのデータが移入されます。XSDの単純型を選択した場合、これらのフィールドは、「単純型」フィールドに置換されます。

  8. 「メッセージ・パートの追加」ダイアログで、「OK」をクリックします。

    「WSDLの作成」ダイアログの「入力」フィールドに、入力情報が表示されます。

  9. 必要に応じて、前述のステップを繰り返して、追加のメッセージ・パートを定義します。

  10. 「OK」をクリックします。

    ノート:

    パートナ・リンク・タイプは通常BPELで使用されるため、メディエータに「partnerlinkType拡張機能の生成」を選択する必要はありません

19.7.1.2 XSDファイルから同期インタフェース用のWSDLファイルを生成するには:

メディエータを作成する場合や、メディエータのサービスを定義する場合は、「WSDLの作成」ダイアログが表示された後に、これらのステップを実行します。

  1. 「WSDLの作成」ダイアログで、表19-2にリストされているプロパティの情報を入力します。

  2. 「インタフェース・タイプ」フィールドで、「同期インタフェース」を選択します。

    図19-24に示すように、「入力」「出力」および「フォルト」フィールドが表示されます。

    図19-24 同期インタフェースの「WSDLの作成」ダイアログ

    図19-24の説明が続きます
    「図19-24 同期インタフェースの「WSDLの作成」ダイアログ」の説明
  3. 前述の手順のステップ3から8を繰り返します。

  4. 同じステップを繰り返して、「出力」フィールドおよび「フォルト」フィールドのメッセージ・パートを定義します。

    出力はレスポンス・メッセージを表し、同期トランザクションに必要です。「フォルト」はオプションです。

  5. 「OK」をクリックします。

    ノート:

    パートナ・リンク・タイプは通常BPELで使用されるため、メディエータに「partnerlinkType拡張機能の生成」を選択する必要はありません

19.7.1.3 XSDファイルから非同期インタフェース用のWSDLファイルを生成するには:

メディエータを作成する場合や、メディエータのサービスを定義する場合は、「WSDLの作成」ダイアログが表示された後に、これらのステップを実行します。

  1. 「WSDLの作成」ダイアログで、表19-2にリストされているプロパティの情報を入力します。

  2. 「インタフェース・タイプ」フィールドで、「非同期インタフェース」を選択します。

    図19-25に示すように、「入力」フィールドおよび「コールバック」セクションが表示されます。

    図19-25 「非同期インタフェース」の「WSDLの作成」ダイアログ

    図19-25の説明が続きます
    「図19-25 「非同期インタフェース」の「WSDLの作成」ダイアログ」の説明
  3. 前述の手順のステップ3から8を繰り返します。

  4. 同じステップを繰り返して、「コールバック」セクションの入力メッセージ・パートを定義します。

    ノート:

    コールバック入力はレスポンス・メッセージを表し、非同期トランザクションに必要です。

  5. 「コールバック」セクションで、レスポンス・メッセージに関する次の情報を指定します。

    • ポート・タイプ: 使用する操作が含まれるWSDLファイルのポート・タイプの名前。

    • 操作: 実行するアクションの名前。たとえば、executeResponse

      ノート:

      操作名やポート・タイプで、空白や特殊文字は使用できません。アルファベットおよび数字のみがサポートされますが、最初の文字に数字は使用できません。これらのフィールドの両方が必要です。

  6. 「OK」をクリックします。

    ノート:

    パートナ・リンク・タイプは通常BPELで使用されるため、メディエータに「partnerlinkType拡張機能の生成」を選択する必要はありません

19.8 検証および優先度のプロパティの指定

メディエータを作成した後は、そのコンポーネントに指定されている操作またはイベント・サブスクリプションのプロパティを構成できます。メディエータ・エディタで、インバウンド・メッセージのスキーマを検証するかどうかを指定し、操作またはイベント・サブスクリプションの優先度を指定できます。

インバウンド・メッセージのスキーマを検証するには、メディエータ・エディタの「ルーティング・ルール」セクションで、操作またはイベント・サブスクリプションの「有効な構文(XSD)の検証」チェック・ボックスを選択します。メディエータ・エンジンは、関連するXMLスキーマに対してXMLインバウンド・ペイロードの構文構造を検証します。不適切な要素名や場所などの構文エラーによって、フォルトが発生し、ルーティング・ルールが処理されません。

Oracle Mediatorコンポーネントの優先度を指定するには、メディエータ・エディタの「ルーティング・ルール」セクションの「優先度」フィールドで0から9の間の値を選択します。これにより、すべてのOracle Mediatorサービス・コンポーネントにおいてメッセージが取得される順序が決まります。このプロパティは、パラレルのルーティング・ルールの場合のみ有効で、順次ルーティング・ルールの場合は無効です。優先度の詳細は、「パラレルのルーティング・ルールの基本原則」を参照してください。

19.9 メディエータ・サービス・コンポーネントの変更

メディエータの操作またはイベント・サブスクリプションは、メディエータ・エディタを使用して変更できます。

19.9.1 メディエータの操作の変更方法

操作を追加または削除することで、Oracle MediatorのWSDLファイルを変更できます。WSDLファイルの変更後、「WSDLのリフレッシュ」ダイアログを使用して変更を同期化します。

操作を変更するには:

  1. メディエータ・エディタで、「WSDL URL」フィールドの右側にある「WSDLからの操作のリフレッシュ」アイコンをクリックします。

    「WSDLのリフレッシュ」ダイアログが表示されます。WSDLファイルが変更された場合、「WSDLのリフレッシュ」ダイアログには削除または追加される操作がすべて一覧表示されます。「リフレッシュにより、次のメディエータ操作が削除されます」フィールドには、WSDLファイルから削除された操作がすべて一覧表示されます。「リフレッシュにより、次のメディエータ操作が追加されます」フィールドに、WSDLファイルに追加された新規操作がすべて一覧表示されます。図19-26に、「WSDLのリフレッシュ」ダイアログを示します。

    図19-26 「WSDLのリフレッシュ」ダイアログ

    図19-26の説明が続きます
    「図19-26 「WSDLのリフレッシュ」ダイアログ」の説明
  2. 別のWSDLファイルを指定するには、「WSDL URL」フィールドの右側にある「既存のWSDLを検索します。」をクリックして既存のWSDLファイルを使用するか、または「スキーマからWSDLを生成します。」をクリックしてWSDLファイルを作成します。

    「WSDLのリフレッシュ」ダイアログは、指定のWSDLファイルで定義された操作に基づいて更新されます。

  3. 「OK」をクリックします。
  4. 「ファイル」メニューから「すべて保存」を選択します。

19.9.2 メディエータのイベント・サブスクリプションの変更方法

メディエータ・エディタ「イベント・サブスクリプションの管理」オプションを使用すると、新規イベントのサブスクライブ、既存イベント・サブスクリプションの変更およびサブスクライブ済イベントからのサブスクライブ解除などを実行できます。

イベント・サブスクリプションを変更するには:

  1. メディエータ・エディタで、「イベント・サブスクリプション」の右側にある「イベント・サブスクリプションの管理」アイコンをクリックします。

    図19-27に示すように、「サブスクライブ済イベント」ダイアログが表示されます。

    図19-27 「サブスクライブ済イベント」ダイアログ

    図19-27の説明が続きます
    「図19-27 「サブスクライブ済イベント」ダイアログ」の説明
  2. 次の機能のいずれも実行できます。
    • 新規イベントをサブスクライブします。

    • イベントからサブスクライブ解除します。

    • イベントのフィルタ基準を変更または指定します。

    • イベント・サブスクリプションの「一貫性」または「ロールとして実行」プロパティを変更します。

      イベントの「一貫性」「ロールとして実行」および「フィルタ」フィールドの詳細は、「メディエータのインタフェース定義の構成方法」を参照してください。

  3. 「OK」をクリックします。
  4. 「ファイル」メニューから「すべて保存」を選択します。