プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Service Busでのサービスの開発
12c (12.1.3)
E53004-06
目次へ移動
目次

前
次

13 Oracle Service Busコンソールでのパイプラインの操作

この章では、Oracle Service Busコンソールを使用してパイプラインまたはメッセージ・フローを作成および構成する方法について説明します。この項には、パイプライン・ペア、条件付きブランチ、ステージ、オペレーション・ブランチおよびルート・ノードの作成および構成が含まれます。

パイプラインおよびそれらのコンポーネントの詳細は、「Oracle Service Busでのメッセージ・フローの作成」を参照してください。

13.1 Oracle Service Busコンソールのパイプライン・デザイナの概要

パイプライン・デザイナでは、アクションを作成および構成する際、メッセージ・フローがグラフィカルに表示されます。

13.1.1 コンソールの「メッセージ・フローの編集」ページ

「メッセージ・フローの編集」ページを使用して、パイプラインのメッセージ・フローを作成します。

「メッセージ・フローの編集」ページの左側のナビゲーション・ペインに、パイプライン内のノードとオブジェクトのツリー・ビューが表示されます。オブジェクトの詳細が別のページで定義されている場合は、オブジェクトの名前をクリックして、関連付けられているページを表示できます。

右側のペインには、パイプラインを作成するためのフィールドが表示されます。メッセージ・フローがまだ定義されていない場合、ペインには、パイプラインの開始ノードを示す1つの「パイプライン」アイコンがあります。アイコンをクリックして、サービスのパイプライン・ペア・ノード、ルート・ノード、条件付きブランチ、操作ブランチ、およびエラー処理を追加します。

ページにオブジェクトを追加すると、そのオブジェクトを示すアイコンがページに表示されます。オブジェクト間の関係は、線と境界を示す四角形で示されます。「メッセージ・フローの編集」ページのアイコンをクリックすると、そのオブジェクトで実行できるアクションのメニューが表示されます。メニューに含まれるオプションは、コンテキストに応じて異なります。アイコンとオプションの完全なリストについては、表13-1を参照してください。

表13-1 「メッセージ・フローの編集」ページのアイコンとオプション

アイコン 説明 メニュー・オプション
開始ノード・アイコン

パイプライン

パイプラインの開始ノード。

パイプライン・ペア・アイコン

パイプライン・ペア・ノード

パイプライン・ペア・ノードはリクエスト・パイプラインとレスポンス・パイプラインから成ります。

レスポンス・パイプライン・アイコン

レスポンス・パイプライン

前述のパイプライン・ペア・ノードを参照してください。

リクエスト・パイプライン・アイコン

リクエスト・パイプライン

前述のパイプライン・ペア・ノードを参照してください。

エラー・ハンドラのあるパイプライン・アイコン

エラー・ハンドラのあるパイプライン

エラー・ハンドラが定義されているパイプライン。

ルート・ノード・アイコン

ルート・ノード

ルート・ノード・アクションは、ルート・ノードを通過する際のメッセージの処理を定義します。

エラー・ハンドラがあるルート・ノード・アイコン

エラー・ハンドラがあるルート・ノード

エラー・ハンドラが定義されているルート・ノード。

ステージ・ノード・アイコン

ステージ・ノード

ステージ・ノードは、アクションのコンテナです。

エラー・ハンドラがあるステージ・ノード・アイコン

エラー・ハンドラがあるステージ・ノード

エラー・ハンドラが定義されているステージ・ノード。

条件付きブランチ・ノード・アイコン

条件付きブランチ・ノード

条件付きブランチ・ノードを使用すると、可能ないくつかのパスのうちの1つに限定して処理を進ませることができます。

操作ブランチ・ノード・アイコン

操作ブランチ・ノード

オペレーション・ブランチ・ノードでは、指定された操作に基づいてどのブランチに進むかが判断されます。

ブランチ・ノード・アイコン

ブランチ・ノード

ブランチ・ノードは、条件付きブランチ・ノードまたはオペレーション・ブランチ・ノードによって定義される代替ノードの1つです。

エラー・ハンドラ・アイコン

エラー・ハンドラ

エラー・ハンドラは、パイプラインでエラーを再送するロジックを提供します。

13.1.2 コンソールの「ステージ構成の編集」ページ

「ステージ構成の編集」ページを使用して、パイプラインのパイプライン・ステージ、エラー・ハンドラ・ステージおよびルート・ノードにアクションを追加します。

  • 「ステージ構成の編集」ページでまだ何も定義されていない場合、表示されるオブジェクトは「アクションの追加」アイコンのみです。アイコンをクリックして作業を開始します。

  • ステージまたはルート・ノードがすでに構成されている場合は、そのステージまたはルート・ノードに対して定義されているアクションとオブジェクトがページに表示されます。必要に応じて、既存のアクションを編集するか、または、アクションを表すアイコンのいずれかをクリックして、ステージにアクションを追加します。

ステージに追加できるすべての種類のアクションの操作手順については、「コンソールでのパイプライン・アクションの追加と編集」を参照してください。

13.2 コンソールでのパイプラインの表示と編集

Oracle Service Busコンソールからパイプライン・デザイナを起動すると、パイプライン・デザイナは新しいブラウザ・ウィンドウで開かれます。

13.2.1 コンソールでのパイプラインの表示および編集方法

Oracle Service Busコンソールからパイプライン・デザイナにアクセスするには、次の手順を実行します。

コンソールでパイプラインを表示および編集するには:

  1. セッションをまだ作成していない場合は、「作成」をクリックして新しいセッションを作成するか、「編集」をクリックして既存のセッションを入力します。
  2. 「Oracle Service Busコンソール」ウィンドウの左ペインで、「リソース」タブをクリックします。プロジェクト・ナビゲータが表示されます。
  3. 「すべてのプロジェクト」をクリックしてから、サービス・バス・プロジェクトの名前をクリックします。
  4. パイプラインを編集するパイプライン・リソースをクリックします。
  5. ウィンドウの右上隅付近にある「メッセージ・フローを開く」アイコンをクリックします。
    • 選択したパイプラインに、まだメッセージ・フローが作成されていない場合は、1つのアイコン(「パイプライン」アイコン)が含まれた「メッセージ・フローの編集」ページが表示されます。これは、パイプライン・メッセージ・フローの開始ノードになります。このアイコンをクリックして、メッセージ・フローの作成を開始します。

    • パイプラインにすでにメッセージ・フローがある場合、ページにはフローが図で表示されます。アイコンをクリックして、メッセージ・フローの各部を表示または編集します。

    メッセージ・フローの作成については、「Oracle Service Busコンソールでのパイプライン・アクションの操作」を参照してください。

  6. 「保存」アイコンをクリックして、現在のセッションで更新をコミットします。
  7. セッションを終了して構成をランタイムにデプロイするには、Oracle Service Busコンソール・ウィンドウの右上隅にある「アクティブ化」をクリックします。

