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

前
 
次
 

D センサー・パブリック・ビューとセンサー・アクションXSDの理解

この付録では、利用可能なセンサー・パブリック・ビュー、およびOracle BPEL Designerにインポート可能なセンサー・アクションXSDファイルについて説明します。

項目は次のとおりです。

詳細は、第18章「Oracle BPEL Process Managerセンサーの使用」を参照してください。

D.1 センサー・パブリック・ビューとセンサー・アクションXSDファイルの概要

データを使用する任意のアプリケーションからセンサー値へのSQLアクセスを実行できるように、一連のパブリック・ビューが公開されています。また、Oracle BPELデザイナへのインポート用に、サンプルのセンサー・アクション・スキーマが用意されています。

D.2 センサー・パブリック・ビュー

Oracle BPEL Process Managerのセンサー・フレームワークには、BPELインスタンスの処理によって生成されたセンサー値を、Oracle BPEL Process Managerのデハイドレーション・ストアに保存されたリレーショナル・スキーマに保持する機能があります。データは、Oracle Enterprise Manager Fusion Middleware Controlコンソールでプロセス・インスタンスのセンサー値を表示するために使用されます。

D.2.1 BPMスキーマ

データベース・パブリッシャは、データベースで事前定義されたリレーショナル・スキーマにセンサー・データを保持します。次のパブリック・ビューをクライアント(Oracle Warehouse、ポータルなど)から使用して、センサー値をSQLで問い合せることができます。


注意:

表D-1から表D-4で、「索引付きまたは一意」列には、一意の索引名と属性の順序が表示されます。たとえば「U1,2」は、その属性が「U1」という名前の一意の索引の2番目であることを示します。「PK」は主キーであることを表します。

D.2.1.1 BPEL_PROCESS_INSTANCES

表D-1には、Oracle BPEL Process Managerのすべてのプロセス・インスタンスの概要が含まれます。

表D-1 BPEL_PROCESS_INSTANCESビュー

属性名 SQL型 属性サイズ 索引付きまたは一意 NULL可 コメント

INSTANCE_KEY

NUMBER

--

PK

×

一意のインスタンスID

APPLICATION_NAME

VARCHAR2

500

--

×

ユーザー定義のアプリケーション名

COMPOSITE_NAME

VARCHAR2

500

--

×

ユーザー定義のコンポジット名

REVISION

VARCHAR2

50

--

×

ユーザー定義のリビジョン番号

LABEL

VARCHAR2

500

--

×

ユーザー定義のラベル

COMPONENT_NAME

VARCHAR2

500

--

×

ユーザー定義のコンポーネント名

TITLE

NVARCHAR2

200

--

BPELプロセスのユーザー定義タイトル

STATE

NUMBER

--

--

BPELプロセス・インスタンスの状態

STATE_TEXT

VARCHAR2

21

--

状態属性のテキスト表現

PRIORITY

NUMBER

--

--

BPELプロセス・インスタンスのユーザー定義の優先度

STATUS

NVARCHAR2

200

--

BPELプロセスのユーザー定義のステータス

STAGE

VARCHAR2

100

--

BPELプロセスのユーザー定義のステージ・プロパティ

CONVERSATION_ID

VARCHAR2

256

--

BPELプロセスのユーザー定義の対話ID

CREATION_DATE

TIMESTAMP

6

--

×

プロセス・インスタンス作成のタイムスタンプ

MODIFY_DATE

TIMESTAMP

6

--

プロセス・インスタンス変更のタイムスタンプ

TS_DATE

DATE

--

--

modify_dateの日付部分

TS_HOUR

NUMBER

--

--

modify_dateの時間部分

EVAL_TIME

NUMBER

--

--

プロセス・インスタンスの評価時間(ミリ秒)


D.2.1.2 BPEL_ACTIVITY_SENSOR_VALUES

表D-2には、監視しているBPELプロセスのすべてのアクティビティ・センサー値が含まれます。

表D-2 BPEL_ACTIVITY_SENSOR_VALUESビュー

属性名 SQL型 属性サイズ 索引付きまたは一意 NULL可 コメント

SENSOR_NAME

NVARCHAR2

200

U1,2

×

起動されたセンサーの名前

SENSOR_TARGET

NVARCHAR2

512

--

×

起動されたセンサーのターゲット

ACTION_NAME

NVARCHAR2

200

U1,3

×

センサー・アクションの名前

ACTION_FILTER

NVARCHAR2

512

--

アクションのフィルタ

CREATION_DATE

TIMESTAMP

6

--

×

アクティビティ・センサー値の作成日時

MODIFY_DATE

TIMESTAMP

6

--

最終変更のタイムスタンプ

TS_DATE

DATE

--

--

modify_dateの日付部分

TS_HOUR

NUMBER

--

--

modify_dateの時間部分

CRITERIA_SATISFIED

VARCHAR2

1

--

NULLYまたはN

ACTIVITY_NAME

NVARCHAR2

200

--

×

BPELアクティビティの名前

ACTIVITY_TYPE

VARCHAR2

30

--

×

BPELアクティビティのタイプ

ACTIVITY_STATE

VARCHAR2

30

--

BPELアクティビティの状態

EVAL_POINT

VARCHAR2

30

--

×

アクティビティ・センサーの評価ポイント

ERROR_MESSAGE

NCLOB

--

--

エラー・メッセージ

RETRY_COUNT

NUMBER

--

--

アクティビティの再試行回数

EVAL_TIME

NUMBER

--

--

アクティビティの評価時間(ミリ秒)

ID

NUMBER

--

PK

×

一意のID

INSTANCE_KEY

NUMBER

--

U1,1

×

BPELプロセスID

APPLICATION_NAME

VARCHAR2

500

