この章では、センサーを使用して、実行時に監視するBPELアクティビティ、変数およびフォルトを選択する方法について説明します。BPELプロセスに対するセンサーの使用方法および設定方法について説明します。
項目は次のとおりです。
センサーの詳細は、次の各項を参照してください。
Oracle BPEL Process Managerでセンサー・アクションを作成し、センサー・データをOracle BAMサーバーのデータ・オブジェクトとしてパブリッシュする方法については、第50.7項「Oracle BAMセンサー・アクションを使用したBPELセンサーの統合」を参照してください。
センサーは、BPELプロセス・インスタンスのライフ・サイクル全体を通じて特定のイベントに対する関心を宣言するために使用されます。ビジネス・プロセスでは、このようなイベントとして、特定のアクティビティのアクティブ化と完了、またはビジネス・プロセス内の変数値の変更があります。
センサーがトリガーされると、特定のセンサー値が作成されます。たとえば、センサーでBPELスコープの完了に対する関心を宣言した場合、センサー値は、BPELスコープの名前とアクティビティの完了時点のタイムスタンプ値で構成されます。センサー値でBPELプロセス変数に対する関心を宣言した場合、センサー値は、変数が変更された時点の変数の値、変数の変更時点のタイムスタンプ、およびBPEL変数を変更したアクティビティの名前とタイプで構成されます。
センサー値のデータ・フォーマットは、XMLスキーマを使用して正規化され、適切に定義されます。
センサー・アクションは、センサー値の処理方法に関する指示です。Oracle BPEL Process Managerによってセンサーがトリガーされると、そのセンサーに新しいセンサー値が作成されます。その後、そのセンサーに関連付けられているすべてのセンサー・アクションが実行されます。通常、センサー・アクションは、センサー値をデータベースに保持するか、正規化されたセンサー値データをJMSキューまたはトピックに送信します。Oracle Business Activity Monitoringと統合すると、センサー値をBAMアダプタに送信できます。
Oracle JDeveloperを使用するか、センサー構成ファイルを手動で指定することで、次のタイプのセンサーを定義できます。
アクティビティ・センサーは、BPELプロセス内でのアクティビティ実行を監視する際に使用します。たとえば、invokeアクティビティの実行時間や、このアクティビティによるスコープ完了までの時間を監視できます。アクティビティ・センサーに加え、アクティビティの変数も監視できます。
変数センサーは、BPELプロセスの変数(または1つの変数の複数部分)を監視する際に使用します。たとえば、変数センサーで、BPELプロセスの入力データと出力データを監視できます。
フォルト・センサーは、BPELフォルトを監視する際に使用します。
センサーは、通常、アクティビティ、フォルトおよび変数のBPELモデリングの一環として追加または編集します。
これらのセンサーは、次のパブリックSQLビューを使用して公開されます。
BPEL_ACTIVITY_SENSOR_VALUES
BPEL_FAULT_SENSOR_VALUES
BPEL_VARIABLE_SENSOR_VALUES
これらのビューをBPEL_PROCESS_INSTANCES
ビューと結合し、センサー値と、センサー値を作成したBPELプロセス・インスタンスを関連付けることができます。詳細は、付録D「センサー・パブリック・ビューとセンサー・アクションXSDの理解」を参照してください。
Oracle JDeveloperでセンサーをモデル化すると、BPELプロセス・アーカイブの一部として、次の2つの新規ファイルが作成されます。
bpel_process_name
_
sensor.xml
BPELプロセスのセンサー定義が格納されます。
bpel_process_name
_
sensorAction.xml
BPELプロセスのセンサー・アクション定義が格納されます。
これらのファイルの作成方法については、第17.2.2項「センサーの構成方法」および第17.2.3項「センサー・アクションの構成方法」を参照してください。
BPELプロセスにセンサーを定義した後は、センサー・アクションを構成して、そのセンサー・データを指定された宛先にパブリッシュする必要があります。センサーにセンサー・アクションが定義されていない場合、実行時は何も行われません。
センサー・アクションには、次の情報が必要です。
名前
パブリッシュ・タイプは、センサー・データの送信が必要な宛先を指定します。次の宛先にセンサー・データをパブリッシュできます。
データベース
センサー・データをデータベースのレポート・スキーマにパブリッシュします。これにより、センサー・データは、SQLを使用して問い合せることができます。
JMSキュー
センサー・データをJMSキューにパブリッシュします。XMLデータは、Sensor.xsd
ファイルに従って転送されます。このファイルは、Oracle JDeveloperとともにJDEV_HOME
\jdeveloper\integration\seed\soa\shared\bpel
ディレクトリに格納されます。
JMSトピック
センサー・データをJMSトピックにパブリッシュします。XMLデータは、JMSキューで使用されるファイルと同じSensor.xsd
ファイルに従って転送されます。
カスタム
データをカスタムJavaクラスにパブリッシュします。
JMSアダプタ
JMSアダプタは、リモート・キューやトピックおよび様々なJMSプロバイダへのパブリッシュに使用します。「JMSキュー」および「JMSトピック」パブリッシュ・タイプでは、ローカルJMS宛先にのみパブリッシュします。
センサーのリスト
センサー・アクションに対応するセンサーです。
Oracle BAMセンサーは、Oracle BPEL Process ManagerからOracle BAMに情報およびイベントをパブリッシュします。Oracle BAMでは、アプリケーションのエンドツーエンド監視用の豊富な機能を備えたリアルタイム・ダッシュボードにデータを表示できます。詳細は、第50.7項「Oracle BAMセンサー・アクションを使用したBPELセンサーの統合」を参照してください。
Oracle JDeveloperでは、センサー・アクションとセンサーは、「監視」ビューの一部として表示されます。
センサーとセンサー・アクションにアクセスする手順は、次のとおりです。
図17-1に示すように、Oracle BPELデザイナの上部にある「監視」を選択します。
図17-2は、「構造」ウィンドウのセンサー・アクションとセンサーを示しています。
センサーは、通常、アクティビティ、フォルトおよび変数のBPELモデリングの一環として追加または編集します。
「センサー・アクション」フォルダを右クリックし、「作成」→「センサー・アクション」の順に選択し、センサー・アクションを追加します。
次の手順に従って、アクティビティ・センサー、変数センサーまたはフォルト・センサーを追加します。
「センサー」フォルダを開きます。
適切な「アクティビティ」、「変数」または「フォルト」サブフォルダを右クリックします。
「作成」をクリックします。
アクティビティを右クリックして「作成」→「センサー」の順に選択し、センサーを個々のアクティビティに追加します。図17-3に詳細を示します。
次の各項では、センサーとセンサー・アクションの構成方法について説明します。
この項では、アクティビティ・センサー、変数センサーおよびフォルト・センサーを構成する方法について説明します。
アクティビティ・センサーを構成する手順は、次のとおりです。
ここでは、融資フロー・アプリケーションを監視して、次の情報を把握すると仮定します。
GetCreditRatingというスコープの開始時点
このスコープの完了時点
完了時点での顧客の信用格付け
この問題を解決するには、図17-4に示すように、Oracle BPELデザイナでGetCreditRatingスコープのアクティビティ・センサーを作成します。
Oracle BPELデザイナの上部にある「監視」を選択します。
「構造」ウィンドウで、「センサー」フォルダを開きます。
「アクティビティ」を右クリックし、「作成」を選択します。
「アクティビティ名」フィールドの右側で、「参照」アイコンをクリックして、センサーを作成するアクティビティを選択します。これは必須フィールドです。
センサーが関連付けられたアクティビティは、Oracle BPELデザイナでは拡大鏡で識別されます。
センサーの起動タイミングは、図17-4に示す「評価時間」リストを使用して制御します。
すべて
アクティブ化、完了、フォルト、補正および再試行の各フェーズを通して監視します。
アクティブ化
センサーは、アクティビティの実行直前に起動されます。
完了
センサーは、アクティビティの実行直後に起動されます。
フォルト
センサーは、アクティビティの実行中にフォルトが発生した場合に起動されます。この値は、単純なアクティビティを監視するセンサーにのみ選択してください。
補正
センサーは、関連する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="GetCreditRating"> <activityConfig evalTime="all"> <variable outputNamespace="http://www.w3.org/2001/XMLSchema" outputDataType="int" target="$crOutput/payload//services:rating"/> </activityConfig> </sensor>
アクティビティで変数センサーを作成するには、「アクティビティ変数センサー」セクションで「追加」アイコンをクリックします。これはオプション・フィールドです。
変数センサーを構成する手順は、次のとおりです。
すべての着信融資申請を記録する場合、変数センサーを作成できます。
「構造」ウィンドウで、「センサー」フォルダを開きます。
「変数」を右クリックし、「作成」を選択します。
図17-5に示すように、「ターゲット」フィールドの右側にある「編集」アイコンをクリックして、変数に変数センサー(この例ではinputという名前)を作成します。
「ターゲット」フィールドの選択内容に基づいて、「出力ネームスペース」フィールドと「出力データ型」フィールドは自動的に入力されます。
例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-6に示すように、「ネームスペース」 フィールドの上にある「参照」アイコンをクリックして、フォルト・センサーを作成します。
選択内容に基づいて、「ネームスペース」フィールドと「ローカル・パート」フィールドは自動的に入力されます。
例17-3に示すように、bpel_process_name
_sensor.xml
ファイルに新規エントリが作成されます。
センサーを作成する場合は、実行時に監視するアクティビティ、変数およびフォルトを識別します。エンドポイントにセンサーの値をパブリッシュする場合(たとえば、図17-5で作成したLoanApplicationSensor変数センサーのデータをJMSキューにパブリッシュする場合)は、図17-7に示すように、センサー・アクションを作成し、LoanApplicationSensor変数に関連付けます。
センサー・アクションを構成する手順は、次のとおりです。
「構造」ウィンドウで、「センサー・アクション」フォルダを右クリックします。
「作成」→「センサー・アクション」の順に選択します。
表17-1に記載されている詳細を入力します。
表17-1 「センサー・アクション」ダイアログ
フィールド | 説明 |
---|---|
名前 |
名前を入力するか、デフォルト名をそのまま使用します。 |
パブリッシュ・タイプ |
センサー・データをパブリッシュする宛先を選択します。詳細は、第17.1項「センサーの概要」を参照してください。 |
JMS接続ファクトリ |
パブリッシュ・タイプが「JMSキュー」、「JMSトピック」または「JMSアダプタ」の場合は、接続ファクトリを指定します。 |
パブリッシュ・ターゲット |
パブリッシュ・タイプが「JMSキュー」、「JMSトピック」、「カスタム」または「JMSアダプタ」の場合は、パブリッシュ・ターゲットを指定する必要があります。パブリッシュ・ターゲットは、指定されたパブリッシュ・タイプによって異なる内容を表します。
|
フィルタ |
フィルタ・ロジックはブール式で入力します。フィルタを使用すると、特定の範囲内のセンサー・データを監視できます。構成済のフィルタの例については、図17-9および例17-6を参照してください。 |
有効化 |
センサー・アクションを無効にする場合、このチェック・ボックスの選択を解除します。デフォルトでは、有効になっています。このチェック・ボックスの選択を解除して、センサー・アクションを無効にすると、センサー・アクションでデータがパブリッシュされません。 |
例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>
注意: 「センサー・アクション」ダイアログの「フィルタ」フィールドには、< (より小さい)記号は指定できません。指定すると、Oracle JDeveloperにより、bpel_process_name _sensorAction.xml ファイルの< 記号が< に変換されます。filename _sensorAction.xml ファイルを直接編集して< 記号を指定することもできません。この操作ではエラーが発生します。 |
LoanApplicationSensorおよびCreditRatingSensorの値をデータベースのレポート・スキーマにパブリッシュする場合、図17-8のように追加のセンサー・アクションを作成し、それをCreditRatingSensorとLoanApplicationSensorの両方に関連付けます。
例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-9に示すように、フィルタ付きのセンサー・アクションを作成できます。フィルタ問合せの設計時の検証はありません。問合せが正しいことを確認する必要があります。
例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>
注意:
|
組込みのパブリッシュ・タイプ(「データベース」、「JMSキュー」、「JMSトピック」および「JMSアダプタ」)では対応できない特殊なセンサー・アクション要件がある場合は、図17-10に示すように、「カスタム」パブリッシュ・タイプでセンサー・アクションを作成できます。「パブリッシュ・ターゲット」フィールド内の名前は、実装する必要がある完全修飾Javaクラス名を示します。詳細は、第17.2.5項「カスタム・データ・パブリッシャの作成方法」を参照してください。
「JMSキュー」および「JMSトピック」パブリッシュ・タイプでは、ローカルJMS宛先にのみパブリッシュします。センサー・データをリモート・トピックおよびキューにパブリッシュする場合は、図17-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テクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。
カスタム・データ・パブリッシャを作成するには、次の各手順を実行します。
カスタム・データ・パブリッシャを作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、BPELプロジェクトをダブルクリックします。
「プロジェクト・プロパティ」ダイアログが表示されます。
「ライブラリとクラスパス」をクリックします。
次のファイルを参照して選択します。
SOA_ORACLE_HOME\lib\java\shared\oracle.soainfra.common\11.1.1\orabpel.jar
図17-12に詳細を示します。
新規Javaクラスを作成します。
パッケージとクラス名は、センサー・アクションのパブリッシュ・ターゲット名と一致している必要があります。
com.oracle.bpel.sensor.DataPublisher
インタフェースを実装します。
これにより、ソース・ファイルが更新され、DataPublisherインタフェースのメソッドとimport文が組み込まれます。
Oracle JDeveloperのエディタを使用して、図17-13のサンプル・カスタム・データ・パブリッシャ・クラスに示すように、DataPublisherインタフェースのpublishメソッドを実装します。
クラスは必ず正常にコンパイルされる必要があります。
次回BPELプロセスをデプロイする際に、JavaクラスがSOAアーカイブ(SAR)に追加され、デプロイされます。
注意: データ・パブリッシャの実装に必要な追加のJavaライブラリがクラスパスに存在していることが必要です。Oracle BPEL Process Managerでは、複数のプロセス・インスタンスが同時に実行される可能性があるため、データ・パブリッシャ内のコードをスレッド・セーフにするか、適切な同期ブロックを追加する必要があります。高いスループットを確保するには、同期が必要な共有データ・オブジェクトを使用しないでください。 |
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= ...>
を使用して指定できます。
Oracle Enterprise Manager Fusion Middleware Controlでは、センサーのメタデータ、センサー・アクション、およびプロセス実行の一部として作成されたセンサー・データの表示をサポートしています。
詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
注意:
|