プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Stream Analyticsスキーマ・リファレンス
12c リリース (12.2.1.2.0)
E82663-01
目次へ移動
目次

前
前へ
次
次へ

2 アプリケーション・アセンブリ・スキーマ

アプリケーション・アセンブリ・スキーマは、EPNコンポーネントを宣言するアセンブリ・ファイルの背後にあります。この章は、spring-wlevs-v12_1_3_0.xsdスキーマの要素のリファレンスです。

この章の内容は次のとおりです。

2.1 アプリケーション・アセンブリ要素の階層

Oracle Stream Analyticsには、多数のアプリケーション・アセンブリ要素が用意されています。それらの要素をアプリケーションのEPNアセンブリ・ファイル内で使用して、イベント・タイプを登録し、イベント処理ネットワークのコンポーネントを宣言し、各コンポーネントがどのように相互にリンクしているかを指定します。EPNアセンブリ・ファイルは、標準のSpringコンテキスト・ファイルの拡張です。

Oracle Stream Analyticsアプリケーション・アセンブリ要素は、次の階層で構成されます。

beans
    Standard Spring and OSGi elements such as bean, osgi-service, and so on.
    wlevs:event-type-repository
        wlevs:event-type
            wlevs:class
            wlevs:metadata
            wlevs:properties
            wlevs:property
    wlevs:adapter
        wlevs:listener
        wlevs:instance-property
        wlevs:property
    wlevs:processor
        wlevs:listener
        wlevs:source
        wlevs:function
        wlevs:instance-property
        wlevs:property
        wlevs:cache-source
        wlevs:table-source
    wlevs:channel
        wlevs:listener
        wlevs:source
        wlevs:instance-property
        wlevs:property
        wlevs:application-timestamped
            wlevs:expression
    wlevs:event-bean
        wlevs:listener
        wlevs:instance-property
        wlevs:property
    wlevs:factory
    wlevs:cache
        wlevs:caching-system
        wlevs:cache-loader
        wlevs:cache-store
        wlevs:cache-listener
    wlevs:caching-system
        wlevs:instance-property
        wlevs:property
    wlevs:table

2.2 wlevs:adapter

wlevs:adapter要素を使用して、Springアプリケーション・コンテキストに対してアダプタ・コンポーネントを宣言します。

子要素

wlevs:adapterアプリケーション・アセンブリ要素は、次の子要素をサポートします。

属性

表2-1 wlevs:adapterアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

id

このコンポーネントの一意の識別子。

この識別子は、このアダプタのXML構成ファイル内の<name>要素に対応している必要があります(その要素が存在する場合)。

String

はい

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ

listeners

このコンポーネントをリスニングするコンポーネントを指定します。

この属性は、コンポーネントを宣言した要素のid属性の値に設定します。

String

いいえ

provider

アダプタ・サービス・プロバイダを指定します。通常、この属性の値はOSGiに登録されたアダプタ・ファクトリ・サービスへの参照です。

csvgenまたはloadgenユーティリティを使用してデータ・フィードをシミュレートする場合は、ハードコードされたcsvgenまたはloadgenの値をそれぞれ使用します。たとえば、次のようになります。

provider="csvgen"

組込みのHTTPパブリッシュ/サブスクライブ・アダプタのいずれかを使用する場合は、ハード・コード化された次の値を指定します。

  • パブリッシュに使用する組込みのpub-subアダプタの場合は、ハードコードされたhttppub値を次のように指定します。

    provider="httppub"
    
  • サブスクライブに使用する組込みのpub-subアダプタの場合は、ハードコードされたhttpsub値を次のように指定します。

    provider="httpsub"

JMSアダプタを使用する場合は、次のいずれかのハード・コード化された値を指定します。

  • インバウンドJMSアダプタの場合は、jms-inbound値を次のように指定します。

    provider="jms-inbound"
  • アウトバウンドJMSアダプタの場合は、jms-outbound値を次のように指定します。

    provider="jms-outbound"

providerまたはclass属性のどちらかを指定する必要がありますが、両方は指定できません。両方を指定すると例外が発生します。

String

いいえ

class

このアダプタを実装するJavaクラスを指定します。

providerまたはclass属性のどちらかを指定する必要がありますが、両方は指定できません。両方を指定すると例外が発生します。

String

いいえ

onevent-method

ライフサイクルのonEventメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle Stream Analyticsは、アダプタがイベントを受信したときに、このメソッドを呼び出します。

String

いいえ

init-method

ライフサイクルのinitメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle Stream Analyticsは、指定されたすべてのインスタンス・プロパティを設定した後で、このメソッドを呼び出します。このメソッドを使用すると、アダプタ・インスタンスは、すべてのBeanプロパティが設定済であるときにのみ可能になる初期化を実行し、構成が正しくない場合は例外をスローできます。

String

いいえ

activate-method

ライフサイクルのactivateメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle Stream Analyticsは、アダプタの動的構成の完了後に、このメソッドを呼び出します。このメソッドを使用すると、アダプタ・インスタンスは、すべての動的Beanプロパティが設定済であり、かつEPNが接続済であるときに限って可能な初期化を実行できます。

String

いいえ

suspend-method

ライフサイクルのsuspendメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle Stream Analyticsは、アプリケーションが一時停止されたときに、このメソッドを呼び出します。

String

いいえ

destroy-method

ライフサイクルのdestroyメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle Stream Analyticsは、アプリケーションが停止されたときに、このメソッドを呼び出します。

String

いいえ

次の例は、EPNアセンブリ・ファイルでのwlevs:adapter要素の使用方法を示しています。この例では、アダプタの一意の識別子はhelloworldAdapterです。プロバイダはOSGiサービスです。EPNアセンブリ・ファイルにも登録されており、参照はhellomsgsです。アダプタにはmessageという静的なプロパティがあります。これは、アダプタJavaファイルにsetMessageメソッドがあることを示します。

<wlevs:adapter id="helloworldAdapter" provider="hellomsgs">
    <wlevs:instance-property name="message" 
                             value="HelloWorld - the current time is:"/>
</wlevs:adapter>

2.3 wlevs:application-timestamped

wlevs:channelはアプリケーション・タイムスタンプであるかを指定するためにこの要素を使用します(アプリケーションはいずれかの時間ドメインで各イベントに対してタイムスタンプを割り当てます)。

それ以外の場合、wlevs:channelはシステム・タイムスタンプになります(Oracle Stream Analyticsサーバーは、System.nanoTimeを使用して、各イベントにタイムスタンプを割り当てます)。

子要素

wlevs:application-timestampedアプリケーション・アセンブリ要素は、次の子要素をサポートします。

  • wlevs:expression : イベント処理のためにアプリケーション・タイムスタンプとして使用する式を指定します。

属性

表2-2 wlevs:application-timestampedアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

is-total-order

trueの場合、パブリッシュされたアプリケーション時間が常に前回使用された値よりも大きくなることを示します。

有効な値はtrueまたはfalseです。デフォルト: false

Boolean

いいえ

is-silent-relation

trueの場合、リレーションがサイレントであることを示します。サイレント・リレーションでは、変更が頻繁には発行されません。この設定が適用されるのは、wlevs:channel要素の属性is-relationtrueの場合のみです。

有効な値は、trueおよびfalseです。デフォルトは、falseです。

Boolean

いいえ

