ヘッダーをスキップ
Oracle Fusion Middleware Oracle SOA Suite開発者ガイド
11g リリース1(11.1.1)
B56238-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

17 Oracle BPEL Process Managerセンサーの使用

この章では、センサーを使用して、実行時に監視するBPELアクティビティ、変数およびフォルトを選択する方法について説明します。BPELプロセスに対するセンサーの使用方法および設定方法について説明します。

項目は次のとおりです。

センサーの詳細は、次の各項を参照してください。

17.1 センサーの概要

センサーは、BPELプロセス・インスタンスのライフ・サイクル全体を通じて特定のイベントに対する関心を宣言するために使用されます。 ビジネス・プロセスでは、このようなイベントとして、特定のアクティビティのアクティブ化と完了、またはビジネス・プロセス内の変数値の変更があります。

センサーがトリガーされると、特定のセンサー値が作成されます。 たとえば、センサーでBPELスコープの完了に対する関心を宣言した場合、センサー値は、BPELスコープの名前とアクティビティの完了時点のタイムスタンプ値で構成されます。 センサー値でBPELプロセス変数に対する関心を宣言した場合、センサー値は、変数が変更された時点の変数の値、変数の変更時点のタイムスタンプ、およびBPEL変数を変更したアクティビティの名前とタイプで構成されます。

センサー値のデータ・フォーマットは、XMLスキーマを使用して正規化され、適切に定義されます。

センサー・アクションは、センサー値の処理方法に関する指示です。 Oracle BPEL Process Managerによってセンサーがトリガーされると、そのセンサーに新しいセンサー値が作成されます。 その後、そのセンサーに関連付けられているすべてのセンサー・アクションが実行されます。 通常、センサー・アクションは、センサー値をデータベースに保持するか、正規化されたセンサー値データをJMSキューまたはトピックに送信します。 Oracle Business Activity Monitoringと統合すると、センサー値をBAMアダプタに送信できます。

Oracle JDeveloperを使用するか、センサー構成ファイルを手動で指定することで、次のタイプのセンサーを定義できます。

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

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

これらのファイルの作成方法については、第17.2.1項「センサーの構成方法」および第17.2.2項「センサー・アクションの構成方法」を参照してください。

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

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

Oracle BAMセンサーは、Oracle BPEL Process ManagerからOracle BAMに情報およびイベントをパブリッシュします。 Oracle BAMでは、アプリケーションのエンドツーエンド監視用の豊富な機能を備えたリアルタイム・ダッシュボードにデータを表示できます。 詳細は、第32.6項「BPELセンサーとOracle BAMの統合」を参照してください。

17.2 Oracle JDeveloperでのセンサーとセンサー・アクションの構成

Oracle JDeveloperでは、センサー・アクションとセンサーは、図17-1に示すように、プロセス・ツリー構造の一部として表示されます。

図17-1 Oracle JDeveloperに表示されたセンサーとセンサー・アクション

図17-1の説明は次にあります。
「図17-1 Oracle JDeveloperに表示されたセンサーとセンサー・アクション」の説明

センサーは、通常、アクティビティ、フォルトおよび変数のBPELモデリングの一環として追加または編集します。センサー・アクションは、「センサー・アクション」フォルダを右クリックし、「作成」「センサー・アクション」の順に選択することで追加できます。アクティビティ・センサー、変数センサーまたはフォルト・センサーを追加するには、「センサー」フォルダを開き、適切な「アクティビティ」「変数」または「フォルト」サブフォルダを右クリックし、「作成」をクリックします。

次の各項では、センサーとセンサー・アクションの構成方法について説明します。

17.2.1 センサーの構成方法

ここでは、LoanFlowアプリケーションを監視して、次の情報を把握すると仮定します。

  • getCreditRatingというスコープの開始時点

  • このスコープの完了時点

  • 完了時点での顧客の信用格付け

このためのソリューションは、図17-2に示すように、Oracle BPELデザイナでgetCreditRatingスコープのアクティビティ・センサーを作成することです。 センサーに関連付けられているアクティビティは、Oracle BPELデザイナでは、虫眼鏡アイコンで識別されます。

図17-2 アクティビティ・センサーの作成

