ヘッダーをスキップ
Oracle® Fusion Middleware Oracle SOA Suite開発者ガイド
11g リリース1 (11.1.1.6.2)
B56238-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

50 コンポジット・センサーの定義

この章では、SOAコンポジット・アプリケーションでメッセージにトラッキング可能なフィールドを実装する手段を提供する、コンポジット・センサーを定義する方法について説明します。ここでは、ビジネス・イベントをサブスクライブしているバインディング・コンポーネントおよびサービス・コンポーネント上でセンサーを定義する方法について説明します。また、制限についても説明します。

この章には次の項が含まれます:

50.1 コンポジット・センサーの概要

コンポジット・センサーは、メッセージにトラッキング可能なフィールドを実装する手段を提供します。コンポジット・センサーを使用すると、次のタスクを実行できます。

コンポジット・センサーは、Oracle JDeveloperでビジネス・イベント・サブスクリプションがあるサービス・バインディング・コンポーネントおよび参照バインディング・コンポーネント、またはサービス・コンポーネントに定義します。この機能は、BPELプロセスの変数センサーに類似しています。実行時に、コンポジット・センサー・データはデータベースに維持されます。

50.1.1 コンポジット・センサー使用上の制限

コンポジット・センサーの使用に関して、次の制限に注意してください。

  • 関数はペイロードでのみ使用できます。たとえば、concat()などのXPath関数はプロパティでは使用できません。

  • 式を使用するコンポジット・センサーは常に、値を文字列として取得します。この処理のため、検索で使用できるのはlike比較演算子のみです。また、値が数値の場合でも、他の<>=など論理演算子やこれらの組合せを使用することはできません。

  • コンポジット・センサーでは、Enterprise ManagerおよびJMSの2つのタイプのセンサー・アクションのみがサポートされます。

  • Webサービス・バインディングに対しては、ヘッダー・ベースのセンサーのみがサポートされています。

  • Oracle B2B、サービス・データ・オブジェクト(SDO)、Web Services Invocation Framework (WSIF)およびOracle Business Activity Monitoringのバインディングに対するセンサー・アクションは、サポートされていません。

  • センサー値の型は次のいずれかになります。

    1. 次のスカラー型

      • STRING

      • NUMBER

      • DATE

      • DATE_TIME

    2. 複合XML要素

  • フィルタリング用のXPath式を作成する場合は、ノードセットを返すすべての関数を文字列として明示的にキャストする必要があります。

    xpath20:upper-case(string($in.request/inp1:updateOrderStatus/inp1:orderStatus) ) = "PENDING"
    
  • センサーは、ビジネス・イベントをサブスクライブするサービス・コンポーネント上でのみ構成できます。サブスクライブされたビジネス・イベントがサービス・コンポーネントに関連付けられていない場合、センサーを構成するオプションは使用できません。

  • ビジネス・イベントを公開するサービス・コンポーネント上でセンサーを構成することはできません。

  • ビジネス・イベント・ヘッダーに基づいたセンサーは許可されません(ペイロードのみが許可されます)。

  • PL/SQLサブスクリプションはサポートされていません。

50.2 コンポジット・センサーの追加

SOAコンポジット・エディタで、SOAコンポジット・アプリケーションの次のコンポーネントにセンサーを追加します。

50.2.1 コンポジット・センサーの追加方法