次の例は、暗黙的にアプリケーション・タイムスタンプのチャネルを指定するために、EPNアセンブリ・ファイルでwlevs:application-timestamped要素を使用する方法について説明します。この例では、アプリケーションはイベント・タイムスタンプを内部的に処理します。

<wlevs:channel id="fxMarketAmerOut" >
    <wlevs:application-timestamped>
    </wlevs:application-timestamped>
</wlevs:channel>

次の例は、明示的にアプリケーション・タイムスタンプのチャネルを指定するために、wlevs:expression要素を指定することにより、EPNアセンブリ・ファイルでwlevs:application-timestamped要素を使用する方法について説明します。この例では、wlevs:expression要素は各イベントにタイムスタンプを割り当てるために使用する算術式を定義します。

<wlevs:channel id="fxMarketAmerOut" >
    <wlevs:application-timestamped>
        <wlevs:expression>mytime+10</wlevs:expression>
    </wlevs:application-timestamped>
</wlevs:channel>

次の例では、is-silent-relationを追加し、is-relation属性をtrueに設定します。これらの設定は、チャネルで変更をあまり頻繁には発行しないことを意味します。

<wlevs:channel id="AppTimeStampedChannel"/>
   <wlevs:application-timestamped is-silent-relation="true" is-relation="true">
   <wlevs:expression>mytime+10</wlevs:expression>
</wlevs:application-timestamped>

2.4 wlevs:cache

この要素を使用して、Springアプリケーション・コンテキストに対してキャッシュを宣言します。

子要素

wlevs:cacheアプリケーション・アセンブリ要素は、次の子要素をサポートします。

  • wlevs:caching-system: このキャッシュが属するキャッシング・システムを指定します。

    注意:

    この子要素は、キャッシング・システムを宣言するために使用するwlevs:caching-system要素とは異なります。wlevs:cache要素の子要素は、refという単一の属性を持ちます。この属性は、宣言されたキャッシング・システムのid属性を参照します

  • wlevs:cache-loader: このキャッシュのキャッシュ・ローダーを指定します。

  • wlevs:cache-store: このキャッシュのキャッシュ・ストアを指定します。

  • wlevs:cache-listener: このキャッシュのリスナー、またはキャッシュのイベントの送信先コンポーネントを指定します。

属性

表2-3 wlevs:cacheアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

id

このコンポーネントの一意の識別子。

この識別子は、このキャッシュのXML構成ファイル内の<name>要素に対応している必要があります。

String

はい

name

このキャッシュの代替名を指定します。指定しない場合、キャッシュの名前はid属性と同じになります。

String

いいえ

key-properties

プロパティ名のカンマ区切りリストを指定します。これらのプロパティがまとまって、キャッシュ内のオブジェクトの一意キー値、またはキャッシュ・キーを形成します。キャッシュ・キーは単一のプロパティまたは複数のプロパティで構成されます。キャッシュをイベント処理ネットワーク内のリスナーとして構成すると、Oracle Stream Analyticsは、一意キー値をキーとして使用してキャッシュに到達するイベントを挿入します。

key-class属性を使用してキー・クラスを指定した場合、この属性はオプションです。key-propertieskey-classのどちらも指定しない場合、Oracle Stream Analyticsは、イベント・オブジェクトをキャッシュに挿入するときにイベント・オブジェクトそのものをキーと値の両方として使用します。

String

いいえ。

key-class

キーが複合キーである場合に、キャッシュのキーに使用するJavaクラスの名前を指定します。

key-properties属性を指定しない場合、key-classのすべてのプロパティはキー・プロパティであると想定されます。key-propertieskey-classのどちらも指定しない場合、Oracle Stream Analyticsは、イベント・オブジェクトをキャッシュに挿入するときにイベント・オブジェクトそのものをキーと値の両方として使用します

String

いいえ。

value-type

キャッシュに含まれる値の型を指定します。イベント・タイプ・リポジトリの有効な型の名前である必要があります。

この属性は、Oracle CQL問合せでキャッシュが参照される場合に必要です。これは、問合せプロセッサはキャッシュ内のイベントのタイプを意識している必要があるからです。

String

いいえ。

caching-system

このキャッシュが含まれているキャッシング・システムを指定します。

この属性の値は、適切なwlevs:caching-system要素のid属性に対応します。

String

はい。

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:cache要素の使用方法を示しています。キャッシュの一意の識別子はcache-idで、代替名はalternative-cache-nameです。キャッシュが属しているキャッシング・システムのidcaching-system-idです。キャッシュにはリスナーがあり、キャッシュはそのリスナーにイベントを送信します。キャッシュにリスニングするコンポーネントのidtradeListenerです。

<wlevs:cache id="cache-id" name="alternative-cache-name">
        <wlevs:caching-system ref="caching-system-id"/>
        <wlevs:cache-listener ref="tradeListener" />
</wlevs:cache>

2.5 wlevs:cache-listener

この要素を使用して、リスニング・コンポーネントに対するイベントのソースとしてキャッシュを指定します。リスニング・コンポーネントはcom.bea.cache.jcache.CacheListenerインタフェースを実装する必要があります。

この要素は常にwlevs:cacheの子です。

属性

表2-4 wlevs:cache-listenerアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

ref

このキャッシュをリスニングするコンポーネントを指定します。

この属性は、リスニング・コンポーネントのid属性の値に設定します。リスニング・コンポーネントは、アダプタまたはSpring Beanです。

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:cache-listener要素の使用方法を示しています。cache-listener-idのSpring Beanはキャッシュからのイベントをリスニングし、このコンポーネントを実装するクラスwlevs.example.MyCacheListenerは、com.bea.jcache.CacheListenerインタフェースを実装する必要があります。wlevs.example.MyCacheListenerクラスは自分でプログラムする必要があります。

    <wlevs:caching-system id="caching-system-id"/>
    ...
    <wlevs:cache id="cache-id" name="alternative-cache-name">
        <wlevs:caching-system ref="caching-system-id"/>
        <wlevs:cache-listener ref="cache-listener-id" />
    </wlevs:cache>
    ...
    <bean id="cache-listener-id" class="wlevs.example.MyCacheListener"/>

2.6 wlevs:cache-loader

spring-wlevs-v12_1_3_0.xsdはデータをキャッシュにロードするオブジェクトを実装するSpring Beanを指定します。

この要素は常にwlevs:cacheの子です。

属性

表2-5 wlevs:cache-loaderアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

ref

データをキャッシュにロードするクラスを実装するSpring Beanを指定します。

この属性は、Spring Beanの id 属性の値に設定します。

Spring Beanはcom.bea.cache.jcache.CacheLoaderインタフェースを実装する必要があります。

String

はい。

次の例は、EPNアセンブリ・ファイルでのwlevs:cache-loader要素の使用方法を示しています。com.bea.cache.jcache.CacheLoaderインタフェースを実装するwlevs.example.MyCacheLoaderクラスによって実装されるcache-loader-id Spring Beanは、データをキャッシュにロードするBeanです。キャッシュは、wlevs:cache-loader子要素のref属性で参照することによって、このローダーを指定します。

    <wlevs:cache id="cache-id" name="alternative-cache-name">
        <wlevs:caching-system ref="caching-system-id"/>
        <wlevs:cache-loader ref="cache-loader-id" />
    </wlevs:cache>
    ...
   <bean id="cache-loader-id" class="wlevs.example.MyCacheLoader"/>

2.7 wlevs:cache-source