図17-2の説明は次にあります。
「図17-2 アクティビティ・センサーの作成」の説明

センサーの起動タイミングは、図17-2に示す「評価時間」リストを使用して制御します。次の評価時間から選択できます。

  • すべて

    アクティブ化、完了、フォルト、補正および再試行の各フェーズを通して監視します。

  • アクティブ化

    センサーは、アクティビティの実行直前に起動されます。

  • 完了

    センサーは、アクティビティの実行直後に起動されます。

  • フォルト

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

  • 補正

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

  • 再試行

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

例17-1に示すように、bpel_process_name_sensor.xmlファイルに新規エントリが作成されます。

例17-1 bpel_process_name_sensor.xmlファイル

<sensor sensorName="CreditRatingSensor"

classname="oracle.tip.pc.services.reports.dca.agents.BpelActivitySensorAgent"
          kind="activity"
          target="callbackClient">

  <activityConfig evalTime="all">
    <variable outputNamespace="http://www.w3.org/2001/XMLSchema"
              outputDataType="int"
              target="$crOutput/payload//services:rating"/>
  </activityConfig>
</sensor>

受信したすべての融資申請を記録する場合は、図17-3に示すように、変数inputに対して変数センサーを作成します。

図17-3 変数センサーの作成

図17-3の説明は次にあります。
「図17-3 変数センサーの作成」の説明

例17-2に示すように、bpel_process_name_sensor.xmlファイルに新規エントリが作成されます。

例17-2 bpel_process_name_sensor.xmlファイル

<sensor sensorName="LoanApplicationSensor"
    classname="oracle.tip.pc.services.reports.dca.agents.BpelVariableSensorAgent"
    kind="variable"
    target="$input/payload">
  <variableConfig outputNamespace="http://www.autoloan.com/ns/autoloan"
                  outputDataType="loanApplication"/>
</sensor>

アイデンティティ・サービスのフォルトを監視する場合は、図17-4に示すように、フォルト・センサーを作成します。

図17-4 フォルト・センサーの作成

図17-4の説明は次にあります。
「図17-4 フォルト・センサーの作成」の説明

例17-3に示すように、bpel_process_name_sensor.xmlファイルに新規エントリが作成されます。

例17-3 bpel_process_name_sensor.xmlファイル

<sensor sensorName="IdentityServiceFault"
        classname="oracle.tip.pc.services.reports.dca.agents.BpelFaultSensorAgent"
        kind="fault"
        target="is:identityServiceFault">
    <faultConfig/>
</sensor>

17.2.2 センサー・アクションの構成方法

センサーを作成する場合は、実行時に監視するアクティビティ、変数およびフォルトを識別します。 エンドポイントにセンサーの値をパブリッシュする場合(たとえば、LoanApplicationSensorのデータをJMSキューにパブリッシュする場合)は、図17-5に示すように、センサー・アクションを作成し、LoanApplicationSensorに関連付けます。

図17-5 センサー・アクションの作成

図17-5の説明は次にあります。
「図17-5 センサー・アクションの作成」の説明

例17-4に示すように、bpel_process_name_sensorAction.xmlファイルに新規エントリが作成されます。

例17-4 bpel_process_name_sensorAction.xmlファイル

<action name="BAMFeed"
        enabled="true"
        publishType="JMSQueue"
        publishTarget="jms/bamTopic">
  <sensorName>LoanApplicationSensor</sensorName>
  <property name=“JMSConnectionFactory“>
    weblogic.jms.ConnectionFactory
  </property>
</action>

LoanApplicationSensorおよびCreditRatingSensorの値をデータベースのレポート・スキーマにパブリッシュする場合は、図17-6に示すように、追加のセンサー・アクションを作成し、CreditRatingSensorLoanApplicationSensorの両方に関連付けます。

図17-6 追加のセンサー・アクションの作成

図17-6の説明は次にあります。
「図17-6 追加のセンサー・アクションの作成」の説明

例17-5に示すように、bpel_process_name_sensorAction.xmlファイルに新規エントリが作成されます。

例17-5 bpel_process_name_sensorAction.xmlファイル