コンポジット・センサーを追加する手順は、次のとおりです。

  1. 次のいずれかのオプションを使用して、SOAコンポジット・エディタでコンポジット・センサーを追加します。

    1. 「公開されたサービス」または「外部参照」スイムレーン、あるいはビジネス・イベントをサブスクライブしているサービス・コンポーネントで特定のサービスまたは参照バインディング・コンポーネントを右クリックします。ビジネス・イベントをサブスクライブしているサービス・コンポーネントには、サブスクライブ済という語が含まれます。

    2. 「センサーの構成」を選択します。


      注意:

      「センサーの構成」オプションが表示されるためには、サービス・コンポーネントにすでにビジネス・イベントがサブスクライブされている必要があります。


      バインディング・コンポーネントを選択すると、図50-1に示す詳細が「コンポジット・センサー」ダイアログに表示されます。この例では、サービス・バインディング・コンポーネントが選択されています。

      図50-1 選択したバインディング・コンポーネントの「コンポジット・センサー」ダイアログ

      図50-1の説明が続きます
      「図50-1 選択したバインディング・コンポーネントの「コンポジット・センサー」ダイアログ」の説明

      サービス・コンポーネントを選択すると、図50-2に示す詳細が「コンポジット・センサー」ダイアログに表示されます。

      図50-2 選択したサービス・コンポーネントの「コンポジット・センサー」ダイアログ

      図50-2の説明が続きます
      「図50-2 選択したサービス・コンポーネントの「コンポジット・センサー」ダイアログ」の説明

    3. バインディング・コンポーネントまたはサービス・コンポーネントを選択し、「追加」アイコンをクリックします。

    または、

    1. 図50-3に示すように、SOAコンポジット・エディタ上部にある「コンポジット・センサー」アイコンをクリックします。

      図50-3 「コンポジット・センサー」アイコン

      図50-3の説明が続きます
      「図50-3 「コンポジット・センサー」アイコン」の説明

      図50-4に示すように、SOAコンポジット・アプリケーションの「コンポジット・センサー」ダイアログが表示されます。このオプションでは、SOAコンポジット・アプリケーションの、サブスクライブされたビジネス・イベントがあるすべてのサービスおよび参照のバインディング・コンポーネントとサービス・コンポーネントが表示されます。

      図50-4 「コンポジット・センサー」ダイアログ

      図50-4の説明が続きます
      「図50-4 「コンポジット・センサー」ダイアログ」の説明

    2. コンポジット・センサーを追加するサービス、参照またはビジネス・イベントを選択し、「追加」アイコンをクリックします。

    サービスなどのバインディング・コンポーネントを選択すると、図50-5に示すように「コンポジット・センサーの作成」ダイアログが表示されます。

    図50-5 サービス・バインディング・コンポーネントの「コンポジット・センサーの作成」ダイアログ

    図50-5の説明が続きます
    「図50-5 サービス・バインディング・コンポーネントの「コンポジット・センサーの作成」ダイアログの説明」

    ビジネス・イベント・サブスクリプションがあるサービス・コンポーネントを選択すると、図50-6に示すように「コンポジット・センサーの作成」ダイアログが表示されます。

    図50-6 サービス・コンポーネントの「コンポジット・センサーの作成」ダイアログ

    図50-6の説明が続きます
    「図50-6 サービス・コンポーネントの「コンポジット・センサーの作成」ダイアログの説明」

  2. 表50-1に記載されている詳細を入力します。

    表50-1 「コンポジット・センサーの作成」ダイアログ

    名前 説明

    名前

    コンポジット・センサーの名前を入力します。「式」フィールドの「編集」アイコンを使用可能にするには、名前を入力する必要があります。

    サービス

    サービス名が表示されます。このフィールドが表示されるのは、サービス・バインディング・コンポーネントに対するコンポジット・センサーを作成している場合のみです。このフィールドは編集できません。

    サービス・センサーは、サービスが外部または別のコンポジット・アプリケーションから受信するメッセージを監視します。

    参照

    参照名が表示されます。このフィールドが表示されるのは、参照バインディング・コンポーネントに対するコンポジット・センサーを作成している場合のみです。このフィールドは編集できません。

    参照センサーは、参照が外部または別のコンポジット・アプリケーションに送信するメッセージを監視します。

    操作

    サービスまたは参照のポート・タイプに対する操作を選択します。このフィールドは、サービスまたは参照バインディング・コンポーネントに対してのみ表示されます。

    イベント

    サービス・コンポーネントの名前が表示されます。このフィールドが表示されるのは、サービス・コンポーネントに対するコンポジット・センサーを作成している場合のみです。このフィールドは編集できません。

    イベント・センサーはビジネス・イベントによって開始されたコンポジット・インスタンスを追跡します。ビジネス・イベントごとに複数のセンサーを作成できます。

    イベント・タイプ

    「サブスクライブ」ビジネス・イベント・タイプが表示されます。このフィールドは編集できません。パブリッシュ・ビジネス・イベント・タイプはサポートされていません。

    「編集」アイコンをクリックすると、作成する式のタイプを選択するドロップダウン・リストが起動します。

    • 変数: 変数に対する式の値を作成する場合に選択します。手順は、第50.2.1.1項「変数の追加方法」を参照してください。

    • : XPath式を作成するための「式ビルダー」ダイアログを起動する場合に選択します。手順は、第50.2.1.2項「式の追加方法」を参照してください。

    • プロパティ: 正規化されたメッセージ・ヘッダー・プロパティに対する式の値を作成する場合に選択します。これらは、invokeアクティビティ、receiveアクティビティ、replyアクティビティ、scopeアクティビティのOnEventブランチ(BPEL 2.0の場合)、およびpickアクティビティとscopeアクティビティ(BPEL 2.0の場合)のonMessageブランチの「プロパティ」タブの下に表示される同じプロパティです。手順は、第50.2.1.3項「プロパティの追加方法」を参照してください。

    フィルタ

    「編集」アイコンをクリックすると、式用のXPathフィルタを作成する「式ビルダー」ダイアログが起動します。このフィールドを使用可能にするには、最初に式を作成する必要があります。

    たとえば、10,000を超える発注金額をトラッキングする式を作成できます。

    $in.inDict/tns:inDict/ns2:KeyValueOfstringstring/ns2:Value > 10000.00
    

    コンポジット・センサー・アクション

    サポートされているセンサー・アクションを表示します。この機能を使用すると、ランタイム・センサー・データを格納できます。「Enterprise Manager」「JMSキュー」または「JMSトピック」のいずれかとの両方を選択できます。

    • Enterprise Manager

      ランタイム・センサー・データをOracle Enterprise Manager Fusion Middleware ControlからSOAコンポジット・アプリケーションの「インスタンス」タブで検索できるようにするために選択します。この選択は、前のリリースのDBSensorActionの選択と同じです。

      注意: 「Enterprise Manager」が選択されている場合、センサー・データはトラッキング可能フィールド表に送られます。選択されていない場合、データは送られません。ただし、いずれの場合も、Oracle Enterprise Manager Fusion Middleware Controlにはこのフィールドが表示され、センサーに基づいたコンポジット・インスタンスの検索が可能です。

      詳細は、Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイドを参照してください。

    • JMSキュー

      コンポジット・センサー・データ(XMLペイロード)をJMSキューに格納する場合に選択します。JMSコネクション・ファクトリおよびキュー名を指定する必要があります。

    • JMSトピック

      コンポジット・センサー・データ(XMLペイロード)をJMSトピックに格納する場合に選択します。JMSコネクション・ファクトリおよびトピック名を指定する必要があります。

    注意: 「JMSキュー」および「JMSトピック」を選択すると、コンポジット・センサー・データ(XMLペイロード)はOracle Business Activity MonitoringやOracle Complex Event Processing (CEP)など他のコンシューマでも使用できるようになります。どちらを選択した場合も、Oracle WebLogic ServerによるJMSサポートが使用され、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』の説明にあるようなOracle SOA Suite JMSアダプタは使用されません。JMSメッセージはOracle WebLogic Server管理コンソールで表示できます。

    Oracle Business Activity Monitoringでのセンサー・データの使用の詳細は、第53章「Oracle BAMとSOAコンポジット・アプリケーションの統合」を参照してください。


  3. 完了後に「OK」をクリックします。

    サービスまたは参照バインディング・コンポーネントでは、図50-7に示すように、コンポジット・センサー・アイコンが右上隅に表示されます。

    図50-7 バインディング・コンポーネントのセンサー・アイコン

    図50-7の説明が続きます
    「図50-7 バインディング・コンポーネントのセンサー・アイコンの説明」

    サービス・コンポーネントでは、図50-8に示すように、コンポジット・センサー・アイコンも右上隅に表示されます。

    図50-8 サービス・コンポーネントのセンサー・アイコン

    図50-8の説明が続きます
    「図50-8 サービス・コンポーネントのセンサー・アイコン」の説明

  4. コンポジット・センサー・アイコンの上にカーソルを置くと、コンポジット・センサーに関する詳細が表示されます。

