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

前
 
次
 

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

この章では、センサーを使用して、BPELプロセスでの実行時に監視するBPELアクティビティ、変数およびフォルトを選択する方法について説明します。また、センサー・アクションを作成して、エンドポイントにセンサーの値をパブリッシュする方法についても説明します。

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

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

18.1 センサーの概要

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

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

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

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

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

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

これらのセンサーは、次のパブリックSQLビューを使用して公開されます。

これらのビューをBPEL_PROCESS_INSTANCESビューと結合し、センサー値と、センサー値を作成したBPELプロセス・インスタンスを関連付けることができます。詳細は、付録D「センサー・パブリック・ビューとセンサー・アクションXSDの理解」を参照してください。

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

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

BPELプロセスにセンサーを定義した後は、センサー・アクションを構成して、そのセンサー・データを指定された宛先にパブリッシュする必要があります。センサーにセンサー・アクションが定義されていない場合、実行時は何も行われません。

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

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

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

Oracle JDeveloperでは、センサー・アクションとセンサーは、「監視」ビューの一部として表示されます。

18.2.1 センサーとセンサー・アクションへのアクセス方法

センサーとセンサー・アクションにアクセスする手順は、次のとおりです。

  1. 図18-1に示すように、Oracle BPELデザイナの上部にある「監視」を選択します。

    図18-1 「監視」ビュー

    図18-1の説明が続きます
    「図18-1 「監視」ビュー」の説明

    図18-2は、「構造」ウィンドウのセンサー・アクションとセンサーを示しています。

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

    図18-2の説明が続きます
    「図18-2 Oracle JDeveloperに表示されたセンサーとセンサー・アクション」の説明

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

  2. 「センサー・アクション」フォルダを右クリックし、「作成」「センサー・アクション」の順に選択し、センサー・アクションを追加します。

  3. 次の手順に従って、アクティビティ・センサー、変数センサーまたはフォルト・センサーを追加します。

    1. 「センサー」フォルダを開きます。

    2. 適切な「アクティビティ」「変数」または「フォルト」サブフォルダを右クリックします。

    3. 「作成」をクリックします。

  4. アクティビティを右クリックして「作成」「センサー」の順に選択し、センサーを個々のアクティビティに追加します。図18-3に詳細を示します。

    図18-3 アクティビティ・センサーの作成

    図18-3の説明が続きます
    「図18-3 アクティビティ・センサーの作成」の説明

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

18.2.2 センサーの構成方法

この項では、アクティビティ・センサー、変数センサーおよびフォルト・センサーを構成する方法について説明します。

アクティビティ・センサーを構成する手順は、次のとおりです。

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

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

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

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

この問題を解決するには、図18-4に示すように、Oracle BPELデザイナでGetCreditRatingスコープのアクティビティ・センサーを作成します。

  1. Oracle BPELデザイナの上部にある「監視」を選択します。

  2. 「構造」ウィンドウで、「センサー」フォルダを開きます。

  3. 「アクティビティ」を右クリックし、「作成」を選択します。

  4. 「アクティビティ名」フィールドの右側で、「参照」アイコンをクリックして、センサーを作成するアクティビティを選択します。これは必須フィールドです。

    図18-4 アクティビティ・センサーの作成

    図18-4の説明が続きます
    「図18-4 アクティビティ・センサーの作成」の説明

    センサーが関連付けられたアクティビティは、Oracle BPELデザイナでは拡大鏡で識別されます。

    センサーの起動タイミングは、図18-4に示す「評価時間」リストを使用して制御します。

  5. 次の項目から選択します。

    • すべて

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

    • アクティブ化

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

    • 完了

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

    • フォルト

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

    • 補正

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

    • 再試行

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

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

    例18-1 bpel_process_name_sensor.xmlファイル

    <sensor sensorName="CreditRatingSensor"
    
    classname="oracle.tip.pc.services.reports.dca.agents.BpelActivitySensorAgent"
              kind="activity" 
              target="GetCreditRating">
    
      <activityConfig evalTime="all">
        <variable outputNamespace="http://www.w3.org/2001/XMLSchema"
                  outputDataType="int" 
                  target="$crOutput/payload//services:rating"/>
      </activityConfig> 
    </sensor>
    
  6. アクティビティで変数センサーを作成するには、「アクティビティ変数センサー」セクションで「追加」アイコンをクリックします。これはオプション・フィールドです。

変数センサーを構成する手順は、次のとおりです。

すべての着信融資申請を記録する場合、変数センサーを作成できます。

  1. 「構造」ウィンドウで、「センサー」フォルダを開きます。

  2. 「変数」を右クリックし、「作成」を選択します。

  3. 図18-5に示すように、「ターゲット」フィールドの右側にある「編集」アイコンをクリックして、変数に変数センサー(この例ではinputという名前)を作成します。

    図18-5 変数センサーの作成

    図18-5の説明が続きます
    「図18-5 変数センサーの作成」の説明

    「ターゲット」フィールドの選択内容に基づいて、「出力ネームスペース」フィールドと「出力データ型」フィールドは自動的に入力されます。

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

    例18-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>
    