このプロセッサ・コンポーネントにデータを提供するキャッシュを指定します。プロセッサ・コンポーネントは、キャッシュを直接参照するOracle CQL問合せに関連付けられます。

wlevs:cache要素のvalue-type属性を使用して、キャッシュによって提供されるデータのイベント・タイプを宣言します。

この要素は、wlevs:processor要素のみの子です。

属性

表2-6 wlevs:cache-sourceアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

ref

プロセッサ・コンポーネントのデータのソースであるキャッシュを指定します。

この属性は、キャッシュのid属性の値に設定します。

String

はい。

次の例は、EPNアセンブリ・ファイルでのwlevs:cache-source要素の使用方法を示しています。この例では、プロセッサは従来とおりにstream-idから押し出されるデータを持ちます。ただし、プロセッサで実行するOracle CQL問合せは、cache-idキャッシュからデータを抽出することもできます。問合せプロセッサがFROM句のイベント・タイプとキャッシュによって提供されたイベント・タイプ(Companyなど)を照合するとき、プロセッサはそのイベント・タイプのインスタンスをキャッシュからプルします。

<wlevs:caching-system id="caching-system-id"/>
  ...
  <wlevs:cache id="cache-id" 
               name="alternative-cache-name"
               value-type="Company">
    <wlevs:caching-system ref="caching-system-id"/>
  </wlevs:cache>
  <wlevs:channel id="stream-id"/>
  <wlevs:processor id="processor-id">
    <wlevs:cache-source ref="cache-id">
    <wlevs:source ref="stream-id">
  </wlevs:processor>

2.8 wlevs:caching-system

アプリケーションで使用するキャッシング・システムを指定します。

子要素

wlevs:caching-systemアプリケーション・アセンブリ要素は、次の子要素をサポートします。

属性

表2-7 wlevs:caching-systemアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

id

このキャッシング・システムの一意の識別子を指定します。

この識別子は、このキャッシング・システムのXML構成ファイル内の<name>要素に対応している必要があります。

String

はい。

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

provider

Oracle Coherenceなどのサード・パーティの実装を使用する場合は、キャッシング・システムのプロバイダを指定します。

<wlevs:caching-system id="myCachingSystem" provider=coherence" />

通常、この属性は、サード・パーティ・キャッシング・システムのインスタンスを作成するファクトリ・クラスを指定する<factory> Spring要素のprovider-name属性に対応します。

providerclassのどちらの属性も指定しない場合、デフォルト値はローカルな単一JVMキャッシュ用のOracle Stream Analyticsネイティブ・キャッシングの実装になります。この実装では、インメモリー・ストアを使用します。

String

いいえ。

class

このキャッシング・システムを実装するJavaクラスを指定します。この属性を使用して、Oracle Stream Analyticsのネイティブ実装ではないサード・パーティの実装を指定します。

この属性を指定した場合、サード・パーティの実装コードは、Oracle Stream Analyticsアプリケーション・バンドル自体の内部に存在すると見なされます。この属性が参照するクラス・ファイルは、com.bea.wlevs.cache.api.CachingSystemインタフェースを実装する必要があります。

providerclassのどちらの属性も指定しない場合、デフォルト値はローカルな単一JVMキャッシュ用のOracle Stream Analyticsネイティブ・キャッシングの実装になります。この実装では、インメモリー・ストアを使用します。

String

いいえ

次の例は、EPNアセンブリ・ファイルでのwlevs:caching-system要素の最も簡単な使用方法を示しています。

  <wlevs:caching-system id="caching-system-id"/>

次の例は、ファクトリをプロバイダとして使用するサード・パーティの実装を指定する方法を示しています。この例では、the.factory.class.nameは、サード・パーティ・キャッシング・システムを作成するためのファクトリです。wlevs:caching-systemのプロバイダ属性は、アプリケーションのキャッシング・システムの実装としてこのファクトリを参照します。

  <wlevs:caching-system id ="caching-system-id" provider="caching-provider"/>
  <factory id="factory-id" provider-name="caching-provider">
     <class>the.factory.class.name</class>
  </factory>

2.9 wlevs:cache-store

キャッシュからバッキング・ストア(データベース内の表など)へのデータの書込みを処理するカスタム・ストアを実装するSpring Beanを指定します。

この要素は常にwlevs:cacheの子です。

属性

表2-8 wlevs:cache-storeアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

ref

カスタム・ストアを実装するSpring Beanを指定します。

この属性は、Spring Beanのid属性の値に設定します。

Spring Beanはcom.bea.cache.jcache.CacheStoreインタフェースを実装する必要があります。

String

はい。

次の例は、EPNアセンブリ・ファイルでのwlevs:cache-store要素の使用方法を示しています。この例では、com.bea.cache.jcache.CacheStoreインタフェースを実装するwlevs.example.MyCacheStoreクラスによって実装されるcache-store-id Spring Beanは、データベースなどのようなカスタム・ストアのBeanです。キャッシュは、wlevs:cache-store子要素のref属性で参照することによって、このストアを指定します。

    <wlevs:cache id="cache-id" name="alternative-cache-name">
        <wlevs:caching-system ref="caching-system-id"/>
        <wlevs:cache-store ref="cache-store-id" />
    </wlevs:cache>
    ...
   <bean id="cache-store-id" class="wlevs.example.MyCacheStore"/>

2.10 wlevs:channel

この要素を使用して、Springアプリケーション・コンテキストに対してチャネルを宣言します。

デフォルトでは、チャネルはイベントがシステム・タイムスタンプであることを想定します。アプリケーション・タイムスタンプのイベントを構成するには、wlevs:application-timestamped子要素を参照してください。

子要素

wlevs:channelアプリケーション・アセンブリ要素は、次の子要素をサポートします。

属性

表2-9 wlevs:channelアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

batching

イベントのバッチをイベント・チャネルで有効にするかどうかを指定します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

event-type

イベント・チャネルを通過できるイベントのタイプを指定します。

String

はい。

id

このコンポーネントの一意の識別子。

この識別子は、このチャネルのXML構成ファイル内の<name>要素に対応している必要があります(その要素が存在する場合)。

String

はい。

is-relation

イベント・チャネルをパススルーできるイベントの種類を指定します。streamsおよびrelationsの2種類のイベントがサポートされています。streamsは、追加専用です。Relationsは、挿入、削除および更新処理をサポートします。

この属性のデフォルト値はfalseです。

Boolean

いいえ。

listeners

このコンポーネントをリスニングするコンポーネントを指定します。複数のコンポーネントはカンマを使用して区切ります。

この属性は、リスニング・コンポーネントを定義する要素(wlevs:adapterwlevs:channelまたはwlevs:processor)のid属性に設定します。

String

いいえ。

max-size

このチャネルのFIFOバッファの最大サイズは、max-sizeイベント数と指定します。

max-size = 0の場合、チャネルはイベントを同期的にパススルーします。

max-size > 0の場合は、チャネルはリクエストされたサイズでイベントをバッファリングし、イベントを非同期で処理します。

max-threadsが0の場合、max-sizeは0です。

この属性のデフォルト値は1024です。

integer

いいえ。

max-threads

このチャネルのイベントを処理するために使用されるスレッドの最大数を指定します。

max-threads = 0の場合、チャネルはパススルーとして機能します。イベントの順序が維持されます。