13.2.2 コンソールでのパイプラインへの共有変数の追加方法

1つのコール・チェーン内の2つのパイプラインで同じ共有変数を宣言する場合、これらは呼出しコール・チェーンの範囲内の同じ変数を読み取り、変更します。つまり、パイプラインP1で共有変数varを宣言し、パイプラインP1が、同様に共有変数varを宣言するパイプラインP2を呼び出す場合、P1のvarの変更はP2に表示され、逆も当てはまります。共有変数は、文字列、ブールまたはXMLのデータ型にする必要があります。

パイプラインでメッセージを受信して処理する場合、共有変数を使用する呼び出されたすべてのパイプラインは、その変数に対して同じ値を読書きします。プロキシで受信する以降のメッセージにより、呼び出されたパイプラインに共有変数の新しいインスタンスが作成されます。

共有変数は、ローカル・プロキシの呼出しと分割-結合コンポーネントの呼出しで機能します。たとえば、パイプラインP1およびP2で共有変数を宣言するとします。ここで、P1がローカル・プロキシ・サービスまたは分割-結合コンポーネントを呼び出し、このサービスまたはコンポーネントが同様にP2を呼び出す場合、P1とP2は引き続き共有変数を共有します。

次の制限事項が共有変数の使用に適用されます。

  • システム変数($body、$attachments、$operation、$inbound、$outboundなど)は共有できません。

  • 変数は、ローカル以外のプロキシ呼出しで共有できません。たとえば、パイプラインでHTTPプロキシ・サービスを呼び出す場合、共有変数はこのコール間で伝播されません。

  • 変数は、パイプラインと分割-結合リソース間で共有できません。

  • Javaとバイナリ・コンテンツ・タイプを使用する変数はサポートされません。たとえば、XML構造に<ctx:java-content/>があるXML型変数は、共有変数としてサポートされません。

始める前に

この手順は、「コンソールでのパイプラインの表示と編集」の説明に従って、すでに「メッセージ・フローの編集」ページでパイプラインを編集していることを前提としています。

パイプラインに共有変数を追加するには:

  1. 「「共有変数」セクションの展開」をクリックして、「メッセージ・フローの編集」ページの左上隅にある「共有変数」セクションを開きます。
  2. 「変数」フィールドに、共有変数の名前を入力します。
  3. 「追加」をクリックして、パイプラインに共有変数を追加します。

13.2.3 パイプラインへのパイプライン・ペアの追加方法

パイプラインには、パイプライン・ペア・ノード(パイプライン(またはサービスの処理用)のリクエストおよびレスポンス・パイプライン)と、ステージ、パイプラインおよびサービスに対して定義できるエラー・ハンドラ・パイプラインをゼロ個以上含めることができます。パイプラインは、1つまたは複数のステージを持つことができ、ステージはアクションを持ちます。

始める前に

この手順は、「コンソールでのパイプラインの表示と編集」の説明に従って、すでに「メッセージ・フローの編集」ページでパイプラインを編集していることを前提としています。

パイプラインにパイプライン・ペアを追加するには:

  1. 「パイプライン」アイコンをクリックし、「パイプライン・ペアの追加」をクリックします。

  2. パイプライン・ペア・ノードのデフォルト名を変更して説明を追加するには、次の操作を行います。

    1. パイプライン・ペア・ノード・アイコンをクリックし、「名前とコメントの編集」をクリックします。

    2. 必要に応じて名前と説明を変更します。

    3. 「保存」をクリックします。

      注意:

      パイプライン名やルート・ノード名を変更すると、パイプライン・カウンタがゼロにリセットされるので、「モニター」モジュールの「ダッシュボード」ページに表示されるメッセージの数と他のコンポーネントのメッセージ数との相関関係がなくなる可能性があります。これは、Service Busでは、いったん削除して再作成するアクションとして名前の変更を処理しているためです。これらのメッセージ数は、サービスのモニター間隔と同じ時間が経過した後に再び関連付ける必要があります。

  3. パイプラインにステージを追加するには、「コンソールでのパイプラインへのステージの追加方法」を参照してください。

  4. パイプラインのステージにアクションを追加するには、「コンソールでのパイプライン・アクションの追加と編集」を参照してください。

  5. 「保存」をクリックして、現在のセッションで更新をコミットします。

  6. セッションを終了して構成をランタイムにデプロイするには、Oracle Service Busコンソール・ウィンドウの右上隅にある「アクティブ化」をクリックします。

13.2.4 コンソールでのパイプラインへの条件付きブランチの追加方法

ブランチ・ノードを使用すると、可能ないくつかのパスのうちの1つに限定して処理を進めることができます。分岐は、XPathベースの切替え表に基づいて実行されます。表の各ブランチは、条件(たとえば、<500)を指定し、これが単一のXPath式(たとえば、$body./ns: PurchaseOrder/ns:totalCost)に対してパイプラインの降順に評価されます。最初に満たされた条件によって、進むべきブランチが決定されます。満たされる分岐条件がない場合は、デフォルトのブランチに進みます。ブランチ・ノードでは、パイプライン内にいくつかの子孫を持つことができます(デフォルトのブランチを含め各ブランチに1つずつ)。

プロキシ・サービスがWSDLファイルに基づいておらず、複数のドキュメント・タイプを入力として受信する場合は、条件付きブランチ・ノードを使用することを検討してください。

条件付きブランチ処理は、単純でありながらユニークな文字列値のタグが付いたブランチをまとめたルックアップ表を基準に行われます。メッセージ・コンテキストの変数をそのノードのルックアップ変数として指定し、実行時に、この値を使用してどのブランチに進むかが判断されます。ルックアップ変数に一致するブランチがない場合は、デフォルトのブランチに進みます。ブランチ・ノードに到達する前にルックアップ変数の値が設定されるように、パイプラインを設計する必要があります。