50.2.1.1 変数の追加方法

図50-9に示す「XPath式の選択」では、トラッキングする要素を選択できます。

変数を追加する手順は、次のとおりです。

  1. ツリーを開き、トラッキングする要素を選択します。

  2. 完了後に「OK」をクリックします。

50.2.1.2 式の追加方法

図50-10に示す「プロパティの選択」では、トラッキングする式を作成できます。

式を追加する手順は、次のとおりです。

  1. トラッキングする要素のXPath式を作成します。

  2. 完了後に「OK」をクリックします。

50.2.1.3 プロパティの追加方法

図50-11に示す「プロパティの選択」では、トラッキングする正規化されたメッセージ・ヘッダー・プロパティを選択できます。

プロパティを追加する手順は、次のとおりです。

  1. トラッキングする正規化されたメッセージ・ヘッダー・プロパティを選択します。

    図50-11 プロパティ

    図50-11の説明が続きます
    「図50-11 プロパティ」の説明

  2. 完了後に「OK」をクリックします。

50.2.2 重複するコンポジット・センサー名に関する注意事項

コンポジット・センサーに重複する名前を使用する場合は、次の詳細に注意してください。

  • 重複する名前を持つコンポジット・センサーを作成すると、定義の内容全体が比較されます。重複する名前は、1つ以上の追加パラメータが異なる場合に許可されます(たとえば、異なる構成タイプや異なる式、フィルタ、操作名など)。重複する名前が許可されるためには、定義で何かが異なっている必要があります。

  • 重複するセンサー定義がある場合は、最後に実行されたセンサー値のみが維持されます。このため、相互に排他的なパスに対してこのタイプの構成を使用できます(たとえば、コンポジットはサービス1またはサービス2によって起動されます)。したがって、両方のサービスで同じセンサー名を定義できます。ただし、サービス1と参照1に同じ名前を定義した場合、参照1のセンサー値(最後に実行されたセンサー)のみが格納されます。

  • 通常は、同じ名前の複数のセンサーを使用して、異なるソースから抽出された同じ論理エンティティを指します(たとえば、Oracle Enterprise Manager Fusion Middleware Controlでは、最終的なセンサー値が表示されます)。このため、異なるソースから電子メール値と社会保障値を抽出する場合に同じセンサー名を使用すると、混乱を招く可能性があります。

  • センサー・アクションは、同じセンサー名のすべての発生に適用されます。この状況は、最近定義された同じ名前のセンサーのセンサー・アクションが優先されることを意味します。