max-threads > 0の場合、チャネルは従来のブロッキング・キューのように機能し、アップストリーム・コンポーネントがイベントのプロデューサ、ダウンストリーム・コンポーネントがイベントのコンシューマになります。キューのサイズはmax-sizeの構成によって定義されます。キューからイベントを消費するスレッドは、最大でmax-threadsの数までとなります。イベントの順序は確定できません。

max-threadsは、再デプロイすることなく0から正の整数に(つまり、パス・スルーから複数スレッドに)変更できます。しかし、max-threadsを正の整数から0に(つまり、複数スレッドからパス・スルーに)変更する場合は、アプリケーションを再デプロイする必要があります。

max-size属性が0の場合は、max-threadsの値の設定には影響がありません。

この属性のデフォルト値は1です。

integer

いいえ。

primary-key

リレーションの主キーを「,」または空白で区切ったイベント・プロパティ名のリストとして指定します。

String

いいえ。

provider

ストリーム・プロバイダを指定します。

有効な値は、次のとおりです。

  • oracle.channel

デフォルト値は、すぐに使用できるように用意されているストリーミング・プロバイダであるoracle.channelです。

String

いいえ。

source

チャネルのイベント・ソースとなるコンポーネントを指定します。

この属性は、ソース・コンポーネントを定義する要素(wlevs:adapterwlevs:channelまたはwlevs:processor)のid属性に設定します。

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:channel要素の使用方法を示しています。この例は、fxMarketAmerOutという一意の識別子を持つチャネル・サービスを宣言する方法を示しています。

<wlevs:channel id="fxMarketAmerOut" />

2.11 wlevs:class

この要素を使用して、イベント・タイプ実装として使用するJavaBeanクラスの完全修飾名を指定します。この要素は、wlevs:event-type要素の子である必要があります。

次の例は、EPNアセンブリ・ファイルでのwlevs:class要素の使用方法を示しています。

<wlevs:event-type-repository>
        <wlevs:event-type type-name="SimpleEvent">
            <wlevs:class>com.example.myapp.MyEventType</wlevs:class>
    </wlevs:event-type>
...
</wlevs:event-type-repository>

2.12 wlevs:event-bean

この要素を使用して、イベントBeanがイベント処理ネットワーク(EPN)の一部であることをSpringアプリケーション・コンテキストに対して宣言します。イベントBeanは、Oracle Stream Analyticsコンテナで管理されます。これは、Spring BeanがSpringフレームワークで管理されることに似ています。多くの点で、イベントBeanとSpring Beanは類似しており、EPNでどちらを使用するかは開発者の判断に任されています。Springへのレガシー統合にはSpring Beanを使用します。イベントBeanは、Oracle Stream Analyticsの追加機能をフル活用する場合に使用します。

たとえば、Oracle Stream Analyticsモニタリング・フレームワークを使用するとイベントBeanをモニターできます。また、構成フレームワーク・メタデータの注釈を利用したり、イベントBeanで渡されるイベントの記録や再生もできます。また、イベントBeanは、Oracle Stream Analytics APIインタフェースを実装するのではなく、EPNアセンブリ・ファイル宣言でメソッドを指定することで、Oracle Stream AnalyticsのBeanライフ・サイクルに加えることもできます。

子要素

wlevs:event-beanアプリケーション・アセンブリ要素は、次の子要素をサポートします。

属性

表2-10 wlevs:event-beanアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

id

このコンポーネントの一意の識別子。

この識別子は、このイベントBeanのXML構成ファイル内の<name>要素に対応している必要があります(その要素が存在する場合)。

String

はい。

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルトはfalseです。

Boolean

いいえ。

listeners

このコンポーネントをリスニングするコンポーネントを指定します。

この属性は、コンポーネントを宣言した要素のid属性の値に設定します。

String

いいえ。

class

このイベントBeanを実装するJavaクラスを指定します。どのようなOracle Stream Analyticsインタフェースを実装する場合にもBeanは必須ではありません。

providerまたはclass属性のどちらかを指定する必要がありますが、両方は指定できません。両方を指定すると例外が発生します。

provider

サービス・プロバイダを指定します。

この場合、この特定のプロバイダ名で登録されたEDEファクトリがアプリケーション内に存在する必要があります。

providerまたはclass属性のどちらかを指定する必要がありますが、両方は指定できません。両方を指定すると例外が発生します。

String

いいえ。

onevent-method

ライフサイクルのonEventメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle Stream Analyticsは、イベントBeanがイベントを受け取ったときに、このメソッドを呼び出します。

このライフ・サイクル属性を使用すると、イベントBeanの実装でOracle Stream Analyticsインタフェースを明示的に実装する必要はなくなります。

String

いいえ

init-method

ライフサイクルのinitメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle Stream Analyticsは、指定されたすべてのインスタンス・プロパティを設定した後で、このメソッドを呼び出します。このメソッドを使用すると、Beanインスタンスは、すべてのBeanプロパティが設定済であるときに限って可能な初期化を実行し、構成が正しくない場合は例外をスローできます。

このライフ・サイクル属性を使用すると、イベントBeanの実装でOracle Stream Analyticsインタフェースを明示的に実装する必要はなくなります。

String

いいえ

activate-method

ライフサイクルのactivateメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle Stream Analyticsは、Beanの動的構成の完了後に、このメソッドを呼び出します。このメソッドを使用すると、Beanインスタンスは、すべての動的Beanプロパティが設定済であり、かつEPNが接続済であるときに限って可能な初期化を実行できます。

このライフ・サイクル属性を使用すると、イベントBeanの実装でOracle Stream Analyticsインタフェースを明示的に実装する必要はなくなります。

String

いいえ

suspend-method

ライフサイクルのsuspendメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle Stream Analyticsは、アプリケーションが一時停止されたときに、このメソッドを呼び出します。

このライフ・サイクル属性を使用すると、イベントBeanの実装でOracle Stream Analyticsインタフェースを明示的に実装する必要はなくなります。

String

いいえ

destroy-method

ライフサイクルのdestroyメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle Stream Analyticsは、アプリケーションが停止されたときに、このメソッドを呼び出します。

このライフ・サイクル属性を使用すると、イベントBeanの実装でOracle Stream Analyticsインタフェースを明示的に実装する必要はなくなります。

String

いいえ

次の例は、EPNアセンブリ・ファイルでのwlevs:event-bean要素の使用方法を示しています。この例では、myBeanというイベントBeanがクラスcom.customer.SomeEventBeanを使用して実装されています。myProcessorというコンポーネントがmyBeanイベントBeanからイベントを受け取ります。

    <wlevs:event-bean id="myBean" class="com.customer.SomeEventBean" >
      <wlevs:listener ref="myProcessor" />
    </wlevs:event-bean>

2.13 wlevs:event-type

Oracle Stream Analyticsアプリケーションで使用するイベント・タイプの定義を指定します。アプリケーションのイベント・タイプを定義したら、定義したイベント・タイプをアダプタ・クラスおよびビジネス・クラスのPOJO内で、またOracle CQLルールで参照できます。

次の方法でイベント・タイプを定義できます。

  • イベント・タイプを表現するJavaBeanクラスを作成し、その完全修飾したクラス名を、wlevs:class子要素を使用して指定します。

  • wlevs:properties子要素を使用して、イベント・タイプのプロパティを宣言的に指定します。

wlevs:event-typeの子としてwlevs:classまたはwlevs:properties のどちらかを指定できますが、両方を同時に指定することはできません。

