ヘッダーをスキップ
Oracle SOA Suite開発者ガイド
10g(10.1.3.1.0)
B31839-01
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

7.11 監視でのセンサーの使用

センサーは、実行時にBPELのアクティビティ、変数およびフォルトを監視します。JDeveloper BPEL Designerを使用するか、センサー構成ファイルを手動で指定することで、次のタイプのセンサーを定義できます。

センサーは、通常、BPELでのアクティビティ、フォルトおよび変数のモデル化の一環として追加または編集します。

Oracle JDeveloper BPEL Designerでセンサーをモデル化すると、BPELプロセス・スーツケースの一部として、次の2つの新規ファイルが作成されます。

BPELプロセスにセンサーを定義した後は、センサーのデータをエンドポイントに公開するセンサー・アクションを構成する必要があります。センサー・データは、BPELレポート・スキーマ(BPELデハイドレーション・ストアに存在)、JMSキューまたはJMSトピック、あるいはカスタムJavaクラスに公開できます。

センサー・アクションには、次の情報が必要です。

詳細は、『Oracle BPEL Process Manager開発者ガイド』の第18章「センサー」を参照してください。

7.11.1 監視でのセンサーの使用方法

センサーはreceiveアクティビティに追加します。センサーは、クライアントから受信した入力データを監視します。

センサーをreceiveアクティビティに追加する手順は、次のとおりです。

  1. receiveアクティビティをダブルクリックします。

  2. 「センサー」タブをクリックします。

  3. 「作成」アイコンをクリックします。

  4. 「アクティビティ・センサーの作成」ダイアログを使用して、センサーを作成します。

    1. センサーの名前を入力します。

    2. 評価時間を入力します。

      評価時間は、センサーが起動する時点を制御します。次のオプションから選択できます。

      アクティブ化: センサーはアクティビティの実行直前に起動します。

      完了: センサーはアクティビティの実行直後に起動します。

      フォルト: センサーは、アクティビティの実行中にフォルトが発生した場合に起動します。この値は、単純なアクティビティを監視するセンサーにのみ選択します。

      補正: センサーは、関連するscopeアクティビティが補正されたときに起動します。この値は、スコープを監視するセンサーにのみ選択します。

      再試行: センサーは、関連するinvokeアクティビティが再試行されたときに起動します。

      すべて: 前述のすべてのフェーズが監視対象となります。

    3. 「作成」アイコンをクリックして、アクティビティ変数センサーを作成します。

    4. 図7-27に示すように、「アクティビティ変数センサーの作成」ダイアログを使用して、変数XPath、出力ネームスペースおよび出力データ型を指定します。

      図7-27 アクティビティ変数センサーの作成

      図7-27の説明は次にあります。
      「図7-27 アクティビティ変数センサーの作成」の説明

    5. 「追加」アイコンをクリックして、センサー・アクションを追加します。

    6. 「センサー・アクションの選択」で、センサーの値を(データベース、JMSキューなどに)公開するセンサー・アクションを選択します。

    7. 図7-28に示すように、「センサー・アクションの編集 -」ダイアログを使用して、前の手順で選択したセンサー・アクションを編集します。

      図7-28 センサー・アクションの編集

      図7-28の説明は次にあります。
      「図7-28 センサー・アクションの編集」の説明

7.11.2 センサー使用時の処理内容

センサー定義はsensor.xmlファイルに書き込まれ、センサー・アクション定義はsensorAction.xmlファイルに書き込まれます。これらのファイルは、BPELプロジェクトの「センサー」ディレクトリにあり、アプリケーション・ナビゲータから使用できます。

例7-12に、SOA Order Bookingアプリケーションのsensor.xmlファイルのソース・コードを示します。

例7-12 sensor.xmlのソース・コード

<?xml version = '1.0' encoding = 'UTF-8'?>
<sensors targetNamespace="http://www.globalcompany.com/ns/OrderBooking"
  xmlns="http://xmlns.oracle.com/bpel/sensor"
  xmlns:tns="http://www.globalcompany.com/ns/OrderBooking"
  xmlns:pc="http://xmlns.oracle.com/bpel/sensor">
    <sensor sensorName="InstanceFaulted"
      classname="oracle.tip.pc.services.reports.dca.agents.BpelActivitySensorAgent" kind="activity"
      target="SetFaultedOrderStatus">
        <activityConfig evalTime="completion">
         <variable outputDataType="SOAOrderBookingFaultMessage"
           outputNamespace="http://www.globalcompany.com/ns/OrderBooking"
           target="$OrderBookingFault"/>
        </activityConfig>
    </sensor>
    <sensor sensorName="InstanceStart"
      classname="oracle.tip.pc.services.reports.dca.agents.BpelActivitySensorAgent" kind="activity"
      target="receiveInput">
        <activityConfig evalTime="completion">
          <variable outputDataType="SOAOrderBookingRequestMessage"
            outputNamespace="http://www.globalcompany.com/ns/OrderBooking"
              target="$inputVariable"/>
        </activityConfig>
    </sensor>
    <sensor sensorName="InstanceCompleted"
      classname="oracle.tip.pc.services.reports.dca.agents.BpelActivitySensorAgent" kind="activity"
      target="callbackClient">
        <activityConfig evalTime="completion">
          <variable outputDataType="SOAOrderBookingRequestMessage"
           outputNamespace="http://www.globalcompany.com/ns/OrderBooking" target="$inputVariable"/>
        </activityConfig>
    </sensor>
</sensors>

例7-13に、SOA Order BookingアプリケーションのsensorAction.xmlファイルのソース・コードを示します。

例7-13 sensorAction.xmlのソース・コード

<?xml version = '1.0' encoding = 'UTF-8'?>
<actions targetNamespace="http://www.globalcompany.com/ns/OrderBooking"
  xmlns="http://xmlns.oracle.com/bpel/sensor"
  xmlns:tns="http://www.globalcompany.com/ns/OrderBooking"
  xmlns:pc="http://xmlns.oracle.com/bpel/sensor">
    <action name="InstanceStart" publishName="" publishType="JMSTopic" enabled="true"
      publishTarget="jms/demoTopic">
        <property name="JMSConnectionFactory">jms/TopicConnectionFactory</property>
        <sensorName>InstanceStart</sensorName>
    </action>
    <action name="InstanceCompleted" publishName="" publishType="JMSTopic" enabled="true"
      publishTarget="jms/demoTopic">
        <property name="JMSConnectionFactory">jms/TopicConnectionFactory</property>
        <sensorName>InstanceCompleted</sensorName>
    </action>
    <action name="InstanceFaulted" publishName="" publishType="JMSTopic" enabled="true"
      publishTarget="jms/demoTopic">
        <property name="JMSConnectionFactory">jms/TopicConnectionFactory</property>
        <sensorName>InstanceFaulted</sensorName>
    </action>
</actions>