例50-1sensor.xmlに示すシナリオでは、次のことが指定されています。

  • Service1という名前に最初の2つのセンサーは同一です。さらに、構成タイプはどちらもserviceConfig(サービス・バインディング・コンポーネントで定義されたコンポジット・センサー)です。したがって、センサーは1つのエントリになります(2番目のセンサーは無視されます)。

  • Service1という名前の3番目のセンサーは、異なる構成タイプeventConfig(ビジネス・イベントで定義されたコンポジット・センサー)を持ちます。したがって、このセンサーは別のエントリで表されます。

  • PurchaseOrder Idという名前の2つのセンサーは、構成タイプが異なります(eventConfigおよびserviceConfig)。したがって、これらは別のエントリで表されます。

  • PurchaseOrderという名前の2つのセンサーは、構成タイプは同じ(eventConfig)ですが、式は異なります。したがって、これらは別のエントリで表されます。

例50-1 複数のエンドポイントがある重複するコンポジット・センサー

<sensors xmlns="http://xmlns.oracle.com/bpel/sensor">
   <sensor sensorName="Service1" kind="service" target="undefined" filter="">
      <serviceConfig service="OrderPublisher_ep"
 expression="$in.property.tracking.ecid" operation="execute"
 outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema"/>
   </sensor>
   <sensor sensorName="Service1" kind="service" target="undefined" filter="">
      <serviceConfig service="OrderPublisher_ep"
 expression="$in.property.tracking.ecid" operation="execute"
 outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema"/>
   </sensor>
   <sensor sensorName="Service1" kind="event" target="undefined" filter=""
 xmlns:po="http://www.mycompany.com/ns/order">
      <eventConfig component="EventMediator"
 expression="$in/po:PurchaseOrder/po:OrderID"
 event="{http://mycompany.com/events/orders}OrderReceivedEvent"
 outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema"/>
   <sensor sensorName="Event1" kind="event" target="undefined" filter="">
      <eventConfig component="EventMediator" actionType="Subscribe"
 expression="$in.property.tracking.ecid"
 event="{http://mycompany.com/events/orders}OrderReceivedEvent"
 outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema"/>
   </sensor>
   <sensor sensorName="PurchaseOrder Id" kind="event" target="undefined" filter=""
 xmlns:po="http://www.mycompany.com/ns/order">
      <eventConfig component="EventMediator"
 expression="$in/po:PurchaseOrder/po:OrderID"
 event="{http://mycompany.com/events/orders}OrderReceivedEvent"
 outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema"/>
   </sensor>
  <sensor sensorName="PurchaseOrder Id" kind="service" target="undefined"
 filter="">
      <serviceConfig service="OrderPublisher_ep"
 expression="$in.property.tracking.ecid" operation="execute"
 outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema"/>
   </sensor>
   <sensor sensorName="PurchaseOrder" kind="event" target="undefined" filter=""
 xmlns:po="http://www.mycompany.com/ns/order">
      <eventConfig component="EventMediator" expression="$in/po:PurchaseOrder"
 event="{http://mycompany.com/events/orders}OrderReceivedEvent"
 outputDataType="PurchaseOrder"
 outputNamespace="http://mycompany.com/events/orders"/>
   </sensor>
   <sensor sensorName="PurchaseOrder" kind="event" target="undefined" filter=""
 xmlns:po="http://www.mycompany.com/ns/order">
      <eventConfig component="EventMediator"
 expression="$in/po:PurchaseOrder/po:OrderID"
 event="{http://mycompany.com/events/orders}OrderReceivedEvent"
 outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema"/>
   </sensor>
   </sensor>
  
</sensors>

50.3 実行時のコンポジット・センサー・データの監視

実行時に、Oracle Enterprise Manager Fusion Middleware Controlでコンポジット・センサー・データを監視できます。

詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』のアプリケーション・ホームページからのSOAコンポジット・アプリケーション・インスタンスの監視および削除に関する項を参照してください。