始める前に

この手順は、「コンソールでのパイプラインの表示と編集」の説明に従って、すでに「メッセージ・フローの編集」ページでパイプラインを編集していることを前提としています。

パイプラインに条件付きブランチを追加するには:

  1. 「パイプライン・ペア・ノード」アイコンまたは「ブランチ・ノード」アイコンをクリックして、「条件付きブランチ・ノードの作成」をクリックします。条件付きブランチ・ノードが追加され、挿入したブランチ・ノードの後の既存のノードが、新しい条件付きブランチ・ノードのデフォルト・ブランチに移動します。

  2. ブランチ・ノードのデフォルト名を変更して説明を追加するには、次を行います:

    1. 「条件付きブランチ」アイコンをクリックし、「名前とコメントの編集」をクリックします。

    2. 必要に応じて名前と説明を変更します。

    3. 「保存」をクリックします。

  3. ブランチ定義を追加するには、「条件付きブランチ」アイコンをクリックし、「ブランチの編集」をクリックします。「ブランチ・ノードの編集」ページが表示されます。

  4. 次を実行します。

    1. 「選択したパス」フィールドで「編集」をクリックして、XPath式を追加し、パスを指定します。インラインXQueryおよびXPath式の作成と編集を参照してください。

    2. 「変数」フィールドにコンテキスト変数を入力します。

    3. 「演算子」フィールドから、比較演算子を選択します。

    4. 「値」フィールドにブランチの値を入力します。

    5. 「ラベル」フィールドにブランチのラベルを入力します。

  5. (オプション)「オプション」で次のようにします。

    • 「新しいブランチの追加」をクリックして、このブランチ・ノードに新しいブランチ定義を追加します。

    • 「このブランチを削除」をクリックして、ブランチ定義を削除します。

    • 「ブランチを上に移動」または「ブランチを下に移動」をクリックして、ブランチ定義の位置を変更します。このオプションは、複数のブランチ定義が存在する場合にのみ表示されます。

  6. 「保存」をクリックして、現在のセッションで更新をコミットします。

  7. 「メッセージ・フローの編集」ページで、「コンソールでのパイプラインの表示と編集」の説明に従って、パイプラインの作成を続けます。

  8. 「保存」をクリックして、現在のセッションで更新をコミットします。

  9. セッションを終了して構成をランタイムにデプロイするには、Oracle Service Busコンソール・ウィンドウの右上隅にある「アクティブ化」をクリックします。

13.2.5 コンソールでのパイプラインへの操作ブランチの追加方法

パイプラインでWeb Services Description Language (WSDL)ベースのプロキシ・サービスを定義する場合、操作固有の処理が必要になります。Service Busでは、操作に基づくブランチ・ノードを手動で構成するかわりに、操作に基づいて自動的に分岐するように構成された、最小限のブランチ・ノードが用意されています。つまり、操作ブランチ・ノードをパイプラインに作成すると、Oracle Service Busコンソールでは、WSDLに定義された操作がブランチ・ノード構成ページに表示されるため、これらの操作に基づいて分岐ロジックをすばやく構築できます。

ブランチ・ノードを使用すると、可能ないくつかのパスのうちの1つに限定して処理を進めることができます。分岐は、XPathベースの切替え表に基づいて実行されます。表の各ブランチは、条件(たとえば、<500)を指定し、これが単一のXPath式(たとえば、$body./ns: PurchaseOrder/ns:totalCost)に対してパイプラインの降順に評価されます。最初に満たされた条件によって、進むべきブランチが決定されます。満たされる分岐条件がない場合は、デフォルトのブランチに進みます。ブランチ・ノードでは、パイプライン内にいくつかの子孫を持つことができます(デフォルトのブランチを含め各ブランチに1つずつ)。

始める前に

この手順は、「コンソールでのパイプラインの表示と編集」の説明に従って、すでに「メッセージ・フローの編集」ページでパイプラインを編集していることを前提としています。

パイプラインに操作ブランチを追加するには:

  1. 「パイプライン・ペア・ノード」アイコンまたは「ブランチ・ノード」アイコンをクリックして、「操作ブランチ・ノードの作成」をクリックします。操作ブランチ・ノードが追加され、挿入したブランチ・ノードの後の既存のノードが、新しい操作ブランチ・ノードのデフォルト・ブランチに移動します。

  2. ブランチ・ノードのデフォルト名を変更して説明を追加するには、次を行います:

    1. 「操作ブランチ」アイコンをクリックして、「名前とコメントの編集」をクリックします。

    2. 必要に応じて名前と説明を変更します。

    3. 「保存」をクリックします。

  3. ブランチ定義を追加するには、「操作ブランチ」アイコンをクリックし、「ブランチの編集」をクリックします。「ブランチ・ノードの編集」ページが表示されます。

  4. 「操作ブランチ定義」パネルで、サービス操作を選択します。

  5. (オプション)「オプション」で次のようにします。

    • 「新しいブランチの追加」をクリックして、このブランチ・ノードに新しいブランチ定義を追加します。

    • 「このブランチを削除」をクリックして、ブランチ定義を削除します。

    • 「ブランチを上に移動」または「ブランチを下に移動」をクリックして、ブランチ定義の位置を変更します。このオプションは、複数のブランチ定義が存在する場合にのみ表示されます。

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

  7. 「メッセージ・フローの編集」ページで、「コンソールでのパイプラインの表示と編集」の説明に従って、パイプラインの作成を続けます。

  8. 「保存」をクリックして、現在のセッションで更新をコミットします。

  9. セッションを終了して構成をランタイムにデプロイするには、Oracle Service Busコンソール・ウィンドウの右上隅にある「アクティブ化」をクリックします。

13.2.6 コンソールでのパイプラインへのステージの追加方法

始める前に

この手順は、「コンソールでのパイプラインの表示と編集」の説明に従って、すでに「メッセージ・フローの編集」ページでパイプラインを編集していることを前提としています。