<action name="PersistingAction"
     enabled="true"
     publishType="BPELReportsSchema">
  <sensorName>LoanApplicationSensor</sensorName>
  <sensorName>CreditRatingSensor</sensorName>
</action

複数のエンドポイントに対して1つのセンサーのデータをパブリッシュできます。前述の2つのコード例では、LoanApplicationSensorのデータがJMSキューとデータベース・レポート・スキーマの両方にパブリッシュされています。

融資金額が$100,000を超える融資申請を監視する場合は、図17-7に示すように、フィルタ付きのセンサー・アクションを作成できます。

図17-7 フィルタ付きのセンサー・アクションの作成

図17-7の説明は次にあります。
「図17-7 フィルタ付きのセンサー・アクションの作成」の説明

例17-6に示すように、bpel_process_name_sensorAction.xmlファイルに新規エントリが作成されます。

例17-6 bpel_process_name_sensorAction.xmlファイル

<action name="BigMoneyBAMAction"
        enabled='true'
        filter="boolean(/s:actionData/s:payload
                        /s:variableData/s:data
                        /autoloan:loanAmount > 100000)"
        publishType="JMSQueue"
        publishTarget="jms/bigMoneyQueue">
  <sensorName>LoanApplicationSensor</sensorName>
  <property name=“JMSConnectionFactory“>
    weblogic.jms.ConnectionFactory
  </property>
</action>

注意:

  • センサー・アクション構成ファイルには、アクション・フィルタの構成に必要なすべてのネームスペースを指定する必要があります。

  • フィルタは、ブール型のXPath式として指定する必要があります。


組込みのパブリッシュ・タイプ(「データベース」、「JMSキュー」、「JMSトピック」および「JMSアダプタ」)では対応できない特殊なセンサー・アクション要件がある場合は、図17-8に示すように、「カスタム」パブリッシュ・タイプでセンサー・アクションを作成できます。「パブリッシュ・ターゲット」フィールド内の名前は、実装する必要がある完全修飾Javaクラス名を示します。

図17-8 「カスタム」パブリッシュ・タイプの使用

図17-8の説明は次にあります。
「図17-8 「カスタム」パブリッシュ・タイプの使用」の説明

17.2.3 リモート・トピックおよびキューへのパブリッシュ方法

「JMSキュー」および「JMSトピック」パブリッシュ・タイプでは、ローカルJMS宛先にのみパブリッシュします。 センサー・データをリモート・トピックおよびキューにパブリッシュする場合は、図17-9に示すように、「JMSアダプタ」パブリッシュ・タイプを使用します。

図17-9 「JMSアダプタ」パブリッシュ・タイプの使用

図17-9の説明は次にあります。
「図17-9 「JMSアダプタ」パブリッシュ・タイプの使用」の説明

JMSアダプタでは、センサー・データをリモート・トピックおよびキューにパブリッシュでき、さらに、次のように様々なJMSプロバイダがサポートされます。

  • サード・パーティJMSプロバイダ(Tibco JMS、IBM WebSphere MQ JMS、SonicMQなど)

  • Oracle Enterprise Messaging Service(OEMS)プロバイダ(メモリー/ファイル、データベースなど)

「JMSアダプタ」パブリッシュ・タイプを選択した場合は、weblogic-ra.xmlファイルにエントリを作成する必要があります。このファイルはOracle WebLogic Server管理コンソールを介して更新されます。 このコンソールで作成されるJMSコネクション・ファクトリ(プール)の各エントリは、weblogic-ra.xmlの1つのJNDIエントリに相当します。 「センサー・アクション」ダイアログは、JMSコネクション・ファクトリ(プール)の作成時に選択したJNDI名で更新してください。

JMSアダプタの詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。

17.2.4 カスタム・データ・パブリッシャの作成方法

カスタム・データ・パブリッシャを作成するには、次の各手順を実行します。

