センサーを使用すると、実行時に監視対象とするBPELアクティビティ、変数およびフォルトを指定できます。この章では、BPELプロセスのセンサーの使用方法および設定方法について説明します。また、センサー・データをOracle BAM Serverのデータ・オブジェクトとしてパブリッシュするための、Oracle BPEL Process Managerにおけるセンサー・アクションの作成方法についても説明します。
この章の内容は次のとおりです。
センサーの使用方法は、125.ReportsSchema
サンプルで具体的に示されます。このサンプルでは、センサーを従業員更新プロセスにおける主要なデータの識別に、センサー・アクションをデータベース更新情報のパブリッシュに使用しています。
関連項目: SOA_Oracle_Home ¥bpel¥samples¥tutorials¥125.ReportsSchema
|
センサーのアクティビティへの挿入は、OrderBookingチュートリアルでも具体的に示されています。
Oracle JDeveloperを使用するか、センサー構成ファイルを手動で指定することで、次のタイプのセンサーを定義できます。
アクティビティ・センサーは、BPELプロセス内でのアクティビティ実行を監視する際に使用します。たとえば、invokeアクティビティの実行時間や、スコープ完了までの時間を監視できます。アクティビティ・センサーに加え、アクティビティの変数も監視できます。
変数センサーは、BPELプロセスの変数(または変数のパート)を監視する際に使用します。たとえば、変数センサーを使用して、BPELプロセスの入力および出力データを監視できます。
フォルト・センサーは、BPELフォルトを監視する際に使用します。
センサーは、通常、アクティビティ、フォルトおよび変数のBPELモデリングの一環として追加または編集します。
Oracle JDeveloperでセンサーをモデリングすると、BPELプロセス・スーツケースの一部として次の2つの新規ファイルが作成されます。
sensor.xml
: BPELプロセスのセンサー定義が含まれます。
sensorAction.xml
: BPELプロセスのセンサー・アクション定義が含まれます。
これらのファイルの作成方法の詳細は、「センサーの構成」および「センサー・アクションの構成」を参照してください。
BPELプロセスにセンサーを定義したら、センサーのデータをエンドポイントにパブリッシュするセンサー・アクションを構成する必要があります。センサー・データは、BPELレポート・スキーマ(BPELデハイドレーション・ストアに存在)、JMSキューまたはJMSトピック、あるいはカスタムJavaクラスにパブリッシュできます。
センサー・アクションには、次の情報が必要です。
名前
パブリッシュ・タイプでは、センサー・データを送信する必要のある宛先を指定します。次のパブリッシュ・タイプを構成できます。
データベース: センサー・データをデータベースのレポート・スキーマにパブリッシュします。センサー・データは、SQLを使用して問合せできます。
JMSキュー: センサー・データをJMSキューにパブリッシュします。
JMSトピック: センサー・データをJMSトピックにパブリッシュします。
カスタム: データをカスタムJavaクラスにパブリッシュします。
JMSアダプタ: JMSアダプタを使用してリモート・キューまたはトピックおよび様々なJMSプロバイダにパブリッシュします。「JMSキュー」および「JMSトピック」パブリッシュ・タイプでは、ローカルJMS宛先にのみパブリッシュします。
センサーのリスト: センサー・アクションに対応する複数のセンサーです。
Oracle JDeveloperで、センサー・アクションとセンサーは図17-1のようにプロセス・ツリー構造の一部として表示されます。
センサーは、通常、アクティビティ、フォルトおよび変数のBPELモデリングの一環として追加または編集します。「センサー・アクション」フォルダを右クリックして「作成」→「センサー・アクション」を選択することで、センサー・アクションを追加できます。アクティビティ・センサー、変数センサーまたはフォルト・センサーを追加するには、「センサー」フォルダを展開し、適切な「アクティビティ」、「変数」または「フォルト」サブフォルダを右クリックし、「作成」をクリックします。
次の各項では、LoanDemoPlus
を例として使用し、センサーとセンサー・アクションを構成する方法について説明します。
関連項目: SOA_Oracle_Home ¥bpel¥samples¥demos のLoanDemoPlus チュートリアル
|
LoanFlowアプリケーションを監視する場合、状況に応じて、getCreditRating
スコープの開始および完了のタイミングを把握できるほか、完了時に顧客の信用度を確認できます。このようなソリューションとして、図17-2のように、Oracle JDeveloperでgetCreditRating
スコープのアクティビティ・センサーを作成します。センサーが関連付けられているアクティビティは、Oracle JDeveloperに虫眼鏡アイコンとともに表示されます。
図17-2に示されている「評価時間」属性を使用して、センサーの起動するタイミングを制御します。次のオプションから選択できます。
アクティブ化: センサーは、アクティビティの実行直前に起動します。
完了: センサーは、アクティビティの実行直後に起動します。
フォルト: センサーは、アクティビティの実行中にフォルトが発生した場合に起動します。この値は、単純なアクティビティを監視するセンサーにのみ選択します。
補正: センサーは、関連するscopeアクティビティが補正されたときに起動します。この値は、スコープを監視するセンサーにのみ選択します。
再試行: センサーは、関連するinvokeアクティビティが再試行されたときに起動します。
すべて: 前述のすべてのフェーズで監視が発生します。
次のように、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-3のように変数input
に変数センサーを作成します。
次のように、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のようにフォルト・センサーを作成します。
次のように、sensor.xml
ファイルに新規エントリが作成されます。
<sensor sensorName="IdentityServiceFault" classname="oracle.tip.pc.services.reports.dca.agents.BpelFaultSensorAgent" kind="fault" target="is:identityServiceFault"> <faultConfig/> </sensor>
センサーを作成する場合、実行時に監視するアクティビティ、変数およびフォルトを識別します。エンドポイントにセンサーの値をパブリッシュする場合(たとえば、LoanApplicationSensor
のデータをJMSキューにパブリッシュする場合)、図17-5のようにセンサー・アクションを作成し、それをLoanApplicationSensor
に関連付けます。
次のように、sensorAction.xml
ファイルに新規エントリが作成されます。
<action name="BAMFeed" enabled="true" publishType="JMSQueue" publishTarget="jms/bamTopic"> <sensorName>LoanApplicationSensor</sensorName> <property name=ÒJMSConnectionFactoryÒ> jms/QueueConnectionFactory </property> </action>
LoanApplicationSensor
およびCreditRatingSensor
の値をデータベースのレポート・スキーマにパブリッシュする場合、図17-6のように追加のセンサー・アクションを作成し、それをCreditRatingSensor
とLoanApplicationSensor
の両方に関連付けます。
次のように、sensorAction.xml
ファイルに新規エントリが作成されます。
<action name="PersistingAction" enabled="true" publishType="BPELReportsSchema"> <sensorName>LoanApplicationSensor</sensorName> <sensorName>CreditRatingSensor</sensorName> </action
1つのセンサーのデータは、複数のエンドポイントにパブリッシュできます。前述の2つのコード例では、LoanApplicationSensor
のデータがJMSキューとデータベース・レポート・スキーマの両方にパブリッシュされています。
融資金額が100,000ドルを超える融資申請を監視する場合、図17-7のようにフィルタ付きのセンサー・アクションを作成できます。
次のように、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Ò> jms/QueueConnectionFactory </property> </action>
注意:
|
組込みのパブリッシュ・タイプ(データベース、JMSキュー、JMSトピックおよびJMSアダプタ)では対応できない特殊なセンサー・アクション要件がある場合、図17-8のように「カスタム」パブリッシュ・タイプでセンサー・アクションを作成できます。「パブリッシュ・ターゲット」フィールドの名前として、実装する必要のある完全修飾Javaクラス名を指定します。
「JMSキュー」および「JMSトピック」パブリッシュ・タイプでは、ローカルJMS宛先にのみパブリッシュします。センサー・データをリモート・トピックおよびキューにパブリッシュする場合は、図17-9に示すように「JMSアダプタ」パブリッシュ・タイプを使用します。
JMSアダプタでは、センサー・データをリモート・トピックおよびキューにパブリッシュできるのみでなく、次のように様々なJMSプロバイダがサポートされます。
サード・パーティJMSプロバイダ(Tibco JMS、IBM WebSphere MQ JMSおよびSonicMQなど)
Oracle Enterprise Messaging Service(OEMS)プロバイダ(メモリー/ファイルおよびデータベースなど)
「JMSアダプタ」パブリッシュ・タイプを選択した場合は、oc4j-ra.xml
ファイルにエントリを作成する必要があります。「センサー・アクション」ダイアログでJMS接続名プロパティを使用して、oc4j-ra.xml
ファイル内の適切なエントリを指します。
カスタム・データ・パブリッシャを作成するには、Oracle JDeveloperでBPELプロジェクトをダブルクリックし、次の手順を実行します。
「ツール」メイン・メニューから「プロジェクト・プロパティ」→「ライブラリ」→「Jar/ディレクトリの追加」を選択します。
SOA_Oracle_Home¥bpel¥lib¥orabpel.jarを参照して選択します。
新規Javaクラスを作成します。
パッケージおよびクラス名は、センサー・アクションのパブリッシュ・ターゲット名と一致している必要があります。
com.oracle.bpel.sensor.DataPublisher
インタフェースを実装します。
これにより、ソース・ファイルを更新し、DataPublisherインタフェースのメソッドとimport文を組み込みます。
Oracle JDeveloperのエディタを使用して、次のサンプル・カスタム・データ・パブリッシャ・クラスのように、DataPublisher
インタフェースのpublishメソッドを実装します。
クラスが正常にコンパイルされることを確認します。
次回BPELプロセスをデプロイするときに、JavaクラスがBPELスーツケースに追加され、Oracle BPEL Process Managerにデプロイされます。
注意: データ・パブリッシャの実装に必要な追加のJavaライブラリがOracle BPEL ServerのCLASSPATH に存在することを確認します。
Oracle BPEL Process Managerでは、複数のプロセス・インスタンスを同時に実行するため、データ・パブリッシャのコードをスレッド・セーフとするか、適切な同期ブロックを追加する必要があります。高いスループットを確保するには、同期を必要とする共有データ・オブジェクトを使用しないでください。 |
Oracle JDeveloperでは、自動的にプロセス・デプロイメント・ファイルのbpel.xml
が更新され、次のようにセンサーおよびセンサー・アクションの適切なプロパティが組み込まれます。
<configurations> … <property name="sensorLocation">sensor.xml</property> <property name="sensorActionLocation">sensorAction.xml</property> … <property name="SLACompletionTime">P0YT1.5S</property> </configurations>
このコード例のように、<property name= ...>
を使用して追加のプロパティを指定できます。
コンソールでは、センサーおよびセンサー・アクションのメタデータに加え、プロセス実行の一部として作成されたセンサー・データを参照できます。Oracle BPEL Controlには、次のURLでアクセスします。
http://localhost:port/BPELConsole
「スタート」→「すべてのプログラム」→「Oracle - Oracle_Home」→「Oracle BPEL Process Manager」→「BPEL Control」を選択する方法もあります。
BPELプロセスをOracle BPEL Process Managerにデプロイした後、Oracle JDeveloperに戻ることなくセンサーおよびセンサー・アクションの定義を参照できます。Oracle BPEL Controlで「BPELプロセス」タブをクリックし、センサー定義を参照するプロセスを選択します。「センサー」リンクをクリックします。図17-10のようなページが表示されます。
コンソールでは、BpelReportsSchemaセンサー・アクションが定義されているセンサーを監視できます。Oracle BPEL Controlで「インスタンス」タブをクリックし、プロセス実行の結果として作成されたセンサー・データを参照するプロセス・インスタンスを選択します。 図17-11のようなページが表示されます。
注意: Oracle BPEL Controlに表示されるのは、データベース・センサー・アクションに関連するセンサーのみです。JMSキュー、JMSトピックまたはカスタム・センサー・アクションに関連するセンサーは、表示されません。 |
Oracle Business Activity Monitoring(BAM)は、企業内のビジネス・サービスおよびプロセスの監視、キー・パフォーマンス・インジケータ(KPI)の相関、およびビジネス環境変化時のビジネス・プロセス変更または修正アクション実行を可能にします。Oracle BAMを使用することで、リアルタイムで操作可能なダッシュボードをビルドし、Webでのアプリケーションの監視および警告が可能になります。このテクノロジを使用して、ビジネス・サービスおよびプロセスを監視する、対話的なリアルタイム・ダッシュボードおよび予防アラートをビルドします。
Oracle BPEL Process Managerでセンサー・アクションを作成し、センサー・データをOracle BAM Serverのデータ・オブジェクトとしてパブリッシュできます。センサー・アクションを作成するときには、監視するOracle BPEL Process Manager変数またはアクティビティ・センサー、およびセンサー・データをパブリッシュするOracle BAM Serverのデータ・オブジェクトを選択できます。Oracle BAM Serverは、データ・オブジェクトをパブリッシュし、情報をWSDLファイルに記録します。Basic HTTP認証を使用して、これらのファイルへのアクセスを可能にしています。
この項の内容は次のとおりです。
これらの手順は、Oracle BAMがインストールおよび構成済であることを想定しています。
注意: 現在、BPELプロジェクトごとに単一のOracle BAM Serverのみがサポートされています。 |
使用可能なデータ・オブジェクトを参照するには、Oracle BAM Serverへの接続を作成する必要があります。この接続情報は、デプロイ時に自動的に使用されます。
Oracle JDeveloperの「表示」メイン・メニューから「接続ナビゲータ」を選択します。
「BAMサーバー」を右クリックします。
「新規BAMサーバー接続」を選択します。
「ようこそ」ページの「次へ」をクリックします。
サーバーへの接続の名前を入力します。
「次へ」をクリックします。
Oracle BAM Serverホストに関する、次の接続情報を入力します。
フィールド | 説明 |
---|---|
ホスト名 | Oracle BAM Serverがインストールされているホストの名前を入力します。組織のセキュリティ・ポリシーによっては、完全修飾ホスト名の入力が必要になります。 |
ポート番号 | ポート番号を入力するか、またはデフォルト値80をそのまま使用します。 |
ユーザー名 | Windowsドメインのユーザー名を入力します。Oracle BAM Serverは、Windowsドメインを認証に使用します。 |
パスワード | ドメイン・ユーザー名のパスワードを入力します。 |
ドメイン名 | Oracle BAM Serverホストが配置されているドメインの名前を入力します。このフィールドには大/小文字区別があります。大/小文字を正しく使用して名前を入力しなければ、認証失敗エラーが返されます。 |
secure HTTPプロトコルの使用 | Oracle BAM Serverへの接続にsecure HTTP(HTTP/S)を使用する場合は、このチェック・ボックスを選択します。選択しない場合は、HTTPが使用されます。 |
「次へ」をクリックします。
「接続のテスト」をクリックして、接続をテストします。接続が成功している場合は、次のメッセージが表示されます。
Success.
「終了」をクリックします。
Oracle JDeveloperでは、次のプロパティ名が予約されています。これらのプロパティ名は、作成したOracle BAM Server接続に対する値を定義します。
bamserver.hostname
bamserver.protocol
bamserver.username
bamserver.password
bamserver.port
bamserver.domain
これらのプロパティ名は、「デプロイメント・ディスクリプタのプロパティ」ウィンドウの「プリファレンス」タブに追加されます。BPELプロセスでBAMセンサー・アクションを使用しており、実行時に設計時と異なるOracle BAM Serverを使用する場合は、これらの値をBPELプロセスのデプロイ前に更新する必要があります。プロセスがデプロイ済の場合は、Oracle BPEL Controlでこれらの値を更新できます。
BAMセンサー・アクションの作成前に、次のいずれかのタイプのセンサーを作成する必要があります。
変数センサー。センサー・データをOracle BAM Serverのデータ・オブジェクトにマップするため、センサーごとに使用できる変数は1つのみです。変数にメッセージ・パートがある場合、メッセージ・パートは1つのみである必要があります。この変数はWSDL内でインラインで定義しないでください。サポートされているのはXSD要素定義のみです。
センサー変数を1つのみ含むアクティビティ・センサー。
センサー・アクションを作成するときには、監視するBPEL変数またはアクティビティ・センサー、およびセンサー・データをパブリッシュするOracle BAM Serverのデータ・オブジェクトを選択します。
Oracle JDeveloperの「構造」セクションで「センサー・アクション」を右クリックします。
「作成」→「BAMセンサー・アクション」を選択します。
「センサー・アクションの作成」ウィンドウが表示されます。センサー・データをOracle BAM Serverのデータ・オブジェクトにパブリッシュする、BAMセンサー・アクションを作成します。
次の詳細を入力します。
フィールド | 説明 |
---|---|
アクション名 | センサー・アクションに対する、識別可能な一意の名前を入力します。 |
センサーの選択 | 監視するBPELセンサーを選択します。これは、センサー・データをOracle BAM Serverのデータ・オブジェクトにマッピングするために、「センサーの作成」で作成したセンサーです。 |
データ・オブジェクト | 懐中電灯アイコンをクリックして「BAMデータ・オブジェクトの選択」ウィンドウを開き、センサー・データをパブリッシュするOracle BAM Serverのデータ・オブジェクトを選択します。データ・オブジェクトを選択するには、Oracle BAM Serverへの接続を作成しておく必要があります。 |
有効バッチ | Oracle BPEL Process ManagerランタイムのOracle BAMコンポーネントによって、デフォルトでキャッシュされるデータは、Oracle BAM Serverに定期的にフラッシュ(送信)されます。データの定期的な送信は、「バッチ・パラメータの設定」ウィンドウの、上限および下限パラメータの設定に基づいて決定されます。Oracle BAMコンポーネントは、キャッシュに上限および下限の範囲内のデータ・オブジェクトがある場合、バッチ・タイムアウト前にデータを送信するかどうかを決定します。このチェック・ボックスの選択を解除すると、バッチ送信が無効になります。
バッチ・パラメータを変更するには、「バッチ・パラメータの設定」をクリックします。詳細は、手順4を参照してください。 |
操作 | Oracle BAM Serverデータベースの行に対する操作として、「削除」、「更新」、「挿入」または「アップサート」を選択します。「アップサート」では、最初に、行の存在を確認後、存在する場合は更新が行われます。行が存在しない場合は、行が挿入されます。 |
使用可能なキー/選択したキー | 「削除」、「更新」または「アップサート」操作を選択した場合は、このセンサー・オブジェクトに一致する列を決定するためのキーとして使用する、Oracle BAMサーバー・データベースの列名を選択する必要があります。キーは1つの列の場合もあり、複数の列で構成されるコンポジット・キーの場合もあります。キーを選択して「>」ボタンをクリックします。すべてを選択するには、「>>」ボタンをクリックします。 |
マップ・ファイル | (「センサーの選択」リストで選択された)センサーと(「データ・オブジェクト」リストで選択された)Oracle BAM Serverデータ・オブジェクト間のマッピングを作成するファイル名を指定します。「マッピングの作成」アイコン(2番目のアイコン)または「マッピングの編集」アイコン(3番目のアイコン)をクリックしても、マッパー・ウィンドウを起動できます。 |
注意: 「センサー・アクションの作成」ウィンドウで、「マッピングの作成」、「マッピングの編集」または「OK」ボタンのクリック後に、BPELファイルを明示的に保存する必要があります。 |
カスタム・バッチ・パラメータ設定を指定する場合は、「バッチ・パラメータの設定」をクリックします。
「バッチ・パラメータの設定」ウィンドウが表示されます。
「デフォルト・バッチ・パラメータの使用」チェック・ボックスの選択を解除して、下のフィールドにカスタマイズした値を入力します。カスタマイズした値の入力後に、このチェック・ボックスを再選択すると、設定はデフォルト値に戻ります。
次の詳細を入力します。
フィールド | 説明 |
---|---|
バッチ・サイズ下限値 | デフォルト値の1000を使用するか、それよりも小さい値を指定します。このパラメータにより、キャッシュ内の最小行数が制御されます。このパラメータを使用すると、キュー・サイズがこの下限値以上になるか、タイムアウトが発生するまで、データはOracle BPEL Process Managerランタイム・キャッシュに残ります。 |
バッチ・サイズ上限値 | デフォルト値の5000を使用するか、それよりも大きい値を指定します。このパラメータにより、キャッシュ内の最大行数が制御されます。このパラメータを使用すると、上限値に達する前に、Oracle BPEL Process ManagerランタイムによりデータがOracle BAM Serverにフラッシュされます。 |
バッチ・タイムアウト(ミリ秒) | タイムアウトを分単位で指定します。デフォルト値は、50ミリ秒です。タイムアウトが発生すると、BPELランタイムによりキュー内のデータがOracle BAM Serverにフラッシュされます。 |
「OK」をクリックし、「バッチ・パラメータの設定」ウィンドウと「センサー・アクションの作成」ウィンドウを閉じます。
Oracle BPEL Process Managerのセンサー・フレームワークには、BPELインスタンスの処理によって生成されたセンサー値を、Oracle BPEL Process Managerのデハイドレーション・ストアに保存されたリレーショナル・スキーマに永続化する機能があります。このデータは、Oracle BPEL Controlにプロセス・インスタンスのセンサー値を表示する際に使用されます。
データを使用する任意のアプリケーションからセンサー値へのSQLアクセスを実行できるように、一連のパブリック・ビューが公開されます。
データベース・パブリッシャは、データベースで事前定義されたリレーショナル・スキーマにセンサー・データを永続化します。次のパブリック・ビューをクライアント(Oracle Warehouse、OracleAS Portalなど)から使用して、センサー値をSQLで問合せできます。
注意: 表17-1から表17-5の「索引付きまたは一意」列には、一意索引名と属性の順序が含まれます。たとえば、U1,2は、U1という一意索引の2番目の属性であることを示します。PKは、主キーを示します。 |
このビューは、Oracle BPEL Process Managerのすべてのプロセス・インスタンスの概要を提供します。
表17-1 BPEL_PROCESS_INSTANCESビュー
属性名 | SQL型 | 属性サイズ | 索引付きまたは一意 | NULL可 | コメント |
---|---|---|---|---|---|
INSTANCE_KEY
|
NUMBER
|
-- | PK | × | 一意のインスタンスID |
BPEL_PROCESS_NAME
|
NVARCHAR2
|
100 | -- | × | BPELプロセスの名前 |
BPEL_PROCESS_REVISION
|
VARCHAR2
|
50 | -- | × | BPELプロセスのリビジョン |
DOMAIN_ID
|
VARCHAR2
|
50 | -- | × | Oracle BPEL Process Managerドメインの名前 |
TITLE
|
VARCHAR2
|
50 | -- | ◎ | BPELプロセスのユーザー定義のタイトル |
STATE
|
NUMBER
|
-- | -- | ◎ | BPELプロセス・インスタンスの状態 |
STATE_TEXT
|
VARCHAR2
|
-- | -- | ◎ | 状態属性のテキスト表現 |
PRIORITY
|
NUMBER
|
-- | -- | ◎ | BPELプロセス・インスタンスのユーザー定義の優先度 |
STATUS
|
VARCHAR2
|
100 | -- | ◎ | BPELプロセスのユーザー定義のステータス |
STAGE
|
VARCHAR2
|
100 | -- | ◎ | BPELプロセスのユーザー定義のステージ・プロパティ |
CONVERSATION_ID
|
VARCHAR2
|
100 | -- | ◎ | BPELプロセスのユーザー定義の対話ID |
CREATION_DATE
|
TIMESTAMP
|
-- | -- | × | プロセス・インスタンスの作成タイムスタンプ |
MODIFY_DATE
|
TIMESTAMP
|
-- | -- | ◎ | プロセス・インスタンスの変更タイムスタンプ |
TS_DATE
|
DATE
|
-- | -- | ◎ | modify_date の日付部分
|
TS_HOUR
|
NUMBER
|
-- | -- | ◎ | modify_date の時間部分
|
EVAL_TIME
|
NUMBER
|
-- | -- | ◎ | プロセス・インスタンスの評価時間(ミリ秒) |
SLA_COMPLETION_TIME
|
NUMBER
|
-- | -- | ◎ | SLA完了時間(ミリ秒単位)。これには、bpel.xml で設定できるオプション・プロパティの値が移入されます。次に例を示します。
<configurations> ... <property name="SLACompletionTime">POYT1.5S</property> |
SLA_SATISFIED
|
VARCHAR2
|
1 | -- | ◎ | Y は、SLA が満たされていることを示します(SLA_COMPLETION_TIME < EVAL_TIME )。
|
このビューには、監視しているBPELプロセスのすべてのアクティビティ・センサー値が含まれます。
表17-2 BPEL_ACTIVITY_SENSOR_VALUESビュー
属性名 | SQL型 | 属性サイズ | 索引付きまたは一意 | NULL可 | コメント |
---|---|---|---|---|---|
ID
|
NUMBER
|
-- | PK | × | 一意のID |
INSTANCE_KEY
|
NUMBER
|
-- | U1,1 | × | プロセス・インスタンスのID |
BPEL_PROCESS_NAME
|
NVARCHAR2
|
100 | -- | × | BPELプロセスの名前 |
BPEL_PROCESS_REVISION
|
VARCHAR2
|
50 | -- | × | BPELプロセスのリビジョン |
DOMAIN_ID
|
VARCHAR2
|
50 | -- | × | Oracle BPEL Process Managerドメインの名前 |
SENSOR_NAME
|
NVARCHAR2
|
100 | U1,2 | × | 起動されたセンサーの名前 |
SENSOR_TARGET
|
NVARCHAR2
|
256 | -- | × | 起動されたセンサーのターゲット |
ACTION_NAME
|
NVARCHAR2
|
100 | U1,3 | × | センサー・アクションの名前 |
ACTION_FILTER
|
NVARCHAR2
|
256 | -- | ◎ | アクションのフィルタ |
CREATION_DATE
|
TIMESTAMP
|
-- | -- | × | アクティビティ・センサー値の作成日時 |
MODIFY_DATE
|
TIMESTAMP
|
-- | -- | ◎ | 最終変更のタイムスタンプ |
TS_DATE
|
DATE
|
-- | -- | ◎ | modify_date の日付部分
|
TS_HOUR
|
NUMBER
|
-- | -- | ◎ | modify_date の時間部分
|
CRITERIA_SATISFIED
|
VARCHAR2
|
1 | -- | ◎ | NULL 、Y またはN
|
ACTIVITY_NAME
|
NVARCHAR2
|
100 | -- | × | BPELアクティビティの名前 |
ACTIVITY_TYPE
|
VARCHAR2
|
30 | -- | × | BPELアクティビティのタイプ |
ACTIVITY_STATE
|
VARCHAR2
|
30 | -- | ◎ | BPELアクティビティの状態 |
EVAL_POINT
|
VARCHAR2
|
20 | -- | × | アクティビティ・センサーの評価ポイント |
ERROR_MESSAGE
|
NVARCHAR2
|
2000 | -- | ◎ | エラー・メッセージ |
RETRY_COUNT
|
NUMBER
|
-- | -- | ◎ | アクティビティの再試行回数 |
EVAL_TIME
|
NUMBER
|
-- | -- | ◎ | アクティビティの評価時間(ミリ秒) |
このビューには、すべてのフォルト・センサー値が含まれます。
表17-3 BPEL_FAULT_SENSOR_VALUESビュー
属性名 | SQL型 | 属性サイズ | 索引付きまたは一意 | NULL可 | コメント |
---|---|---|---|---|---|
ID
|
NUMBER
|
-- | PK | × | 一意のID |
INSTANCE_KEY
|
NUMBER
|
-- | U1,1 | × | BPELプロセスID |
BPEL_PROCESS_NAME
|
NVARCHAR2
|
100 | -- | × | BPELプロセスの名前 |
BPEL_PROCESS_REVISION
|
VARCHAR2
|
50 | -- | × | BPELプロセスのリビジョン |
DOMAIN_ID
|
VARCHAR2
|
50 | -- | × | Oracle BPEL Process Managerドメインの名前 |
SENSOR_NAME
|
NVARCHAR2
|
100 | U1,2 | × | 起動されたセンサーの名前 |
SENSOR_TARGET
|
NVARCHAR2
|
256 | -- | × | 起動されたセンサーのターゲット |
ACTION_NAME
|
NVARCHAR2
|
100 | U1,3 | × | センサー・アクションの名前 |
ACTION_FILTER
|
NVARCHAR2
|
256 | -- | ◎ | アクションのフィルタ |
CREATION_DATE
|
TIMESTAMP
|
-- | -- | × | アクティビティ・センサー値の作成日時 |
MODIFY_DATE
|
TIMESTAMP
|
-- | -- | ◎ | 最終変更のタイムスタンプ |
TS_DATE
|
DATE
|
-- | -- | ◎ | modify_date の日付部分
|
TS_HOUR
|
NUMBER
|
-- | -- | ◎ | modify_date の時間部分
|
CRITERIA_SATISFIED
|
VARCHAR2
|
1 | -- | ◎ | NULL (アクション・フィルタの指定なし)、Y (アクション・フィルタが指定されており、評価がtrue)、N (それ以外)
|
ACTIVITY_NAME
|
NVARCHAR2
|
100 | -- | × | BPELアクティビティの名前 |
ACTIVITY_TYPE
|
VARCHAR2
|
30 | -- | × | BPELアクティビティのタイプ |
MESSAGE
|
CLOB
|
-- | -- | ◎ | フォルト・メッセージ |
このビューには、すべての変数センサー値が含まれます。
表17-4 BPEL_VARIABLE_SENSOR_VALUESビュー
属性名 | SQL型 | 属性サイズ | 索引付きまたは一意 | NULL可 | コメント |
---|---|---|---|---|---|
ID
|
NUMBER
|
-- | PK | × | 一意のID |
INSTANCE_KEY
|
NUMBER
|
-- | U1,1 | × | BPELプロセスID |
BPEL_PROCESS_NAME
|
NVARCHAR2
|
100 | -- | × | BPELプロセスの名前 |
BPEL_PROCESS_REVISION
|
VARCHAR2
|
50 | -- | × | BPELプロセスのリビジョン |
DOMAIN_ID
|
VARCHAR2
|
50 | -- | × | Oracle BPEL Process Managerドメインの名前 |
SENSOR_NAME
|
NVARCHAR2
|
100 | U1,2 | × | 起動されたセンサーの名前 |
SENSOR_TARGET
|
NVARCHAR2
|
256 | -- | × | センサーのターゲット |
ACTION_NAME
|
NVARCHAR2
|
100 | U1,3 | × | アクションの名前 |
ACTION_FILTER
|
NVARCHAR2
|
256 | -- | ◎ | アクションのフィルタ |
ACTIVITY_SENSOR
|
NUMBER
|
-- | -- | ◎ | 対応するアクティビティ・センサー値のID |
CREATION_DATE
|
TIMESTAMP
|
-- | -- | × | 作成日時 |
TS_DATE
|
DATE
|
-- | -- | × | creation_date の日付部分
|
TS_HOUR
|
NUMBER
|
-- | -- | × | creation_date の時間部分
|
VARIABLE_NAME
|
NVARCHAR2
|
256 | -- | × | BPEL変数の名前 |
EVAL_POINT
|
VARCHAR2
|
30 | -- | ◎ | 対応するアクティビティ・センサーの評価ポイント |
CRITERIA_SATISFIED
|
VARCHAR2
|
1 | -- | ◎ | NULL 、Y またはN
|
TARGET
|
NVARCHAR2
|
256 | -- | -- | -- |
UPDATER_NAME
|
NVARCHAR2
|
100 | -- | × | 変数を更新したアクティビティまたはイベントの名前 |
UPDATER_TYPE
|
NVARCHAR2
|
100 | -- | × | BPELアクティビティまたはイベントのタイプ |
SCHEMA_NAMESPACE
|
NVARCHAR2
|
256 | -- | ◎ | 変数センサー値のネームスペース |
SCHEMA_DATATYPE
|
NVARCHAR2
|
256 | -- | ◎ | 変数センサー値のデータ型 |
VALUE_TYPE
|
SMALLINT
|
-- | -- | × | 変数の値の型(java.sql.Types の値に対応)
|
VARCHAR2_VALUE
|
NVARCHAR2
|
2000 | -- | ◎ | 文字列形式の変数の値 |
このビューには、BPMサービスから返されるすべてのエラーの概要が含まれます。
表17-5 BPMERRORSビュー
属性名 | SQL型 | 属性サイズ | 索引付きまたは一意 | NULL可 | コメント |
---|---|---|---|---|---|
ID
|
NUMBER
|
-- | PK | × | 一意のID |
BPEL_PROCESS_NAME
|
NVARCHAR2
|
100 | U1,1 | × | BPELプロセスの名前 |
BPEL_PROCESS_REVISION
|
VARCHAR2
|
50 | U1,2 | × | BPELプロセスのリビジョン |
DOMAIN_ID
|
VARCHAR2
|
50 | U1,3 | × | Oracle BPEL Process Managerドメインの名前 |
CREATION_DATE
|
TIMESTAMP
|
-- | -- | × | アクティビティ・センサー値の作成日時 |
TS_DATE
|
DATE
|
-- | -- | × | creation_date の日付部分
|
TS_HOUR
|
NUMBER
|
-- | -- | × | creation_date の時間部分
|
ERROR_CODE
|
NUMBER
|
-- | -- | × | エラー・コード |
EXCEPTION_TYPE | NUMBER
|
-- | -- | × | エラーのタイプ |
EXCEPTION_SEVERITY | NUMBER
|
-- | -- | × | エラーの重大度 |
EXCEPTION_NAME | NVARCHAR2
|
200 | -- | × | エラーの名前 |
EXCEPTION_DESCRIPTION | NVARCHAR2
|
2000 | -- | ◎ | エラーの短い説明 |
EXCEPTION_FIX | NVARCHAR2
|
2000 | -- | ◎ | エラーを修正する方法の説明 |
EXCEPTION_CONTEXT | VARCHAR2
|
4000 | -- | ◎ | エラーのコンテキスト |
COMPONENT
|
NUMBER
|
-- | -- | × | エラーの原因となったBPMコンポーネント |
THREAD_ID
|
VARCHAR2
|
200 | -- | × | エラーが発生したJavaスレッドの名前 |
STACKTRACE
|
CLOB
|
-- | -- | × | Javaスタック・トレース |
この項では、Oracle JDeveloperにインポート可能なセンサー・アクション・スキーマのサンプルを示します。このスキーマは、カスタム・データ・パブリッシャにも関連します。
<?xml version="1.0" encoding="utf-8"?> <!-- This schema contains the sensor definition. Sensors monitor data and execute callbacks appropriately. --> <xsd:schema blockDefault="#all" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/bpel/sensor" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://xmlns.oracle.com/bpel/sensor"> <xsd:simpleType name="tSensorActionPublishType"> <xsd:annotation> <xsd:documentation> This enumeration lists the possibe publishing types for probes. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="BpelReportsSchema"/> <xsd:enumeration value="JMSQueue"/> <xsd:enumeration value="JMSTopic"/> <xsd:enumeration value="Custom"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="tSensorActionProperty"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="name" use="required" type="xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <!-- Attributes of a sensor action --> <xsd:attributeGroup name="tSensorActionAttributes"> <xsd:attribute name="name" type="xsd:string" use="optional"/> <xsd:attribute name="enabled" type="xsd:boolean" use="optional" default="true"/> <xsd:attribute name="filter" type="xsd:string"/> <xsd:attribute name="publishName" type="xsd:string" use="required"/> <xsd:attribute name="publishType" type="tns:tSensorActionPublishType" use="required"/> <!-- the name of the JMS Queue/Topic or custom java API, ignored for other publishTypes --> <xsd:attribute name="publishTarget" type="xsd:string" use="optional"/> </xsd:attributeGroup> <!-- The sensor action type. A sensor action consists: + unique name + effective date + expiration date - Optional. If not defined, the probe is active indefinitely. + filter (to potentially suppress data publishing even if a sensor marks it as interesting). - Optional. If not defined, no filter is used. + publishName A name of a publisher + publishType What to do with the sensor data? + publishTarget Name of a JMS Queue/Topic or custom publisher. + potentially many sensors. --> <xsd:complexType name="tSensorAction"> <xsd:sequence> <xsd:element name="sensorName" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> <xsd:element name="property" minOccurs="0" maxOccurs="unbounded" type="tns:tSensorActionProperty"/> </xsd:sequence> <xsd:attributeGroup ref="tns:tSensorActionAttributes"/> </xsd:complexType> <!-- define a listing of sensor actions in a single document. It might be a good idea to have one sensor action list per business process. --> <xsd:complexType name="tSensorActionList"> <xsd:sequence> <xsd:element name="action" type="tns:tSensorAction" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="tSensorKind"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="fault"/> <xsd:enumeration value="variable"/> <xsd:enumeration value="activity"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="tActivityConfig"> <xsd:annotation> <xsd:documentation> The configuration part of an activity sensor comprises of a mandatory 'evalTime' attribute and an optional list of variable configurations </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="tns:tSensorConfig"> <xsd:sequence> <xsd:element name="variable" type="tns:tActivityVariableConfig" maxOccurs="unbounded" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="evalTime" type="xsd:string" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tAdapterConfig"> <xsd:annotation> <xsd:documentation> The configuration part of a adapter activity extends the activty configuration with additional attributes for adapters </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="tns:tActivityConfig"> <xsd:attribute name="headerVariable" use="required" type="xsd:string"/> <xsd:attribute name="partnerLink" use="required" type="xsd:string"/> <xsd:attribute name="portType" use="required" type="xsd:string"/> <xsd:attribute name="operation" use="required" type="xsd:string"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tVariableConfig"> <xsd:complexContent> <xsd:extension base="tns:tSensorConfig"> <xsd:attribute name="outputDataType" use="required" type="xsd:string"/> <xsd:attribute name="outputNamespace" use="required" type="xsd:string"/> <xsd:attribute name="queryName" use="optional" type="xsd:string"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tActivityVariableConfig"> <xsd:complexContent> <xsd:extension base="tns:tVariableConfig"> <xsd:attribute name="target" type="xsd:string" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tFaultConfig"> <xsd:complexContent> <xsd:extension base="tns:tSensorConfig"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tNotificationSvcConfig"> <xsd:complexContent> <xsd:extension base="tns:tActivityConfig"> <xsd:attribute name="inputVariable" use="required" type="xsd:string"/> <xsd:attribute name="outputVariable" use="required" type="xsd:string"/> <xsd:attribute name="operation" use="required" type="xsd:string"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tSensorConfig"> <xsd:sequence> <xsd:element name="action" type="tns:tInlineSensorAction" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="tInlineSensorAction"> <xsd:complexContent> <xsd:restriction base="tns:tSensorAction"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tSensor"> <xsd:sequence> <xsd:element name="activityConfig" type="tns:tActivityConfig" minOccurs="0"/> <xsd:element name="adapterConfig" type="tns:tAdapterConfig" minOccurs="0"/> <xsd:element name="faultConfig" type="tns:tFaultConfig" minOccurs="0"/> <xsd:element name="notificationConfig" type="tns:tNotificationSvcConfig" minOccurs="0"/> <xsd:element name="variableConfig" type="tns:tVariableConfig" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="sensorName" use="required" type="xsd:string"/> <xsd:attribute name="kind" use="required" type="tns:tSensorKind"/> <xsd:attribute name="classname" use="required" type="xsd:string"/> <xsd:attribute name="target" use="required" type="xsd:string"/> </xsd:complexType> <xsd:complexType name="tSensorList"> <xsd:sequence> <xsd:element name="sensor" type="tns:tSensor" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="tRouterData"> <xsd:sequence> <xsd:element name="header" type="tns:tHeaderInfo"/> <xsd:element name="payload" type="tns:tSensorData"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="tHeaderInfo"> <xsd:sequence> <xsd:element name="processName" type="xsd:string"/> <xsd:element name="processRevision" type="xsd:string"/> <xsd:element name="domain" type="xsd:string"/> <xsd:element name="instanceId" type="xsd:integer"/> <xsd:element name="midTierInstance" type="xsd:string"/> <xsd:element name="timestamp" type="xsd:dateTime"/> <xsd:element name="sensor" type="tns:tSensor"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="tSensorData"> <xsd:sequence> <xsd:element name="activityData" type="tns:tActivityData" minOccurs="0"/> <xsd:element name="faultData" type="tns:tFaultData" minOccurs="0"/> <xsd:element name="adapterData" minOccurs="0" type="tns:tAdapterData"/> <xsd:element name="variableData" type="tns:tVariableData" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="notificationData" type="tns:tNotificationData" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="tFaultData"> <xsd:sequence> <xsd:element name="activityName" type="xsd:string"/> <xsd:element name="activityType" type="xsd:string"/> <xsd:element name="data" type="xsd:anyType" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="tActivityData"> <xsd:sequence> <xsd:element name="activityType" type="xsd:string"/> <xsd:element name="evalPoint" type="xsd:string"/> <xsd:element name="errorMessage" nillable="true" minOccurs="0" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <!-- xml type that will be provided to sensors for variable Datas. Note the any element represents variable data. --> <xsd:complexType name="tVariableData"> <xsd:sequence> <xsd:element name="target" type="xsd:string"/> <xsd:element name="queryName" type="xsd:string"/> <xsd:element name="updaterName" type="xsd:string" minOccurs="1"/> <xsd:element name="updaterType" type="xsd:string" minOccurs="1"/> <xsd:element name="data" type="xsd:anyType"/> <xsd:element name="dataType" type="xsd:integer"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="tNotificationData"> <xsd:complexContent> <xsd:extension base="tns:tActivityData"> <xsd:sequence> <xsd:element name="messageID" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="fromAddress" type="xsd:string" minOccurs="0"/> <xsd:element name="toAddress" type="xsd:string" minOccurs="0"/> <xsd:element name="deliveryChannel" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tAdapterData"> <xsd:complexContent> <xsd:extension base="tns:tActivityData"> <xsd:sequence> <xsd:element name="endpoint" type="xsd:string"/> <xsd:element name="direction" type="xsd:string"/> <xsd:element name="adapterType" type="xsd:string"/> <xsd:element name="priority" type="xsd:string" minOccurs="0"/> <xsd:element name="messageSize" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- The header of the document contains some metadata. --> <xsd:complexType name="tSensorActionHeader"> <xsd:sequence> <xsd:element name="processName" type="xsd:string"/> <xsd:element name="processVersion" type="xsd:string"/> <xsd:element name="processID" type="xsd:long"/> <xsd:element name="midTierInstance" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="actionName" use="required" type="xsd:string"/> </xsd:complexType> <!-- Sensor Action data is presented in the form of a header and potentially many data elements depending on how many sensors associated to the sensor action marked the data as interesting. --> <xsd:complexType name="tSensorActionData"> <xsd:sequence> <xsd:element name="header" type="tns:tHeaderInfo"/> <xsd:element name="payload" type="tns:tSensorData" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <!-- <xsd:simpleType name="tActivityEvalPoint"> <xsd:restriction> <xsd:enumeration value="start"/> <xsd:enumeration value="complete"/> <xsd:enumeration value="fault"/> <xsd:enumeration value="compensate"/> <xsd:enumeration value="retry"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="tNotificationAction"> <xsd:restriction> <xsd:enumeration value="creation"/> <xsd:enumeration value="statusUpdate"/> </xsd:restriction> </xsd:simpleType> --> <!-- The process sensor value header comprises of a timestamp where the sensor was triggered and the sensor metadata --> <xsd:complexType name="tProcessSensorValueHeader"> <xsd:sequence> <xsd:element name="timestamp" type="xsd:dateTime"/> <xsd:element ref="tns:sensor"/> </xsd:sequence> </xsd:complexType> <!-- Extend tActivityData to include more elements --> <xsd:complexType name="tProcessActivityData"> <xsd:complexContent> <xsd:extension base="tns:tActivityData"> <xsd:sequence> <xsd:element name="creationDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/> <xsd:element name="modifyDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/> <xsd:element name="evalTime" type="xsd:long" minOccurs="0" maxOccurs="1"/> <xsd:element name="retryCount" type="xsd:int" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- Extend tVariableData to include more elements --> <xsd:complexType name="tProcessVariableData"> <xsd:complexContent> <xsd:extension base="tns:tVariableData"> <xsd:sequence> <xsd:element name="creationDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/> <xsd:element name="modifyDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- Extend tFaultData to include more elements --> <xsd:complexType name="tProcessFaultData"> <xsd:complexContent> <xsd:extension base="tns:tFaultData"> <xsd:sequence> <xsd:element name="creationDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/> <xsd:element name="modifyDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- Extend tAdapterData to include more elements --> <xsd:complexType name="tProcessAdapterData"> <xsd:complexContent> <xsd:extension base="tns:tAdapterData"> <xsd:sequence> <xsd:element name="creationDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/> <xsd:element name="modifyDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- Extend tNotificationData to include more elements --> <xsd:complexType name="tProcessNotificationData"> <xsd:complexContent> <xsd:extension base="tns:tNotificationData"> <xsd:sequence> <xsd:element name="creationDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/> <xsd:element name="modifyDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- Copy of tSensorData type with some modified types. --> <xsd:complexType name="tProcessSensorData"> <xsd:sequence> <xsd:element name="activityData" type="tns:tProcessActivityData" minOccurs="0"/> <xsd:element name="faultData" type="tns:tProcessFaultData" minOccurs="0"/> <xsd:element name="adapterData" minOccurs="0" type="tns:tProcessAdapterData"/> <xsd:element name="variableData" type="tns:tProcessVariableData" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="notificationData" type="tns:tProcessNotificationData" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <!-- A single process sensor value comprises of the sensor value metadata (sensor and timestamp) and the payload (the value) of the sensor --> <xsd:complexType name="tProcessSensorValue"> <xsd:sequence> <xsd:element name="header" type="tns:tProcessSensorValueHeader"/> <xsd:element name="payload" type="tns:tProcessSensorData"/> </xsd:sequence> </xsd:complexType> <!-- Process instance header. --> <xsd:complexType name="tProcessInstanceInfo"> <xsd:sequence> <xsd:element name="processName" type="xsd:string"/> <xsd:element name="processRevision" type="xsd:string"/> <xsd:element name="domain" type="xsd:string"/> <xsd:element name="instanceId" type="xsd:integer"/> </xsd:sequence> </xsd:complexType> <!-- The list of sensor values comprises of a process header describing the BPEL process with name, cube instance id etc. and a list of sensor values comprising of sensor metadata information and sensor values. --> <xsd:complexType name="tProcessSensorValueList"> <xsd:sequence> <xsd:element name="process" type="tns:tProcessInstanceInfo" minOccurs="1" maxOccurs="1"/> <xsd:element name="sensorValue" type="tns:tProcessSensorValue" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <!-- The sensor list is the root element of the sensor.xml document in the bpel process suitcase and is used to define sensors. --> <xsd:element name="sensors" type="tns:tSensorList"/> <!-- A sensor is used to monitor a particular aspect of a bpel process --> <xsd:element name="sensor" type="tns:tSensor"/> <!-- The actions element is the root element of the sensorAction.xml document in the bpel process suitcase and is used to define sensor actions. Sensor actions define how to publish data captured by sensors --> <xsd:element name="actions" type="tns:tSensorActionList"/> <!-- actionData elements are produced by the sensor framework and sent to the appropriate data publishers when sensors 'fire' --> <xsd:element name="actionData" type="tns:tSensorActionData"/> <!-- This element is used when the client API is used to query sensor values stored in the default reports schema --> <xsd:element name="sensorValues" type="tns:tProcessSensorValueList"/> </xsd:schema>