パイプラインにステージを追加するには:

  1. 必要に応じて、「パイプライン・ペア・ノード」アイコンの左側にあるプラス記号クリックしてパイプライン・ペア・ノードを展開します。パイプライン・ペアには、「リクエスト・パイプライン」および「レスポンス・パイプライン」が含まれています。

  2. ステージに追加するパイプラインをクリックしてから、「ステージの追加」をクリックします。

  3. ステージのデフォルト名を変更して説明を追加するには、次を行います:

    1. 「ステージ」アイコンをクリックして、「名前とコメントの編集」をクリックします。

    2. 必要に応じて名前と説明を変更します。

    3. 「保存」をクリックします。

  4. ステージにアクションを追加するには、「ステージ」アイコンをクリックし、「ステージの編集」をクリックします。「コンソールでのパイプライン・アクションの追加と編集」を参照してください。

  5. ステージにエラー処理を追加するには、「ステージ」アイコンをクリックし、「ステージ・エラー・ハンドラの追加」をクリックします。「コンソールでのエラー・ハンドラの追加」を参照してください。「メッセージ・フローの編集」ページが表示されます。

  6. 「コンソールでのパイプラインの表示と編集」の説明に従って、パイプラインの作成を続けます。

  7. 「保存」をクリックして、現在のセッションで更新をコミットします。

  8. セッションを終了して構成をランタイムにデプロイするには、Oracle Service Busコンソール・ウィンドウの右上隅にある「アクティブ化」をクリックします。

13.2.7 コンソールでのパイプラインへのルート・ノードの追加方法

始める前に

この手順は、「コンソールでのパイプラインの表示と編集」の説明に従って、すでに「メッセージ・フローの編集」ページでパイプラインを編集していることを前提としています。

パイプラインにルート・ノードを追加するには:

  1. パイプライン・ペアの「パイプライン・ペア・ノード」アイコンをクリックして、「ルートの追加」をクリックします。
  2. ルート・ノードのデフォルト名の変更と説明の追加を行うには、「ルート・ノード」アイコンをクリックして、「名前とコメントの編集」をクリックします。必要に応じて名前と説明を変更し、「保存」をクリックします。

    注意:

    パイプライン名やルート・ノード名を変更すると、パイプライン・カウンタがゼロにリセットされるので、「モニター」モジュールの「ダッシュボード」ページに表示されるメッセージの数と他のコンポーネントのメッセージ数との相関関係がなくなる可能性があります。これは、Service Busでは、いったん削除して再作成するアクションとして名前の変更を処理しているためです。これらのメッセージ数は、サービスのモニター間隔と同じ時間が経過した後に再び関連付ける必要があります。

  3. ルート・ノードにアクションを追加するには、「ルート・ノード」アイコンをクリックし、「ルートの編集」をクリックします。「メッセージ・フローの編集」ページが表示されます。ルート・ノードに追加できるアクションの詳細は、次のセクションを参照してください。
  4. 「メッセージ・フローの編集」ページで、「コンソールでのパイプラインの表示と編集」の説明に従って、パイプラインの作成を続けます。
  5. 保存」をクリックして、現在のセッションで更新をコミットします。
  6. セッションを終了して構成をランタイムにデプロイするには、Oracle Service Busコンソール・ウィンドウの右上隅にある「アクティブ化」をクリックします。

13.3 ステージおよびルート・ノードの切取り、コピー、貼付け

ステージおよびルート・ノードの切り取り、コピー、貼付けが行えます。

  • ステージまたはルート・ノードを切り取るには、そのアイコンをクリックし、「切取り」または「コピー」を選択します。

  • このパイプラインのメッセージ・フロー内の異なるパイプライン・ペアから、または異なるパイプラインのメッセージ・フローから切り取ったりコピーしたステージを貼り付けるには、次のいずれかを行います。

    • 「リクエスト・パイプライン」または「レスポンス・パイプライン」アイコンをクリックして、「ステージの貼付け」をクリックします。

    • パイプラインの「ステージ」アイコンをクリックして、「貼付け」をクリックします。

  • 別のパイプラインから切り取った、またはコピーしたルート・ノードを貼り付けるには、パイプライン・ペアのパイプライン・ペア・ノード・アイコンをクリックして、「ルートの貼付け」をクリックします。

13.4 コンソールでのリシーケンサの構成

Service Busのリシーケンサは、関連はあるが順序どおりではないメッセージのストリームを連続した順序に並べ替えます。受信メッセージが到着すると、それらはランダムな順序になっています。リシーケンサは、順次または時系列の情報に基づきメッセージを順序付け、メッセージをターゲット・サービスに対して正しい手順で送信します。順序付けは、選択した順序付け戦略に基づき実行されます。

リシーケンサは、パイプライン・コンポーネント内で構成できます。次のサービス・タイプのパイプラインがサポートされます。

  • WSDL: リシーケンスは、リクエスト・タイプのみの操作に利用できます。

  • メッセージ・タイプ: リクエスト・メッセージ・タイプは「XML」、レスポンス・メッセージ・タイプは「なし」にします。

注意:

リシーケンサでは、「任意のXML」「任意のSOAP」のサービス・タイプはサポートされません。WSDLベースのサービスでは、WSDLファイルは一方向であることが必要です。つまり、これに出力要素を含めることはできません。リシーケンス・パイプラインでの生成WSDLファイルの使用については、「コンソールでのWSDLファイルのエクスポート方法」を参照してください。

13.4.1 コンソールでパイプラインでのリシーケンスを構成する方法

この項では、Oracle Service Busコンソールを使用してパイプラインでリシーケンサを構成する方法について説明します。

