この章では、センサーを使用して、実行時に監視する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モデリングの一環として追加または編集します。
Oracle JDeveloperでセンサーをモデル化すると、BPELプロセス・アーカイブの一部として、次の2つの新規ファイルが作成されます。
bpel_process_name_sensor.xml
BPELプロセスのセンサー定義が格納されます。
bpel_process_name_sensorAction.xml
BPELプロセスのセンサー・アクション定義が格納されます。
これらのファイルの作成方法については、第18.2.1項「センサーの構成方法」および第18.2.2項「センサー・アクションの構成方法」を参照してください。
BPELプロセスにセンサーを定義した後は、センサー・アクションを構成して、そのセンサー・データをエンドポイントにパブリッシュする必要があります。センサー・データは、BPELデハイドレーション・ストア・スキーマ、JMSキュー、JMSトピックまたはカスタムJavaクラスにパブリッシュできます。
センサー・アクションには、次の情報が必要です。
名前
パブリッシュ・タイプは、センサー・データの送信が必要な宛先を指定します。次のパブリッシュ・タイプを構成できます。
データベース
センサー・データをデータベースのレポート・スキーマにパブリッシュします。これにより、センサー・データは、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では、センサー・アクションとセンサーは、「監視」ビューの一部として表示されます。
図18-1に示すように、Oracle BPELデザイナの上部にある「監視」を選択します。
図18-2は、「構造」ウィンドウのセンサー・アクションとセンサーを示しています。
センサーは、通常、アクティビティ、フォルトおよび変数のBPELモデリングの一環として追加または編集します。
「センサー・アクション」フォルダを右クリックし、「作成」→「センサー・アクション」の順に選択し、センサー・アクションを追加します。
次の手順に従って、アクティビティ・センサー、変数センサーまたはフォルト・センサーを追加します。
「センサー」フォルダを開きます。
適切な「アクティビティ」、「変数」または「フォルト」サブフォルダを右クリックします。
「作成」をクリックします。
アクティビティを右クリックして「作成」→「センサー」の順に選択し、センサーを個々のアクティビティに追加します。図18-3に詳細を示します。
次の各項では、センサーとセンサー・アクションの構成方法について説明します。
ここでは、LoanFlowアプリケーションを監視して、次の情報を把握すると仮定します。
getCreditRatingというスコープの開始時点
このスコープの完了時点
完了時点での顧客の信用格付け
このためのソリューションは、図18-4に示すように、Oracle BPELデザイナでgetCreditRatingスコープのアクティビティ・センサーを作成することです。センサーに関連付けられているアクティビティは、Oracle BPELデザイナでは、虫眼鏡アイコンで識別されます。
センサーの起動タイミングは、図18-4に示す「評価時間」リストを使用して制御します。次の評価時間から選択できます。
すべて
アクティブ化、完了、フォルト、補正および再試行の各フェーズを通して監視します。
アクティブ化
センサーは、アクティビティの実行直前に起動されます。
完了
センサーは、アクティビティの実行直後に起動されます。
フォルト
センサーは、アクティビティの実行中にフォルトが発生した場合に起動されます。この値は、単純なアクティビティを監視するセンサーにのみ選択してください。
補正
センサーは、関連する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="callbackClient">
<activityConfig evalTime="all">
<variable outputNamespace="http://www.w3.org/2001/XMLSchema"
outputDataType="int"
target="$crOutput/payload//services:rating"/>
</activityConfig>
</sensor>
受信したすべての融資申請を記録する場合は、図18-5に示すように、変数inputに対して変数センサーを作成します。
例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>
アイデンティティ・サービスのフォルトを監視する場合は、図18-6に示すように、フォルト・センサーを作成します。
例18-3に示すように、bpel_process_name_sensor.xmlファイルに新規エントリが作成されます。
センサーを作成する場合は、実行時に監視するアクティビティ、変数およびフォルトを識別します。エンドポイントにセンサーの値をパブリッシュする場合(たとえば、LoanApplicationSensorのデータをJMSキューにパブリッシュする場合)は、図18-7に示すように、センサー・アクションを作成し、LoanApplicationSensorに関連付けます。
例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ファイルの<記号が<に変換されます。filename_sensorAction.xmlファイルを直接編集して<記号を指定することもできません。この操作ではエラーが発生します。 |
LoanApplicationSensorおよびCreditRatingSensorの値をデータベースのレポート・スキーマにパブリッシュする場合は、図18-8に示すように、追加のセンサー・アクションを作成し、CreditRatingSensorとLoanApplicationSensorの両方に関連付けます。
例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-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>
|
注意:
|
組込みのパブリッシュ・タイプ(「データベース」、「JMSキュー」、「JMSトピック」および「JMSアダプタ」)では対応できない特殊なセンサー・アクション要件がある場合は、図18-10に示すように、「カスタム」パブリッシュ・タイプでセンサー・アクションを作成できます。「パブリッシュ・ターゲット」フィールド内の名前は、実装する必要がある完全修飾Javaクラス名を示します。
「JMSキュー」および「JMSトピック」パブリッシュ・タイプでは、ローカルJMS宛先にのみパブリッシュします。センサー・データをリモート・トピックおよびキューにパブリッシュする場合は、図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テクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。
カスタム・データ・パブリッシャを作成するには、次の各手順を実行します。
カスタム・データ・パブリッシャを作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、BPELプロジェクトをダブルクリックします。
「プロジェクト・プロパティ」ダイアログが表示されます。
「ライブラリとクラスパス」をクリックします。
次のファイルを参照して選択します。
SOA_ORACLE_HOME\lib\java\shared\oracle.soainfra.common\11.1.1\orabpel.jar
新規Javaクラスを作成します。
パッケージとクラス名は、センサー・アクションのパブリッシュ・ターゲット名と一致している必要があります。
com.oracle.bpel.sensor.DataPublisherインタフェースを実装します。
これにより、ソース・ファイルが更新され、DataPublisherインタフェースのメソッドとimport文が組み込まれます。
Oracle JDeveloperのエディタを使用して、図18-13のサンプル・カスタム・データ・パブリッシャ・クラスに示すように、DataPublisherインタフェースのpublishメソッドを実装します。
クラスは必ず正常にコンパイルされる必要があります。
次回BPELプロセスをデプロイする際に、JavaクラスがSOAアーカイブ(SAR)に追加され、デプロイされます。
|
注意: データ・パブリッシャの実装に必要な追加のJavaライブラリがクラスパスに存在していることが必要です。Oracle BPEL Process Managerでは、複数のプロセス・インスタンスが同時に実行される可能性があるため、データ・パブリッシャ内のコードをスレッド・セーフにするか、適切な同期ブロックを追加する必要があります。高いスループットを確保するには、同期が必要な共有データ・オブジェクトを使用しないでください。 |
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= ...>を使用して指定できます。
Oracle Enterprise Manager Fusion Middleware Controlコンソールでは、センサーのメタデータ、センサー・アクション、およびプロセス実行の一部として作成されたセンサー・データの表示をサポートしています。
詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
|
注意:
|