--

×

ユーザー定義のアプリケーション名

COMPOSITE_NAME

VARCHAR2

500

--

×

ユーザー定義のコンポジット名

REVISION

VARCHAR2

50

--

×

ユーザー定義のリビジョン番号

LABEL

VARCHAR2

500

--

×

ユーザー定義のラベル

COMPONENT_NAME

VARCHAR2

500

--

×

ユーザー定義のコンポーネント名


D.2.1.3 BPEL_FAULT_SENSOR_VALUES

表D-3には、すべてのフォルト・センサー値が含まれます。

表D-3 BPEL_FAULT_SENSOR_VALUESビュー

属性名 SQL型 属性サイズ 索引付きまたは一意 NULL可 コメント

ID

NUMBER

--

PK

×

一意のID

INSTANCE_KEY

NUMBER

--

U1,1

×

BPELプロセスID

APPLICATION_NAME

VARCHAR2

500

--

×

ユーザー定義のアプリケーション名

COMPOSITE_NAME

VARCHAR2

500

--

×

ユーザー定義のコンポジット名

REVISION

VARCHAR2

50

--

×

ユーザー定義のリビジョン番号

LABEL

VARCHAR2

500

--

×

ユーザー定義のラベル

COMPONENT_NAME

VARCHAR2

500

--

×

ユーザー定義のコンポーネント名

SENSOR_NAME

NVARCHAR2

200

U1,2

×

起動されたセンサーの名前

SENSOR_TARGET

NVARCHAR2

512

--

×

起動されたセンサーのターゲット

ACTION_NAME

NVARCHAR2

200

U1,3

×

センサー・アクションの名前

ACTION_FILTER

NVARCHAR2

512

--

アクションのフィルタ

CREATION_DATE

TIMESTAMP

6

--

×

アクティビティ・センサー値の作成日時

MODIFY_DATE

TIMESTAMP

6

--

最終変更のタイムスタンプ

TS_DATE

DATE

--

--

modify_dateの日付部分

TS_HOUR

NUMBER

--

--

modify_dateの時間部分

CRITERIA_SATISFIED

VARCHAR2

1

--

NULL(アクション・フィルタの指定なし)、Y(アクション・フィルタが指定されており、評価がtrue)、N(それ以外)

ACTIVITY_NAME

NVARCHAR2

200

--

×

BPELアクティビティの名前

ACTIVITY_TYPE

VARCHAR2

30

--

×

BPELアクティビティのタイプ

MESSAGE

CLOB

--

--

フォルト・メッセージ


D.2.1.4 BPEL_VARIABLE_SENSOR_VALUES

表D-4には、すべての変数センサー値が含まれます。

表D-4 BPEL_VARIABLE_SENSOR_VALUESビュー

属性名 SQL型 属性サイズ 索引付きまたは一意 NULL可 コメント

ID

NUMBER

--

PK

×

一意のID

INSTANCE_KEY

NUMBER

--

U1,1

×

BPELプロセスID

APPLICATION_NAME

VARCHAR2

500

--

×

ユーザー定義のアプリケーション名

COMPOSITE_NAME

VARCHAR2

500

--

×

ユーザー定義のコンポジット名

REVISION

VARCHAR2

50

--

×

ユーザー定義のリビジョン番号

LABEL

VARCHAR2

500

--

×

ユーザー定義のラベル

COMPONENT_NAME

VARCHAR2

500

--

×

ユーザー定義のコンポーネント名

SENSOR_NAME

NVARCHAR2

200

U1,2

×

起動されたセンサーの名前

SENSOR_TARGET

NVARCHAR2

512

--

×

センサーのターゲット

ACTION_NAME

NVARCHAR2

200

U1,3

×

アクションの名前

ACTION_FILTER

NVARCHAR2

512

--

アクションのフィルタ

ACTIVITY_SENSOR

NUMBER

--

--

対応するアクティビティ・センサー値のID

CREATION_DATE

TIMESTAMP

6

--

×

作成日時

TS_DATE

DATE

--

--

×

creation_dateの日付部分

TS_HOUR

NUMBER

--

--

×

creation_dateの時間部分

VARIABLE_NAME

NVARCHAR2

512

--

×

BPEL変数の名前

EVAL_POINT

VARCHAR2

30

--

対応するアクティビティ・センサーの評価ポイント

CRITERIA_SATISFIED

VARCHAR2

1

--

NULLYまたはN

TARGET

NVARCHAR2

512

--

--

--

UPDATER_NAME

NVARCHAR2

200

--

×

変数を更新したアクティビティまたはイベントの名前

UPDATER_TYPE

NVARCHAR2

200

--

×

BPELアクティビティまたはイベントのタイプ

SCHEMA_NAMESPACE

NVARCHAR2

512

--

変数センサー値のネームスペース

SCHEMA_DATATYPE

NVARCHAR2

512

--

変数センサー値のデータ型

VALUE_TYPE

NUMBER

--

--

×

変数の値の型(java.sql.Typesの値に対応)

VARCHAR2_VALUE

NVARCHAR2

4000

--

文字列形式の変数の値

NUMBER_VALUE

NUMBER

--

--


DATE_VALUE

TIMESTAMP

6

--

ユーザー定義の日付

DATE_VALUE_TZ

VARCHAR2

10

--

ユーザー定義のタイムゾーン

BLOB_VALUE

BLOB

--

--


CLOB_VALUE

CLOB

--

--



D.3 センサー・アクションXSDファイル

例D-1に、Oracle BPELデザイナにインポート可能なセンサー・アクション・スキーマのサンプルを示します。このスキーマは、カスタム・データ・パブリッシャにも関連します。

例D-1 センサー・アクション・スキーマのサンプル

<?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 is 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>