パイプライン・コンポーネントでリシーケンスを有効にするには:

  1. セッションをまだ作成していない場合は、「作成」をクリックして新しいセッションを作成するか、「編集」をクリックして既存のセッションを入力します。
  2. 「Oracle Service Busコンソール」ウィンドウの左ペインで、「リソース」タブをクリックします。プロジェクト・ナビゲータが表示されます。
  3. 「すべてのプロジェクト」をクリックしてから、サービス・バス・プロジェクトの名前をクリックします。
  4. リシーケンサを構成するパイプライン・リソースをクリックします。パイプライン定義ページが表示されます。
  5. 「構成」タブが選択されていることを確認します。パイプライン定義ページの左ペインで「リシーケンサ」をクリックします。
  6. 「リシーケンスの有効化」を選択して、パイプラインのリシーケンスを有効にします。図13-1に、パイプライン定義のリシーケンス・ページの「リシーケンスの有効化」オプションを示します。

    図13-1 Oracle Service Busコンソールでのリシーケンサの有効化

    図13-1の説明が続きます
    「図13-1 Oracle Service Busコンソールでのリシーケンサの有効化」の説明
  7. 「リシーケンス・レベル」を選択します。「パイプライン」を選択して、コンポーネント・レベルでリシーケンスを構成します。「操作」を選択して、操作レベルでリシーケンスを構成します。リシーケンス・レベルの詳細は、「コンソールでのリシーケンス・レベルの選択方法」を参照してください。

    「操作」を選択した場合、操作ごとにリシーケンスを個別に構成するオプションを利用できます。

  8. 「リシーケンス・モード」を選択します。「操作」レベルでリシーケンスを構成する場合、各操作に対応する「リシーケンス・モード」を選択します。各種リシーケンス・オプションの詳細は、「コンソールでのリシーケンス・モードの構成方法」を参照してください。

    選択した「リシーケンス・モード」に応じて、そのモードに対応するオプションを利用できます。たとえば、「標準」モードを選択するには、「グループ式」、「ID式」などの値を選択する必要があります。図13-2に、「標準」モードの場合に表示されるオプションを示します。

    図13-2 標準モードのリシーケンスで表示される構成オプション

    図13-2の説明が続きます
    「図13-2 標準モードのリシーケンスで表示される構成オプション」の説明
  9. 使用するワーク・マネージャを指定する「ディスパッチ・ポリシー」を選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。
  10. 「保存」アイコンをクリックして、変更をコミットします。

13.4.2 コンソールでのリシーケンス・レベルの選択方法

リシーケンスは、パイプライン・レベルまたは操作レベルのいずれかで定義できます。リシーケンス・レベルの値は、次のとおりです。

  • パイプライン: コンポーネント・レベルで指定した共通構成を使用してすべてのメッセージをリシーケンスします。コンポーネントに複数の操作がある場合、各操作のメッセージは、共有コンポーネント構成を使用して個別に順序付けられます。

    コンポーネント・レベルのリシーケンスは、パイプライン・コンポーネントのすべての操作でリクエスト一方向メッセージをサポートする場合のみ許可されます。操作のサブセットのみがリクエスト一方向メッセージをサポートする場合、これらの操作に操作レベルのリシーケンスを個別に指定できます。

  • 操作: WSDLベースのパイプラインの場合、リシーケンスは操作レベルで構成できます。各操作には異なるリシーケンサ構成を設定できます。リクエスト一方向メッセージをサポートする操作のみをリシーケンスできます。WSDL以外のパイプラインでは、操作レベルでリシーケンサを構成できません。

13.4.3 コンソールでのリシーケンス・モードの構成方法

この項では、様々なリシーケンス・モードの構成方法を示します。各種リシーケンス・モードの詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のリシーケンス順序に関する項を参照してください。デフォルトでは、グループIDの文字数制限は1000、IDの文字数制限は100です。

13.4.3.1 標準リシーケンサの構成

標準リシーケンサを構成するには:

  1. パイプライン定義のリシーケンス・ページで、「リシーケンス・モード」ドロップダウン・リストから「標準」を選択します。操作レベルでリシーケンスを構成する場合、操作の「リシーケンス・モード」ドロップダウン・リストから、「標準」を選択します。

    標準リシーケンス構成に関連するフィールドがページに表示されます。詳細は、図13-2を参照してください。

  2. 表13-2に示すフィールドに入力します。

表13-2 標準リシーケンスのオプション

フィールド名 説明 デフォルト値 必須

グループ式

グループ化が行われる受信メッセージのフィールドを指し示すXQuery式。値を入力しない場合、すべてのメッセージが1つのデフォルト・グループに配置されます。

右側の「式ビルダー」アイコンをクリックして、XQuery/XSLT式エディタを呼び出します。

N/A

N

ID式

リシーケンスが行われる受信メッセージのフィールドを指し示すXQuery式。

右側の「式ビルダー」アイコンをクリックして、XQuery/XSLT式エディタを呼び出します。

N/A

Y

開始

ID順序の開始番号。

1

N

増分

ID順序の増分。

1

N

タイムアウト

予期されているメッセージを待機する期間(秒単位)。タイムアウトが発生すると、再シーケンサはグループをタイムアウトとしてロックします。

デフォルト値の0の場合、デフォルトではグループに対してタイムアウトが発生することはありません。

0

N

13.4.3.2 FIFOリシーケンサの構成

FIFOリシーケンサを構成するには:

  1. パイプライン定義のリシーケンス・ページで、「リシーケンス・モード」ドロップダウン・リストから「FIFO」を選択します。操作レベルでリシーケンスを構成する場合、操作の「リシーケンス・モード」ドロップダウン・リストから、「FIFO」を選択します。

    FIFOリシーケンス構成に関連するフィールドがページに表示されます。

  2. 「グループ式」フィールドに、グループ化が行われる受信メッセージのフィールドを指し示すXQuery式を入力します。

    右側の「式ビルダー」アイコンをクリックして、XQuery/XSLT式エディタを呼び出します。

13.4.3.3 ベスト・エフォート・リシーケンサの構成

ベスト・エフォート・リシーケンサを構成するには:

  1. パイプライン定義のリシーケンス・ページで、「リシーケンス・モード」ドロップダウン・リストから「ベスト・エフォート」を選択します。操作レベルでリシーケンスを構成する場合、操作の「リシーケンス・モード」ドロップダウン・リストから、「ベスト・エフォート」を選択します。

    ベスト・エフォート・リシーケンス構成に関連するフィールドがページに表示されます。

  2. 表13-3に示すフィールドに入力して、ベスト・エフォート・リシーケンサを構成します。

    表13-3 ベスト・エフォート・リシーケンスのオプション

    フィールド名 説明 デフォルト値 必須

    グループ式

    グループ化が行われる受信メッセージのフィールドを指し示すXQuery式。ここに値を入力しない場合、すべてのメッセージは1つのデフォルト・グループ内になると見なされます。

    右側の「式ビルダー」アイコンをクリックして、XQuery/XSLT式エディタを呼び出します。

    N/A

    N

    ID式

    リシーケンスが行われる、IDを含む受信メッセージのフィールドを指し示すXQuery式。

    右側の「式ビルダー」アイコンをクリックして、XQuery/XSLT式エディタを呼び出します。

    N/A

    Y

    データ型

    順序IDのデータ型。注文プロセスはデータ型に基づいています。サポートされる値は、「日付/時刻」と「数値」です。

    数値

    Y

    最大行数

    再シーケンサが一度にデータ・ストアから取得する、順に従ったメッセージの数。これは正の整数にしてください。

    「最大行数」または「時間ウィンドウ」(次に説明)を指定する必要がありますが、両方を指定しないでください。

    5

    N

    時間ウィンドウ

    メッセージが到着した後、リシーケンスに関してデータ・ストアからメッセージを選択するまでに待機する秒単位の時間。デフォルト値の0の場合、待機しません。

    「時間ウィンドウ」または「最大行数」(前述)を指定する必要がありますが、両方を指定しないでください。

    0

    N