ベスト・プラクティスは、wlevs:class子要素を使用してイベント・タイプを定義することです。そうすることで、指定したJavaBeanクラスを再利用でき、イベント・タイプの形を正確に制御できます。

子要素

wlevs:event-typeアプリケーション・アセンブリ要素は、次の子要素をサポートします。

属性

表2-11 wlevs:event-typeアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

id

このイベント・タイプの一意の識別子を指定します。

この属性を指定しない場合は、Oracle Stream Analyticsによって自動的に識別子が生成されます。

String

いいえ。

type-name

このイベント・タイプの名前を指定します。

これは、アダプタ、ビジネスPOJO、またはOracle CQLルール内でイベント・タイプを参照するときに使用する名前です。

String

はい。

object-support

Javaオブジェクトを完全にサポートするかどうかを指定します。設定できる値はtruefalseおよびobject-relationalで、デフォルト値はobject-relationalです。

falseに設定すると、Javaプリミティブ・ラッパー(java.lang.Integerなど)およびjava.lang.Stringはプリミティブ・タイプとして処理されます。

trueに設定すると、Javaプリミティブ・ラッパーはクラスとして処理されます。

object-relationalに設定すると、Javaプリミティブ・ラッパーはストリームではなくリレーションとして処理されます。

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:event-type要素の使用方法を示しています。この例では、イベント・タイプの名前はSimpleEventで、その定義はwlevs:propertyによって決定されます。type属性の値はcom.bea.wlevs.ede.api.Typeクラスに適合する必要があります。

<wlevs:event-type-repository>
        <wlevs:event-type id="messagecounts" type-name="SimpleEvent">
            <wlevs:properties>
                <wlevs:property name="msg" type="char" />
                <wlevs:property name="count" type="long" />
                <wlevs:property name="time_stamp" type="timestamp" />
        </wlevs:properties>
    </wlevs:event-type>
...
</wlevs:event-type-repository>

2.14 wlevs:event-type-repository

この要素を使用して、複数のwlevs:event-type要素をまとめてグループ化します。各要素は、アプリケーション全体で使用するイベント・タイプを登録するために使用されます。

子要素

wlevs:event-type-repositoryアプリケーション・アセンブリ要素は、wlevs:event-type子要素をサポートします。

次の例は、EPNアセンブリ・ファイルでのwlevs:event-type-repository要素の使用方法を示しています。

この例では、wlevs:event-type-repository要素で単独のwlevs:event-type要素をグループ化し、HelloWorldEventという1つのイベント・タイプを宣言しています。詳細は、「wlevs:event-type」を参照してください。

<wlevs:event-type-repository>
    <wlevs:event-type type-name="HelloWorldEvent">
        <wlevs:class>
            com.bea.wlevs.event.example.helloworld.HelloWorldEvent
        </wlevs:class>
    </wlevs:event-type>
</wlevs:event-type-repository>

2.15 wlevs:expression

イベント処理のアプリケーション・タイムスタンプとして使用するwlevs:application-timestampedに算術式を指定するためにこの要素を使用します。詳細は、『Oracle CQL言語リファレンス』のApplication-Timestampedストリームに関する項を参照してください。

次の例は、明示的にアプリケーション・タイムスタンプのチャネルを指定するために、EPNアセンブリ・ファイルでのwlevs:expression要素を使用する方法について説明します。この例では、wlevs:expression要素は各イベントにタイムスタンプを割り当てるために使用する算術式を定義します。

<wlevs:channel id="fxMarketAmerOut" >
    <wlevs:application-timestamped>
        <wlevs:expression>mytime + 10</wlevs:expression>
    </wlevs:application-timestamped>
</wlevs:channel>

2.16 wlevs:factory

この要素を使用して、ファクトリ・クラスをサービスとして登録します。この要素を使用することによりアプリケーションのSpring-OSGiインタフェースへの依存を軽減します。このファクトリのJavaソースでcom.bea.wlevs.ede.api.Factoryインタフェースを実装する必要があります。

ファクトリ要素ではサービスのプロパティを指定できません。サービスのプロパティを指定する必要がある場合は、かわりにSpring- OSGi osgi:service要素を使用する必要があります。

属性

表2-12 wlevs:factoryアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

class

ファクトリを実装するJavaクラスを指定します。このクラスは、com.bea.wlevs.ede.api.Factoryインタフェースを実装する必要があります。

String

はい。

provider-name

このプロバイダの名前を指定します。後で、このファクトリを使用するコンポーネント内でこの名前を参照します。

String

はい。

次の例は、EPNアセンブリ・ファイルでのwlevs:factory要素の使用方法を示しています。この例では、com.customer.MyEventSourceFactoryによって実装されたファクトリは、myEventSourceFactoryというプロバイダ名になっています。

<wlevs:factory provider-name="myEventSourceFactory"
               class="com.customer.MyEventSourceFactory" />

2.17 wlevs:function

この要素を使用して、プロセッサ用のユーザー定義の関数を含むBeanを指定します。『Oracle CQL言語リファレンス』単一行関数に関する項および集計関数に関する項を参照してください。

この要素は常に、ユーザー定義の関数を実装するSpringbeanを指定する参照または子としてSpringの標準bean要素を持ちます。

Oracle CQLプロセッサ上の単一行関数については、exec-method属性を使用して、実装クラスに1つのメソッドを関数として指定します。この場合は、メソッドはパブリックであり、名前によって一意に識別できる必要があります。このメソッドはオーバーライドできません。function-name属性を使用して、exec-method名の別名を指定できます。Oracle CQL問合せでは、exec-method (名前またはfunction-name別名による)のみをコールします。

Oracle CQLプロセッサ上の集計関数については、Spring beancom.bea.wlevs.processorパッケージからの次のインタフェースを実装する必要があります。

  • AggregationFunctionFactory

  • AggregationFunction

集計関数については、Oracle CQLプロセッサに対してexec-method属性は適用できません。

属性

表2-13 wlevs:functionアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

exec-method

Oracle CQLプロセッサ上のユーザー定義の「単一行」関数について、この要素は、関数を実装するSpring beanのメソッド名を指定します。この場合は、メソッドはパブリックであり、一意の名前を持つ(つまり、メソッドをオーバーライドできない状態である)ことが必要です。

Oracle CQLプロセッサ上のユーザー定義集計関数については、この属性は適用できません。

String

いいえ。

function-name

Oracle CQLプロセッサ上のユーザー定義の単一行関数については、この属性を使用してexec-method名の別名を定義します。そうすると、Oracle CQL問合せでは、exec-nameのかわりにfunction-nameが使用できます。

Oracle CQLプロセッサ上のユーザー定義の集計関数については、この属性を使用して実装のSpring beanクラス名の別名を定義します。

デフォルト値はSpring Bean名です。

String

いいえ。

ref

関数を実装するSpringbeanを指定します。

この属性は、Springbeanid属性の値に設定します。

Spring bean要素をwlevs:function要素の子とするかわりに使用できます。

String

いいえ。

次の例は、Oracle CQLプロセッサでのwlevs:function要素およびその属性の使用方法を示しています。

例2-1 Oracle CQLプロセッサ用の単一行、ユーザー定義関数の実装

package com.bea.wlevs.example.function;

public class MyMod {
    public Object execute(int arg0, int arg1) {
        return new Integer(arg0 % arg1);
    }
}

例2-2 Oracle CQLプロセッサの単一行関数のアセンブリ・ファイルでの定義