フォルト・センサーを構成する手順は、次のとおりです。

フォルトを監視(この例ではアイデンティティティ・サービスから)する場合、フォルト・センサーを作成できます。

  1. 「構造」ウィンドウで、「センサー」フォルダを開きます。

  2. 「フォルト」を右クリックし、「作成」を選択します。

  3. 図18-6に示すように、「ネームスペース」 フィールドの上にある「参照」アイコンをクリックして、フォルト・センサーを作成します。

    図18-6 フォルト・センサーの作成

    図18-6の説明が続きます
    「図18-6 フォルト・センサーの作成」の説明

選択内容に基づいて、「ネームスペース」フィールドと「ローカル・パート」フィールドは自動的に入力されます。

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

例18-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>

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

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

センサー・アクションを構成する手順は、次のとおりです。

  1. 「構造」ウィンドウで、「センサー・アクション」フォルダを右クリックします。

  2. 「作成」「センサー・アクション」の順に選択します。

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

    表18-1 「センサー・アクション」ダイアログ

    フィールド 説明

    名前

    名前を入力するか、デフォルト名をそのまま使用します。

    パブリッシュ・タイプ

    センサー・データをパブリッシュする宛先を選択します。詳細は、第18.1項「センサーの概要」を参照してください。

    JMS接続ファクトリ

    パブリッシュ・タイプが「JMSキュー」「JMSトピック」または「JMSアダプタ」の場合は、接続ファクトリを指定します。

    パブリッシュ・ターゲット

    パブリッシュ・タイプが「JMSキュー」「JMSトピック」「カスタム」または「JMSアダプタ」の場合は、パブリッシュ・ターゲットを指定する必要があります。パブリッシュ・ターゲットは、指定されたパブリッシュ・タイプによって異なる内容を表します。

    • パブリッシュ・タイプがデータベースの場合、このフィールドは空白のままになります。

    • パブリッシュ・タイプが「JMSキュー」「JMSトピック」または「JMSアダプタ」の場合は、JMS宛先のJNDI名を表します。

    • パブリッシュ・タイプが「カスタム」の場合は、完全修飾されたJavaクラス名を表します。

    フィルタ

    フィルタ・ロジックはブール式で入力します。フィルタを使用すると、特定の範囲内のセンサー・データを監視できます。構成済のフィルタの例については、図18-9および例18-6を参照してください。

    有効化

    センサー・アクションを無効にする場合、このチェック・ボックスの選択を解除します。デフォルトでは、有効になっています。このチェック・ボックスの選択を解除して、センサー・アクションを無効にすると、センサー・アクションでデータがパブリッシュされません。


図18-7 センサー・アクションの作成

図18-7の説明が続きます
「図18-7 センサー・アクションの作成」の説明

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

例18-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>

注意:

「センサー・アクション」ダイアログの「フィルタ」フィールドには、<(より小さい)記号は指定できません。指定すると、Oracle JDeveloperにより、bpel_process_name_sensorAction.xmlファイルの<記号が&lt;に変換されます。filename_sensorAction.xmlファイルを直接編集して<記号を指定することもできません。この操作ではエラーが発生します。


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

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

図18-8の説明が続きます
「図18-8 追加のセンサー・アクションの作成」の説明

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

例18-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を超える融資申請を監視する場合、図18-9に示すように、フィルタ付きのセンサー・アクションを作成できます。フィルタ問合せの設計時の検証はありません。問合せが正しいことを確認する必要があります。

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

図18-9の説明が続きます
「図18-9 フィルタ付きのセンサー・アクションの作成」の説明

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

例18-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>   

注意:

  • bpel_process_name_sensorAction.xml構成ファイルでアクション・フィルタを構成する必要があるすべてのネームスペースを指定する必要があります。たとえば、ネームスペースが"http://myCustomer"customer XMLスキーマ要素があり、customer age要素に対してフィルタを作成すると仮定します。したがって、フィルタでネームスペースを使用する前に、ファイルで"http:/myCustomer"のネームスペースを宣言する必要があります。宣言しない場合、有効な問合せを作成できません。ファイルの属性宣言部分にxmlns:ns1="http://myCustomer"を追加します。これで、問合せで..../ns1:customer/ns1:age/...を使用できるようになります。

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


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

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

図18-10の説明が続きます
「図18-10 「カスタム」パブリッシュ・タイプの使用」の説明

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

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

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

図18-11の説明が続きます
「図18-11 「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テクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。

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

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

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

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

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

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

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

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

    図18-12に詳細を示します。

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

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

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

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

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

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

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

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

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

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

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


注意:

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

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


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

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

例18-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>

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

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

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

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


注意:

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

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