13.5 変数の構造のマッピングの作成

次の項では、様々なタイプの変数の構造のマッピングを作成する方法について説明します。

13.5.1 サンプルWSDLドキュメント

このサンプルWSDLドキュメントは、この項のほとんどの例で使用します。このWSDLドキュメントをリソースとして構成に保存してください。詳細は、「例で必要なリソースの作成」を参照してください。

例 - サンプルWSDLドキュメント

<definitions 
    name="samplewsdl" 
    targetNamespace="http://example.org" 
    xmlns="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:s0="http://www.oracle.com" 
    xmlns:s1="http://example.org" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> 
<types> 
  <xs:schema 
    attributeFormDefault="unqualified" 
    elementFormDefault="qualified" 
    targetNamespace="http://www.oracle.com" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="PO" type="s0:POType"/>
    <xs:complexType name="POType">
      <xs:all>
        <xs:element name="id" type="xs:string"/>
        <xs:element name="name" type="xs:string"/>
      </xs:all>
    </xs:complexType>
    <xs:element name="Invoice" type="s0:InvoiceType"/>
    <xs:complexType name="InvoiceType">
      <xs:all>
        <xs:element name="id" type="xs:string"/>
        <xs:element name="name" type="xs:string"/>
      </xs:all>
    </xs:complexType>
</xs:schema>
</types>
<message name="POTypeMsg">
    <part name="PO" type="s0:POType"/>
</message>
<message name="InvoiceTypeMsg">
    <part name="InvReturn" type="s0:InvoiceType"/>
</message>

<portType name="POPortType">
    <operation name="GetInvoiceType">
      <input message="s1:POTypeMsg"/>
      <output message="s1:InvoiceTypeMsg"/>
    </operation>
</portType>
<binding name="POBinding" type="s1:POPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="GetInvoiceType">
      <soap:operation soapAction="http://example.com/GetInvoiceType"/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
    </output>
  </operation>
</binding>
</definitions>

13.5.2 例で必要なリソースの作成

この後の例を利用するには、サンプルWSDLドキュメントをリソースとして構成に保存し、サンプルWSDLドキュメントを使用するサンプルのビジネス・サービスとプロキシ・サービスを作成します。

以下の手順に従って、Oracle Service Busコンソールでタスクを実行します。

13.5.2.1 リソースとしてのWSDLファイルの保存

次の手順を実行します。

  1. セッションをまだ作成していない場合は、「作成」をクリックして新しいセッションを作成するか、「編集」をクリックして既存のセッションを入力します。
  2. 「Oracle Service Busコンソール」ウィンドウの左ペインで、「リソース」タブをクリックします。プロジェクト・ナビゲータが表示されます。
  3. 「すべてのプロジェクト」ノードの前にある「展開」(矢印)アイコンをクリックし、このノードを開きます。
  4. WSDLファイルの追加先となるプロジェクト名をクリックします。
  5. 「作成」ドロップダウン・リストから、「WSDL」を選択します。「WSDLの作成」ダイアログが表示されます。
  6. 「リソース名」フィールドに、SampleWSDLと入力します。これは必須フィールドです。
  7. 「説明」フィールドに、WSDLリソースの説明を入力します。これはオプションです。
  8. 「ファイルの選択」をクリックして、WSDLサンプル・ファイルを選択します。
  9. 「作成」をクリックしてWSDLリソースを作成します。

13.5.2.2 プロキシ・サービスとパイプラインの作成

サンプルWSDLドキュメントを使用するプロキシ・サービスおよびパイプラインを作成するには、次の手順を実行します。

  1. プロジェクト・ナビゲータで、パイプラインの追加先のプロジェクトを選択して、「作成」アイコンの横の下向き矢印をクリックします。
  2. オプションのリストから、「パイプライン」を選択します。

    パイプラインの作成ダイアログが表示されます。

  3. 「全般」セクションの「パイプライン名」フィールドに、PipelinewithSampleWSDLと入力します。このフィールドは必須です。

    オプションで、パイプラインの「説明」を指定します。

  4. 「サービス・タイプ」で、「WSDLベース・サービス」を選択します。
  5. 「参照」アイコンをクリックし、WSDLファイルのリストからSampleWSDLを選択します。WSDLファイルを検索するには、「検索」をクリックする必要があります。
  6. プロキシ・サービスとして公開を選択して、パイプラインに対応するプロキシ・サービスを作成します。
  7. 「名前」フィールドにProxywithSampleWSDLと入力します。
  8. 「作成」をクリックして、パイプラインとプロキシ・サービスを作成します。パイプラインが作成され、開いて編集できます。

13.5.2.3 サンプル・パイプラインのメッセージ・フローの構築

次の手順を実行します。

  1. プロジェクト・ナビゲータで、パイプラインPipelinewithSampleWSDLをクリックして開きます。
  2. 右上隅にある「メッセージ・フローを開く」アイコンをクリックして、パイプラインのメッセージ・フローの編集を開始します。「メッセージ・フローの編集」ページが表示されます。
  3. 「メッセージ・フローの編集」ページで、PipelinewithSampleWSDLアイコンをクリックし、「パイプライン・ペアの追加」をクリックします。PipelinePairNode1が表示されます。ここには、リクエスト・パイプラインとレスポンス・パイプラインが含まれています。
  4. 「リクエスト・パイプライン」アイコンをクリックし、「ステージの追加」をクリックします。ステージ「Stage1」が表示されます。
  5. 「保存」をクリックします。PipelinewithSampleWSDLパイプラインの基本的なメッセージ・フローが作成されます。