<wlevs:processor id="testProcessor">
    <wlevs:listener ref="providerCache"/>
    <wlevs:listener ref="outputCache"/>
    <wlevs:cache-source ref="testCache"/>
    <wlevs:function function-name="mymod" exec-method="execute" />
        <bean class="com.bea.wlevs.example.function.MyMod"/>
    </wlevs:function>
</wlevs:processor>

例2-3 Oracle CQL問合せでの関数の呼出し

...
<view id="v1" schema="c1 c2 c3 c4"><![CDATA[ 
    select
        mymod(c1, 100), c2, c3, c4 
    from 
        S1
></view>
...
<query id="q1"><![CDATA[
    select * from v1 [partition by c1 rows 1] where c4 - c3 = 2.3 
></query>
...

例2-4 Oracle CQLプロセッサ用のユーザー定義集計関数の実装

package com.bea.wlevs.test.functions;
 
import com.bea.wlevs.processor.AggregationFunction;
import com.bea.wlevs.processor.AggregationFunctionFactory;
 
public class Variance implements AggregationFunctionFactory, AggregationFunction {
 
    private int count;
    private float sum;
    private float sumSquare;
 
    public Class<?>[] getArgumentTypes() {
        return new Class<?>[] {Integer.class};
    }
 
    public Class<?> getReturnType() {
        return Float.class;
    }
 
    public AggregationFunction newAggregationFunction() {
        return new Variance();
    }
 
    public void releaseAggregationFunction(AggregationFunction function) {
    }
 
    public Object handleMinus(Object[] params) {
        if (params != null && params.length == 1) {
            Integer param = (Integer) params[0];
            count--;
            sum -= param;
            sumSquare -= (param * param);
        }
        
        if (count == 0) {
            return null;
        } else {
            return getVariance();
        }
    }
 
    public Object handlePlus(Object[] params) {
        if (params != null && params.length == 1) {
            Integer param = (Integer) params[0];
            count++;
            sum += param;
            sumSquare += (param * param);
        }
        
        if (count == 0) {
            return null;
        } else {
            return getVariance();
        }
    }
 
    public Float getVariance() {
        float avg = sum / (float) count;
        float avgSqr = avg * avg;
        float var = sumSquare / (float)count - avgSqr;
        return var;
    }
 
    public void initialize() {
        count = 0;
        sum = 0.0F;
        sumSquare = 0.0F;
    }
 
}

例2-5 Oracle CQLプロセッサの集計関数のアセンブリ・ファイルでの呼出し

  <wlevs:processor id="testProcessor">
     <wlevs:listener ref="providerCache"/>
     <wlevs:listener ref="outputCache"/>
     <wlevs:cache-source ref="testCache"/>
     <wlevs:function function-name="var">
       <bean class="com.bea.wlevs.test.functions.Variance"/>
     </wlevs:function>
   </wlevs:processor>

例2-6 Oracle CQL問合せでの集計関数の呼出し

...
<query id="uda6"><![CDATA[ 
    select var(c2) from S4[range 3] 
></query>
...

例2-7 アセンブリ・ファイルでのBean要素のネスト

  <wlevs:processor id="testProcessor">
     <wlevs:listener ref="providerCache"/>
     <wlevs:listener ref="outputCache"/>
     <wlevs:cache-source ref="testCache"/>
     <wlevs:function function-name="testfunction">
       <bean class="com.bea.wlevs.example.cache.function.TestFunction"/>
     </wlevs:function>
   </wlevs:processor>

例2-8 関数の外部で定義されたBean要素のアセンブリ・ファイルでの参照

 <wlevs:processor id="testProcessor">
     <wlevs:listener ref="providerCache"/>
     <wlevs:listener ref="outputCache"/>
     <wlevs:cache-source ref="testCache"/>
     <wlevs:function function-name="testfunction" ref="testFunctionID" />
   </wlevs:processor>
  ...
  <bean id="testFunctionID" class="com.bea.wlevs.example.cache.function.TestFunction"/>

2.18 wlevs:instance-property

この要素は子要素であるコンポーネントのcreateステージ・インスタンスに適用するプロパティを指定します。これにより、ユーザー定義のステージ・プロパティの宣言的な構成が可能になります。

たとえば、wlevs:event-beanwlevs:instance-propertyを指定すると、Oracle Stream Analyticsは、クラスをインスタンス化するcom.bea.wlevs.spring.EventBeanFactoryBeanではなく、実装するJavaクラスの対応するsetterメソッドを検索します。ファクトリのプロパティを指定するには、wlevs:propertyを使用します。

この要素は、wlevs:adapterwlevs:event-beanwlevs:processorwlevs:channelまたはwlevs:caching-systemの子としてのみ使用されます。

wlevs:instance-property要素は、Spring propertyType型で定義されます。Springデータ型の詳細は、http://www.springframework.org/schema/beans/spring-beans-2.0.xsdを参照してください。

子要素

次のいずれかのSpring標準要素をwlevs:instance-property要素の子要素として指定できます。

  • meta

  • bean

  • ref

  • idref

  • value

  • null

  • list

  • set

  • map

  • props

属性

表2-14 wlevs:instance-propertyアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

name

JavaBeanのネーミング・ルールに従ってプロパティの名前を指定します。

String

はい。

ref

ネストされた<ref bean='...'/>要素へのショートカットです。

String

いいえ。

value

ネストされた<value>...</value>要素へのショートカットです。

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:instance-property要素の使用方法を示しています。

<wlevs:event-bean id="pubsubCounterBeanRemote"
    class="com.oracle.cep.example.httppubsub.RemoteEventCounter">
    <wlevs:listener ref="pubsubRemote" />
    <wlevs:instance-property name="expectedEvents" value="4000" />
</wlevs:event-bean>

この例では、イベントBean com.oracle.cep.example.httppubsub.RemoteEventCounterクラスから該当するsetterメソッドが提供されます。

    private int expectedEvents;
 
    public void setExpectedEvents(String expectedEvents) {
        this.expectedEvents = new Integer(expectedEvents).intValue();
    }

instance-propertyStringタイプです。これは必要に応じてsetterメソッドで変換します。この例では、Stringint値に変換されます。

setterメソッドの名前はJavaBeanネーミング・ルールに準拠している必要があります。この例では、setter名はsetExpectedEventsであり、これはJavaBeanのルールにより、wlevs:instance-property要素のname属性値expectedEventsに対応しています。name属性の値がobjのときに、setterメソッドの名前がsetObjectになっていると、Oracle Stream Analyticsから「無効なプロパティ」例外がスローされます。その場合、setter名はsetObjになります。

2.19 wlevs:listener

この要素を子とするコンポーネントにリスニングするコンポーネントを指定します。他の任意のコンポーネントのインスタンスをリスナーにできます。また、特定のwlevs:listenerコンポーネント内にコンポーネントの定義をネストして、親にリスニングするコンポーネントを指定できます。

警告:

ネストされた定義は、動的構成または動的モニターには使用できません。

この要素は、常にwlevs:adapterwlevs:processorwlevs:channelまたはwlevs:caching-systemの子です。

属性

表2-15 wlevs:listenerアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

ref

親コンポーネントをリスニングするコンポーネントを指定します。

この属性は、リスナー・コンポーネントのid属性の値に設定します。

リスナーをネストする場合は、この属性を指定しないでください。

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:listener要素の使用方法を示しています。この例では、hellworldOutstreamコンポーネントはhelloworldProcessorコンポーネントにリスニングします。このEPNアセンブリ・ファイルには、一意の識別子がhelloworldOutstreamであるwlevs:adapterwlevs:channelまたはwlevs:processor要素の宣言も含まれていると想定しています。

    <wlevs:processor id="helloworldProcessor">
        <wlevs:listener ref="helloworldOutstream"/>
    </wlevs:processor>

2.20 wlevs:metadata

フィールドをSpring entry要素のグループとしてリストし、イベント・タイプの定義を指定します。この方法でイベント・タイプを定義すると、Oracle Stream Analyticsが自動的にJavaクラスを作成します。

entry要素のkey属性を使用してフィールドの名前を指定し、value属性を使用して、フィールドのデータ型を表現するJavaクラスを指定します。

この要素はwlevs:event-type要素の子としてのみ使用されます。

wlevs:metadata要素は、Spring mapType型として定義されます。このSpringデータ型の詳細は、http://www.springframework.org/schema/beans/spring-beans-2.0.xsdを参照してください。

子要素

wlevs:metadata要素は、1つ以上の標準Spring entry子要素を含むことができます。詳細は、http://www.springframework.org/schema/beans/spring-beans-2.0.xsdを参照してください。

属性

表2-16 wlevs:metadataアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

key-type

ネストされたentry要素のJavaデータ型を表現するデフォルトの完全修飾したクラス名です。

この属性は、entry要素をネストした場合にのみ使用できます。

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:metadata要素の使用方法を示しています。この例では、wlevs:metadata要素は4つの標準Springentry要素をグループ化しています。これらの4つの要素は、ForeignExchangeEventの4つのフィールド、つまりsymbolpricefromRateおよびtoRateを表現します。これらのフィールドのデータ型は、それぞれ、java.lang.Stringjava.lang.Doublejava.lang.Stringおよびjava.lang.Stringです。

<wlevs:event-type type-name="ForeignExchangeEvent">
    <wlevs:metadata>
        <entry key="symbol" value="java.lang.String"/>
        <entry key="price" value="java.lang.Double"/>
        <entry key="fromRate" value="java.lang.String"/>
        <entry key="toRate" value="java.lang.String"/>
    </wlevs:metadata>
    ...
</wlevs:event-type>

2.21 wlevs:processor

この要素を使用して、Springアプリケーション・コンテキストに対してプロセッサを宣言します。

子要素

wlevs:processor Spring要素は、次の子要素をサポートします。

属性

表2-17 wlevs:processorアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

id

このコンポーネントの一意の識別子。

この識別子は、このプロセッサ用のXML構成ファイル内の<name>要素に対応している必要があります。そうすることで、ネットワークのどのプロセッサ・コンポーネントに対してどのOracle CQLルールを実行するかをOracle Stream Analyticsに指定します。

String

はい。

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

listeners

このコンポーネントをリスニングするコンポーネントを指定します。

この属性は、コンポーネントを宣言した要素のid属性の値に設定します。

String

いいえ。

provider

Oracle CQLなど、プロセッサの言語プロバイダを指定します。

有効な値はcqlです。

デフォルト値はcqlです。

String

いいえ。

queryURL

このプロセッサのOracle CQLルール定義ファイルを示すURLを指定します。

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:processor要素の使用方法を示しています。この例は、spreaderというIDを持つプロセッサを宣言する方法を示しています。つまり、このプロセッサのOracle CQLルールを含むプロセッサ構成ファイル内で、name要素に値spreaderが含まれている必要があります。そうすることで、この特定のプロセッサに対してどのOracle CQLルールを登録する必要があるかを、Oracle Stream Analyticsに指定します。

<wlevs:processor id="spreader" />

2.22 wlevs:properties

イベント・タイプのプロパティのリストを定義します。この要素は、タプルまたはjava.util.Mapに基づくタイプなどのイベント・タイプを宣言的に定義するときに使用します。JavaBeanクラスから作成されたイベント・タイプの場合、クラスでアクセッサ・メソッドによってプロパティを定義できます。

子要素

wlevs:propertiesアプリケーション・アセンブリ要素は、wlevs:property子要素をサポートしています。

属性

表2-18 wlevs:propertiesアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

type

このイベント・タイプの作成元のタイプを指定します。使用できる値はタプルとマップで、デフォルト値はタプルです。

この属性の値がmapの場合、Oracle Stream Analyticsはイベント・タイプをjava.util.Mapインスタンスとしてインスタンス化します。それ以外の場合、タイプはタプルとしてインスタンス化されます。

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:properties要素の使用方法を示しています。この例では、イベント・タイプの名前はSimpleEventで、その定義はwlevs:propertyによって決定されます。type属性の値はcom.bea.wlevs.ede.api.Typeクラスに適合する必要があります。

<wlevs:event-type-repository>
        <wlevs:event-type type-name="SimpleEvent">
            <wlevs:properties>
                <wlevs:property name="msg" type="char" />
                <wlevs:property name="count" type="long" />
                <wlevs:property name="time_stamp" type="timestamp" />
        </wlevs:properties>
    </wlevs:event-type>
...
</wlevs:event-type-repository>

2.23 wlevs:property

タプルまたはjava.util.Mapに基づくイベント・タイプなど、宣言的に作成するイベント・タイプのプロパティを定義します。このwlevs:property要素は、wlevs:properties要素の子として使用します。

この要素は、Spring beanプロパティ要素の拡張であるwlevs:property要素とは異なることに注意してください。この要素は常にwlevs:properties要素の子として使用する必要があります。

属性

表2-19 wlevs:propertyアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

name

イベント・プロパティの名前。

String

はい。

type

イベント・プロパティのタイプ。

このイベント・タイプがタプルとして定義されている場合、タイプの属性値はcom.bea.wlevs.ede.api.Typeによって定義されているいずれかのOCEPネイティブ・タイプである必要があります。bigintbooleanbytechardoublefloatintintervalobjectsqlxmltimestampunknownxmltypeなどが含まれます。

このイベント・タイプがマップとして定義されている場合、タイプの属性値は、イベント・タイプを定義するアプリケーションのクラス・ローダーで使用できるJavaクラスの完全修飾名です。Javaクラス名として使用する文字列は、Class.forName()と同じ規則に準拠する必要があります。さらに、Javaプリミティブも使用できます(intfloatなど)。

最後に、Javaクラス名に文字「[]」を追加して配列を指定できます。

String

はい。

length

プロパティが配列タイプの場合、これによって配列の長さが指定されます。タイプが配列ではない場合、および長さが指定されている場合、これは無視されます。

.

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:property要素の使用方法を示しています。この例では、イベント・タイプの名前はSimpleEventで、その定義はwlevs:propertyによって決定されます。type属性の値はcom.bea.wlevs.ede.api.Typeクラスに適合する必要があります。

<wlevs:event-type-repository>
        <wlevs:event-type type-name="SimpleEvent">
            <wlevs:properties>
                <wlevs:property name="msg" type="char" />
                <wlevs:property name="count" type="long" />
                <wlevs:property name="time_stamp" type="timestamp" />
        </wlevs:properties>
    </wlevs:event-type>
...
</wlevs:event-type-repository>

2.24 wlevs:property

イベント・タイプに適用するカスタム・プロパティを指定します。

たとえば、wlevs:event-beanwlevs:propertyを指定すると、Oracle Stream Analyticsは、実装するJavaクラスではなく、Javaクラスをインスタンス化するcom.bea.wlevs.spring.EventBeanFactoryBeanの対応するsetterメソッドを検索します。Javaクラスのプロパティを指定するには、wlevs:instance-propertyを使用します。

この要素は、wlevs:adapterwlevs:event-beanwlevs:event-typewlevs:processorwlevs:channelまたはwlevs:caching-systemの子としてのみ使用されます。

wlevs:property要素は、Spring propertyType型で定義されます。Springデータ型の詳細は、http://www.springframework.org/schema/beans/spring-beans-2.0.xsdを参照してください。

子要素

次のいずれかのSpring標準要素をwlevs:property要素の子要素として指定できます。

  • meta

  • bean

  • ref

  • idref

  • value

  • null

  • list

  • set

  • map

  • props

属性

表2-20 wlevs:propertyアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

name

JavaBeanのネーミング・ルールに従ってプロパティの名前を指定します。

String

はい。

ref

ネストされた<ref bean='...'/>要素へのショートカットです。

String

いいえ。

value

ネストされた<value>...</value>要素へのショートカットです。

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:property要素の使用方法を示しています。この例では、wlevs:property要素を使用して、ForeignExchangeEventのカスタム・プロパティbuilderFactoryを定義しています。このプロパティでは、Spring標準のbean要素を使用して、ForeignExchangeEventsを作成するためのファクトリとして使用されるSpring Beanを指定します。

<wlevs:event-type type-name="ForeignExchangeEvent">
   <wlevs:metadata>
      <entry key="symbol" value="java.lang.String"/>
      <entry key="price" value="java.lang.Double"/>
   </wlevs:metadata>
   <wlevs:property name="builderFactory">
     <bean id="builderFactory"
            class="com.bea.wlevs.example.fx.ForeignExchangeBuilderFactory"/>
   </wlevs:property>
</wlevs:event-type>

2.25 wlevs:source

このコンポーネントのイベント・ソースを指定します。イベント・ソースは、イベントが送られてくる元のコンポーネントです。イベント・ソースを指定することは、このコンポーネントを別のコンポーネントのイベント・リスナーとして指定するのと同等です。

また、特定のwlevs:sourceコンポーネント内にコンポーネントの定義をネストして、コンポーネント・ソースを指定できます。この要素は、wlevs:channelまたはwlevs:processorの子です。

注意:

ネストされた定義は、動的構成または動的モニターには使用できません。

属性

表2-21 wlevs:sourceアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

ref

この要素が子であるチャネルのソースを指定します。

この属性は、ソース・コンポーネントのid属性の値に設定します。

この属性は、ソースをネストする場合には指定しません。

String

いいえ。

次の例は、EPNアセンブリ・ファイルでのwlevs:source要素の使用方法を示しています。この例では、idhelloworldAdapterであるコンポーネントが、helloworldInstreamというチャネル・コンポーネントのソースです。

    <wlevs:channel id="helloworldInstream">
        <wlevs:listener ref="helloworldProcessor"/>
        <wlevs:source ref="helloworldAdapter"/>
    </wlevs:channel>

2.26 wlevs:table

イベント・シンクまたはイベント・ソースとして機能できるリレーショナル・データベース表を指定します。

2.26.1 表ソース

1つ以上のプロセッサ・コンポーネントにイベント・データを提供するリレーショナル・データベース表。プロセッサ・コンポーネントを、表ソースを直接参照するOracle CQL問合せに関連付けます。

属性

表2-22 wlevs:tableアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

id

このコンポーネントの一意の識別子。

この識別子は、この表のXML構成ファイル内の<name>要素に対応している必要があります。

String

はい。

event-type

イベント・タイプ・リポジトリで定義されているようにこの表に関連付けられているイベント・タイプです。

String

はい。

data-source

Oracle Stream Analyticsサーバー構成ファイル内で定義されているリレーショナル・データ・ソースの名前。このデータベース表にアクセスするために使用されます。

String

はい

table-name

リレーショナル・データベース表の名前。表ソースとしてwlevs:tableを使用する場合、table-nameはオプションです。表シンクとしてwlevs:tableを使用する場合、table-nameは必須です。

String

いいえ

external-rows-threshold

表ソースを結合の外部ソースとして使用する場合は、外部の行しきい値を指定します。表シンクには適用されません。

Long

いいえ

次の例は、EPNアセンブリ・ファイルでのwlevs:table要素の使用方法を示しています。この例では、wlevs:processorwlevs:table-source要素を使用して表を参照しています。

<wlevs:table id="Stock" event-type="StockEvent" data-source="StockDs" />

<wlevs:processor id="proc">
    <wlevs:table-source ref="Stock" />
</wlevs:processor>

2.26.2 表シンク

Oracle CQLプロセッサでEPNに入るイベント・データを受信し、そのデータを永続データ・ストアに格納する際の表タグであるリレーショナル・データベース表コンポーネントです。この機能は、リレーショナル・データベース表の構造を制御できるため、記録機能より柔軟です。逆に記録機能では、記録と再生の機能で最適に動作する形式でイベントを格納します。

イベントは、永続データ・ストアとして格納されると、EPNで次のステージに送られます。永続データベース表を作成する際には、列名がイベント・タイプのプロパティ名と同じになるようにしてください。

属性

表2-23 wlevs:tableアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

id

このコンポーネントの一意の識別子。

この識別子は、この表のXML構成ファイル内の<name>要素に対応している必要があります。

String

はい

event-type

イベント・タイプ・リポジトリで定義されているようにこの表に関連付けられているイベント・タイプです。

String

はい

data-source

Oracle Stream Analyticsサーバー構成ファイル内で定義されているリレーショナル・データ・ソースの名前。このデータベース表にアクセスするために使用されます。

String

はい

table-name

リレーショナル・データベース表の名前。表ソースとしてwlevs:tableを使用する場合、table-nameはオプションです。表シンクとしてwlevs:tableを使用する場合、table-nameは必須です。

String

はい

key-properties

リレーショナル・データベース表の一意キー値を形成します。一意キーは、イベント・シンクによって実行される更新および削除操作に必要です。

String

はい

次の例は、HelloWorldの例で表シンクとして追加された最終ステージです。表シンクは、HelloWorldEventタイプのイベントをhelloDataSourceという名前のデータ・ソースに格納します。

<wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent"
               advertise="true">
  <wlevs:listener ref="tableSink"/>
  <wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>
<wlevs:table id="tableSink" event-type="HelloWorldEvent" key-properties="message"
             data-source="helloDataSource" table-name="HelloMessages"/>

2.27 wlevs:table-source

このプロセッサ・コンポーネントにデータを提供するリレーショナル・データベース表を指定します。プロセッサ・コンポーネントは、表を直接参照するOracle CQL問合せに関連付けられます。この要素は、wlevs:processor要素のみの子です。

属性

表2-24 wlevs:table-sourceアプリケーション・アセンブリ要素の属性

属性 説明 データ型 必須?

ref

プロセッサ・コンポーネントのデータのソースであるリレーショナル・データベース表を指定します。wlevs:table要素のid属性値にrefを設定します。

String

はい。

次の例は、アセンブリ・ファイルでのwlevs:table-source要素の使用方法を示しています。

<wlevs:table id="Stock" event-type="StockEvent" data-source="StockDs" />

<wlevs:processor id="proc">
    <wlevs:table-source ref="Stock" />
</wlevs:processor>