カスタム・データ・パブリッシャを作成する手順は、次のとおりです。

  1. 「アプリケーション・ナビゲータ」で、BPELプロジェクトをダブルクリックします。

    「プロジェクト・プロパティ」ダイアログが表示されます。

  2. 「ライブラリとクラスパス」をクリックします。

  3. 次のファイルを参照して選択します。

    SOA_ORACLE_HOME\lib\java\shared\oracle.soainfra.common\11.1.1\orabpel.jar
    

    図17-10 「プロジェクト・プロパティ」ダイアログ

    BPELライブラリのBPELプロジェクトへの追加
    「図17-10 「プロジェクト・プロパティ」ダイアログ」の説明

  4. 新規Javaクラスを作成します。

    パッケージとクラス名は、センサー・アクションのパブリッシュ・ターゲット名と一致している必要があります。

  5. com.oracle.bpel.sensor.DataPublisherインタフェースを実装します。

    これにより、ソース・ファイルが更新され、DataPublisherインタフェースのメソッドとimport文が組み込まれます。

  6. Oracle JDeveloperのエディタを使用して、図17-11のサンプル・カスタム・データ・パブリッシャ・クラスに示すように、DataPublisherインタフェースのpublishメソッドを実装します。

    図17-11 カスタム・データ・パブリッシャ・クラス

    サンプル・カスタム・データ・パブリッシャ・クラス
    「図17-11 カスタム・データ・パブリッシャ・クラス」の説明

  7. クラスは必ず正常にコンパイルされる必要があります。

    次回BPELプロセスをデプロイする際に、JavaクラスがSOAアーカイブ(SAR)に追加され、デプロイされます。


注意:

データ・パブリッシャの実装に必要な追加のJavaライブラリがCLASSPATHに存在していることが必要です。

Oracle BPEL Process Managerでは、複数のプロセス・インスタンスが同時に実行される可能性があるため、データ・パブリッシャ内のコードをスレッド・セーフにするか、適切な同期ブロックを追加する必要があります。高いスループットを確保するには、同期が必要な共有データ・オブジェクトを使用しないでください。


17.2.5 composite.xmlへのセンサーとセンサー・アクションの登録方法

Oracle JDeveloperは、composite.xmlファイルを自動的に更新し、例17-7に示すように、センサーとセンサー・アクションの適切なプロパティを取り込みます。

例17-7 composite.xmlファイル

<composite name="JMSQFComposite" applicationName="JMSQueueFilterApp"
   revision="1.0" label="2007-04-02_14-41-31_553" mode="active" state="on">
  <import namespace="http://xmlns.oracle.com/JMSQueueFilter"
  location="JMSQueueFilter.wsdl" importType="wsdl"/>
    <service name="client">
      <interface.wsdl interface="http://xmlns.oracle.com/
         JMSQueueFilter#wsdl.interface(JMSQueueFilter)"/>
      <binding.ws
      port="http://xmlns.oracle.com/JMSQueueFilter#wsdl.endpoint(client/
         JMSQueueFilter_pt)"/>
    </service>
    <component name="JMSQueueFilter">
    <implementation.bpel src="JMSQueueFilter.bpel"/>
    <property name="configuration.sensorLocation" type="xs:string"
    many="false">JMSQueueFilter_sensor.xml</property>
    <property name="configuration.sensorActionLocation" type="xs:string"
    many="false">JMSQueueFilter_sensorAction.xml</property>
</component>
<wire>
   <source.uri>client</source.uri>
   <target.uri>JMSQueueFilter/client</target.uri>
</wire>
</composite>

例17-7に示すように、追加のプロパティは、<property name= ...>を使用して指定できます。

17.3 Oracle Enterprise Manager Fusion Middleware Controlコンソールでのセンサーの定義とセンサー・アクション定義の表示

Oracle Enterprise Manager Fusion Middleware Controlコンソールでは、センサーのメタデータ、センサー・アクション、およびプロセス実行の一部として作成されたセンサー・データの表示をサポートしています。

詳細は、『Oracle Fusion Middleware Oracle SOA Suite管理者ガイド』を参照してください。


注意:

  • このリリースでは、BAMセンサー・アクションはOracle Enterprise Manager Fusion Middleware Controlコンソールに表示されません。

  • 関連するデータベース・センサー・アクションがあるセンサーのみが、Oracle Enterprise Manager Fusion Middleware Controlコンソールに表示されます。 JMSキュー、JMSトピック、リモートJMSまたはカスタム・センサー・アクションに関連するセンサーは表示されません。