13.5.2.4 ビジネス・サービスの作成

サンプルWSDLドキュメントを使用するビジネス・サービスを作成するには、次の手順を実行します。

  1. プロジェクト・ナビゲータで、ビジネス・サービスの追加先となるプロジェクトを選択します。
  2. 「作成」ドロップダウン・リストから、「ビジネス・サービス」を選択します。「ビジネス・サービスの作成」ウィザードが表示されます。
  3. 「リソース名」フィールドに、BusinesswithSampleWSDLと入力します。これは必須フィールドです。
  4. 「サービス定義」で、「WSDLベース・サービス」を選択します。
  5. 「名前」フィールドの横の「参照」アイコンをクリックし、WSDLファイルのリストからSampleWSDLを選択します。WSDLファイルを検索するには、「検索」をクリックする必要があります。
  6. 「次」をクリックします。「作成」をクリックします。ビジネス・サービスが作成されます。

    これで、例を使用する準備ができました。「例1: 事前定義された変数の構造の選択」に進みます。

13.5.3 例1: 事前定義された変数の構造の選択

この例では、プロキシ・サービスProxyWithSampleWSDLを使用して事前定義された変数の構造を選択します。このサービスのタイプは、SampleWSDLのバインディングPOBindingを使用するWSDL Webサービスです。

パイプラインのメッセージ・フローが、処理するメッセージの構造を認識している必要があります。このために、Service Busでは事前定義された構造が自動的に提供されます。この構造は、インタフェースのすべてのメッセージで、プロキシ・サービスのWSDLファイルでの定義に従って、body変数をSOAP本体の構造にマップします。この事前定義された構造のマッピングのラベルはbodyです。

注意:

この事前定義された構造は、型付きインタフェースを備えたメッセージング・サービスのためにもサポートされています。

事前定義された変数の構造の選択

XQuery式エディタ・ページの「変数の構造」パネルで、組込み構造のリストから「body」を選択します。

変数の構造bodyは、図13-3のように表示されます。

図13-3 変数の構造 - body

図13-3の説明
「図13-3 変数の構造 - body」の説明

13.5.4 例2: 変数の型へのマッピング

プロキシ・サービスProxyWithSampleWSDLが、ビジネス・サービスBusinessWithSampleWSDLへのサービス・コールアウトを呼び出すとします。このビジネス・サービスも、サービスのタイプはSampleWSDLのバインディングPOBindingを使用するWSDL Webサービスです。操作GetInvoiceTypeが呼び出されます。

この例では、パイプラインが、処理するレスポンス・パラメータの構造を認識する必要があります。このためには、レスポンス・パラメータ変数を型InvoiceTypeにマップする新しい変数の構造を作成します。

変数を型にマップするには:

  1. 「変数の構造」パネルで「新しい構造の追加」をクリックします。追加フィールドが図13-4のように表示されます。

    図13-4 変数の構造 - 新しい構造の追加

    図13-4の説明
    「図13-4 変数の構造 - 新しい構造の追加」の説明
  2. 「XMLタイプ」を選択します。

  3. 「構造ラベル」フィールドに、作成する変数の構造の表示名として「InvoiceType」と入力します。この表示名を使用すると、実行時には影響を及ぼさず設計時に構造を認識できるように、構造に意味のある名前を付けることができます。

  4. 「構造パス」フィールドに、実行時の変数の構造のパスとして「$InvoiceType」と入力します。

  5. タイプ「InvoiceType」を選択するには、次のようにします。

    1. 「タイプ」フィールドで、該当するラジオ・ボタンを選択し、リストから「WSDLタイプ」を選択します。

    2. 「参照」をクリックします。WSDLブラウザが表示されます。

    3. WSDLブラウザ「SampleWSDL」を選択してから、「WSDL定義の選択」ペインの「タイプ」「InvoiceType」を選択します。

    4. 「発行」をクリックします。選択した「WSDLタイプ」の下に「InvoiceType」が表示されます。

  6. 「追加」をクリックします。新しい変数の構造「InvoiceType」が変数の構造のリストの「XMLタイプ」の下に追加されます。

    変数の構造InvoiceTypeは、図13-5のように表示されます。

図13-5 変数の構造 - InvoiceType

図13-5の説明
「図13-5 変数の構造 - InvoiceType」の説明

13.5.5 例3: 変数の要素へのマッピング

一時変数には、SampleWSDL WSDLファイルで記述された要素Invoiceが含まれているとします。この例では、ProxyWithSampleWSDLパイプラインが、この変数にアクセスする必要があります。このためには、変数を要素Invoiceにマップする新しい変数の構造を作成します。

変数を要素にマップするには

  1. 「変数の構造」パネルで「新しい構造の追加」をクリックします。

  2. 「XMLタイプ」を選択します。

  3. 「構造ラベル」フィールドに、作成する変数の構造の名前として、表示されたときに意味がわかるように「Invoice」と入力します。

  4. 「構造パス」フィールドに、実行時の変数の構造のパスとして「$Invoice」と入力します。

  5. 要素「Invoice」を選択するには、次のようにします。

    1. 「タイプ」フィールドで、該当するラジオ・ボタンを選択していることを確認します。「WSDL要素」を選択します。

    2. 「参照」をクリックします。

    3. WSDLブラウザで「SampleWSDL」を選択してから、「WSDL定義の選択」ペインの「要素」「Invoice」を選択します。

    4. 「発行」をクリックします。選択した「WSDL要素」の下に「Invoice」が表示されます。

  6. 「追加」をクリックします。新しい変数の構造「Invoice」が変数の構造のリストの「XMLタイプ」の下に追加されます。

    変数の構造Invoiceは、図13-6のように表示されます。

図13-6 変数の構造 - Invoice

図13-6の説明が続きます
「図13-6 変数の構造 - Invoice」の説明

13.5.6 例4: 変数の子要素へのマッピング

プロキシ・サービスProxyWithSampleWSDLは、ドキュメント・スタイルがAny SOAPであるビジネス・サービスにルーティングします。このビジネス・サービスは、SOAP本体の発注書を返します。この例では、ProxyWithSampleWSDLパイプラインがレスポンスを処理する必要があります。このためには、body変数をPO要素にマップする新しい構造を作成し、PO要素を変数の子要素として指定します。body変数にはSOAP Body要素が格納され、PO要素はBody要素の子であるため、子要素として指定する必要があります。

変数を子要素にマップするには:

  1. 「変数の構造」パネルで「新しい構造の追加」をクリックします。

  2. 「XMLタイプ」を選択します。

  3. 「構造ラベル」フィールドに、作成する変数の構造の名前として、表示されたときに意味がわかるように「body to PO」と入力します。

  4. 「構造パス」フィールドに、実行時の変数の構造のパスとして「$body」と入力します。

  5. PO要素を選択するには、次のようにします。

    1. 「タイプ」フィールドで、該当するラジオ・ボタンを選択していることを確認します。「WSDL要素」を選択します。

    2. 「参照」をクリックします。

    3. WSDLブラウザで「SampleWSDL」を選択してから、「WSDL定義の選択」ペインの「要素」「PO」を選択します。

    4. 「発行」をクリックします。

  6. PO要素をbody to PO変数の構造の子として設定するために、「子として設定」チェックボックスを選択します。

  7. 「追加」をクリックします。新しい変数の構造「body to PO」が変数の構造のリストの「XMLタイプ」の下に追加されます。

    変数の構造body to POは、図13-7のように表示されます。

図13-7 変数の構造 - body to PO

図13-7の説明が続きます
「図13-7 変数の構造 - body to PO」の説明

13.5.7 例5: 変数のビジネス・サービスへのマッピング

プロキシ・サービスProxyWithSampleWSDLは、ビジネス・サービスBusinessWithSampleWSDLにメッセージをルーティングします。このビジネス・サービスも、サービスのタイプはSampleWSDLのバインディングPOBindingを使用するWSDL Webサービスです。この例では、パイプラインがレスポンスを処理する必要があります。このためには、body変数をBusinessWithSampleWSDLビジネス・サービスにマップする新しい構造を定義します。これにより、サービスのWSDLインタフェースで、すべてのメッセージのSOAP本体にbody変数がマップされます。

注意:

このマッピングは、型付きインタフェースを備えたメッセージング・サービスのためにもサポートされています。

変数をビジネス・サービスにマップするには

  1. 「変数の構造」パネルで「新しい構造の追加」をクリックします。

  2. 「サービス・インタフェース」を選択します。

  3. 「構造ラベル」フィールドに、変数の構造の名前として、表示されたときに意味がわかるように「BusinessService」と入力します。

  4. 「構造パス」フィールドには、デフォルトとしてすでに$bodyが設定されています。これは、実行時の変数の構造のパスになります。

  5. このビジネス・サービスを選択するには、次の操作を実行します。

    1. 「サービス」フィールドで、「参照」をクリックします。サービス・ブラウザが表示されます。

    2. サービス・ブラウザBusinessWithSampleWSDLビジネス・サービスを選択し、「発行」をクリックします。ビジネス・サービスが「サービス」フィールドの下に表示されます。

    3. 「操作」フィールドで、「すべて」を選択します。

  6. 「追加」をクリックします。新しい変数の構造BusinessServiceが変数の構造のリストの「サービス・インタフェース」の下に追加されます。

    変数の構造BusinessServiceは、図13-8のように表示されます。

図13-8 変数の構造 - Business Service

図13-8の説明が続きます
「図13-8 変数の構造 - Business Service」の説明

13.5.8 例6: 子要素の別の子要素へのマッピング

ProxyWithSampleWSDLプロキシ・サービスが単一の添付ファイルを受信するように、SampleWSDLを変更します。添付ファイルは発注書です。この例では、パイプラインが注文書を処理する必要があります。このためには、$attachmentsbody要素を、子要素として指定されているPO要素にマップする新しい構造を定義します。body要素は、次の形式の変数パスとして指定されます。

$attachments/ctx:attachment/ctx:body 

事前定義されたattachments構造のbody要素を選択してコピーし、新しいマッピング定義でマップされる変数パスとして貼り付けます。

子要素を別の子要素にマップするには:

  1. 「変数の構造」パネルで、組込み構造のリストから「attachments」を選択します。

    変数の構造attachmentsは、図13-9のように表示されます。

    図13-9 変数の構造 - attachments

    図13-9の説明が続きます
    「図13-9 変数の構造 - attachments」の説明
  2. attachments構造でbody子要素を選択します。ページの右側にあるプロパティ・インスペクタにbody要素の変数パスが表示されます。

    $attachments/ctx:attachment/ctx:body
    
  3. body要素の変数パスをコピーします。

  4. 「変数の構造」パネルで「新しい構造の追加」をクリックします。

  5. 「XMLタイプ」を選択します。

  6. 「構造ラベル」フィールドに、この変数の構造の名前として、表示されたときに意味がわかるように「PO attachment」と入力します。

  7. 「構造パス」フィールドに、body要素の変数パスを貼り付けます。

    $attachments/ctx:attachment/ctx:body
    

    これは、実行時の変数の構造のパスになります。

  8. PO要素を選択するには、次のようにします。

    1. 「タイプ」フィールドで、該当するラジオ・ボタンを選択していることを確認し、「WSDL要素」を選択します。

    2. 「参照」をクリックします。

    3. WSDLブラウザで「SampleWSDL」を選択してから、「WSDL定義の選択」ペインの「要素」「PO」を選択します。

    4. 「発行」をクリックします。

  9. body要素の子としてPO要素を設定するために、「子として設定」チェックボックスを選択します。

  10. 「追加」をクリックします。新しい変数の構造「PO attachment」が変数の構造のリストの「XMLタイプ」の下に追加されます。

  11. 複数の添付ファイルを使用する場合は、この構造化変数のフィールドをXQueryで使用するときに、索引を参照に追加します。たとえば、POフィールドをXQueryフィールドにドラッグしてPOを2番目の添付にする場合は、挿入した値を変更します。

    $attachments/ctx:attachment/ctx:body/oracle:PO/oracle:id
    

    次のように変更します。

    $attachments/ctx:attachment[2]/ctx:body/oracle:PO/oracle:id