データ・カートリッジの詳細は、『Oracle Complex Event Processing CQL言語リファレンス』のデータ・カートリッジの概要に関する項を参照してください。
データ・カートリッジの実装によって、Oracle CEPサーバーがデータ・カートリッジのインスタンスとインスタンスによって提供される複合オブジェクトに伝播するアプリケーション・コンテキストを定義できます。
次のデータ・カートリッジに対してアプリケーション・コンテキストを構成できます。
データ・カートリッジの詳細は、『Oracle Complex Event Processing CQL言語リファレンス』のデータ・カートリッジの概要に関する項を参照してください。
Oracle CEPアプリケーションのイベント処理ネットワーク(EPN)アセンブリ・ファイルにあるspatial:context
要素を使用して、Oracle Spatialのインスタンスのアプリケーション・コンテキストを定義します。
com.oracle.cartridge.spatial.Geometry
からのすべてのコンストラクタとメソッドおよびOracle Spatial機能は、spatial:context
を認識します。たとえば、SRIDがOracle Spatialアプリケーション・コンテキストの値から自動的に設定されます。
詳細については、次を参照してください。
『Oracle Spatial開発者ガイド』(http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_objrelschema.htm#SPATL492
)のSDO_SRIDに関する項
『Oracle Complex Event Processing CQL言語リファレンス』のOracle Spatialに関する項
Oracle Spatialアプリケーション・コンテキストを構成する手順:
Oracle CEP IDE for EclipseのEPNエディタを開きます。
6.1項「EPNエディタを開く」を参照してください。
パッケージcom.oracle.cep.cartridge.spatial
をOracle CEPアプリケーションのMANIFEST.MF
ファイルにインポートします。
詳細は、4.7.5項「パッケージのインポート方法」を参照してください。
いずれかのコンポーネントを右クリックし、「アセンブリのソースに移動」を選択します。
EPNファイルを編集し、例18-1に示すとおり、必須ネームスペースとスキーマの場所のエントリを追加します。
例18-1 EPNアセンブリ・ファイル: Oracle Spatialネームスペースおよびスキーマの場所
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:wlevs="http://www.bea.com/ns/wlevs/spring" xmlns:spatial="http://www.oracle.com/ns/ocep/spatial" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://www.bea.com/ns/wlevs/spring http://www.bea.com/ns/wlevs/spring/spring-wlevs-v11_1_1_3.xsd" http://www.oracle.com/ns/ocep/spatial http://www.oracle.com/ns/ocep/spatial/ocep-spatial.xsd">
例18-1に示すように、EPNファイルを編集してspatial:context
要素を追加します。
このEPN内で一意の値をid
属性に割り当てます。
これは、以降のOracle CQL問合せで、このアプリケーション・コンテキストを参照するときに使用される名前です。例18-2で、id
はSpatialGRS80
です。
注意: id 値は、Oracle Spatial名のspatial と異なる必要がります。詳細は、『Oracle Complex Event Processing CQL言語リファレンス』のデータ・カートリッジ名に関する項を参照してください。 |
アプリケーション要件に応じて、spatial:context
要素の他の属性を構成します。
表18-1はspatial:context
要素の属性を示します。
表18-1 spatial:context要素の属性
属性 | 説明 |
---|---|
containまたはinside演算子のデフォルトの許容度。 デフォルト: 0.0000005 |
|
バッファリングとプロジェクト化に使用するReciprocal Of Flattening ( デフォルト: 298.257223563 |
|
バッファリングとプロジェクト化に使用するSemi-Major Axis ( デフォルト: 6378137.0 |
|
SRID整数。有効な値:
デフォルト: |
|
バッファリングなどの幾何演算で無視される最短距離。 デフォルト: 0.000000001 |
例18-3は、測地基準系1980 (GRS80)座標系(srid="4269"
)を使用してEPNアセンブリ・ファイルでSpatialGRS80
という名前の空間コンテキストを作成する方法を示します。
名前によってこのアプリケーション・コンテキストを参照するOracle CQL問合せを作成します。
例18-4は、Oracle CQL問合せでspatial:context
を参照する方法を示します。この場合、問合せはSpatialGRS80
(例18-2で定義されます)のリンク名を使用してこのアプリケーション・コンテキストをOracle Spatialに伝播します。SpatialGRS80
のspatial:context
属性設定は、createPoint
メソッド・コールに適用されます。アプリケーション・コンテキストはSRIDを定義するため、createPoint
メソッドにその引数を渡す必要はありません。
例18-4 Oracle CQL問合せでspatial:contextの参照
<view id=”createPoint”> select com.oracle.cep.cartridge.spatial.Geometry.createPoint@SpatialGRS80(lng, lat, 0d) from CustomerPos[NOW] </view>
詳細は、『Oracle Complex Event Processing CQL言語リファレンス』のOracle Spatialの使用に関する項を参照してください。
次を使用して、Oracle JDBCデータ・カートリッジのインスタンスのアプリケーション・コンテキストを定義します。
EPNアセンブリ・ファイルのjdbc:jdbc-context
要素
コンポーネント構成ファイルのjc:jdbc-ctx
要素
jc:jdbc-ctx
要素では次のことが可能です。
jdbc:jdbc-context
を1つだけ参照する
data-source
を1つだけ参照する
1つ以上のSQL関数を定義する
注意: SQL関数のすべてのSELECT リスト列に対して、別名を指定する必要があります。 |
詳細は、『Oracle Complex Event Processing CQL言語リファレンス』のOracle JDBCデータ・カートリッジに関する項を参照してください。
Oracle JDBCデータ・カートリッジ・アプリケーション・コンテキストを構成する手順:
Oracle CEP IDE for EclipseのEPNエディタを開きます。
6.1項「EPNエディタを開く」を参照してください。
いずれかのコンポーネントを右クリックし、「アセンブリのソースに移動」を選択します。
EPNファイルを編集し、例18-5に示すとおり、必須ネームスペースとスキーマの場所のエントリを追加します。
例18-5 EPNアセンブリ・ファイル: Oracle JDBCデータ・カートリッジ・ネームスペースおよびスキーマの場所
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:wlevs="http://www.bea.com/ns/wlevs/spring" xmlns:jdbc="http://www.oracle.com/ns/ocep/jdbc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://www.bea.com/ns/wlevs/spring http://www.bea.com/ns/wlevs/spring/spring-wlevs-v11_1_1_3.xsd" http://www.oracle.com/ns/ocep/jdbc http://www.oracle.com/ns/ocep/jdbc/ocep-jdbc.xsd">
例18-6に示すように、EPNファイルを編集してjdbc:jdbc-context
要素を追加します。
このEPN内で一意の値をid
属性に割り当てます。
これは、以降のOracle CQL問合せで、このアプリケーション・コンテキストを参照するときに使用される名前です。例18-6で、id
はJdbcCartridgeOne
です。
注意: id 値は、Oracle JDBCデータ・カートリッジ名のspatial と異なる必要があります。詳細は、『Oracle Complex Event Processing CQL言語リファレンス』のデータ・カートリッジ名に関する項を参照してください。 |
必要なプロセッサを右クリックし、「構成のソースに移動」を選択します。
例18-7に示すように、コンポーネント構成ファイルを編集して必須ネームスペースのエントリを追加します。
例18-7 コンポーネント構成ファイル: Oracle JDBCデータ・カートリッジ・ネームスペース
<?xml version="1.0" encoding="UTF-8"?> <wlevs:config xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jc="http://www.oracle.com/ns/ocep/config/jdbc xsi:schemaLocation=" http://www.oracle.com/ns/ocep/config/jdbc http://www.oracle.com/ns/ocep/config/jdbc/ocep_jdbc_context.xsd">
例18-8に示すように、コンポーネント構成ファイルを編集してjc:jdbc-ctx
要素を追加します。
例18-9に示すように、値がEPNアセンブリ・ファイルに定義したOracle JDBCアプリケーション・コンテキストの名前となるname子要素を追加します。
値がOracle CEPサーバーのconfig.xml
ファイルで定義されているデータソース名となる、data-source
子要素を追加します。
詳細については、次を参照してください。
『Oracle Complex Event Processing管理者ガイド』のOracle CEPのJDBCの構成に関する項
例18-10は、StockDS
というデータソースを指定する方法を示します。
例18-11に示すように、function
子要素を使用して1つ以上のSQL関数を作成します。
例18-11 コンポーネント構成ファイル内のjc:jdbc-ctx要素: function
<jc:jdbc-ctx> <name>JdbcCartridgeOne</name> <data-source>StockDS</data-source> <function name="getDetailsByOrderIdName"> <param name="inpOrderId" type="int" /> <param name="inpName" type="char" /> <return-component-type> com.oracle.cep.example.jdbc_cartridge.RetEvent </return-component-type> <sql><![CDATA[ SELECT Employee.empName as employeeName, Employee.empEmail as employeeEmail, OrderDetails.description as description FROM PlacedOrders, OrderDetails , Employee WHERE PlacedOrders.empId = Employee.empId AND PlacedOrders.orderId = OrderDetails.orderId AND Employee.empName = :inpName AND PlacedOrders.orderId = :inpOrderId ]]></sql> </function> </jc:jdbc-ctx>
注意: SQL問合せのすべてのSELECT リスト列に対して、別名を指定する必要があります。 |
詳細は、『Oracle Complex Event Processing CQL言語リファレンス』のSQL文の定義に関する項を参照してください。
Oracle JDBCデータ・カートリッジ・アプリケーション・コンテキストを使用して、SQL関数を起動するOracle CQL問合せを作成します。
例18-12は、Oracle CQL問合せでjdbc:jdbc-context
を参照する方法を示します。この場合、問合せはJdbcCartridgeOne
(例18-11で定義)のリンク名を使用してこのアプリケーション・コンテキストをOracle JDBCデータ・カートリッジに伝播します。例18-12のOracle CQL問合せはOracle JDBCデータ・カートリッジ・コンテキストJdbcCartridgeOne
で定義した関数getDetailsByOrderIdName
を起動します。
例18-12 Oracle CQL問合せでのJDBCアプリケーション・コンテキストの参照
<processor>
<name>Proc</name>
<rules>
<query id="q1"><![CDATA[
RStream(
select
currentOrder.orderId,
details.orderInfo.employeeName,
details.orderInfo.employeeemail,
details.orderInfo.description
from
OrderArrival[now] as currentOrder,
TABLE(getDetailsByOrderIdName@JdbcCartridgeOne(
currentOrder.orderId, currentOrder.empName
) as orderInfo
) as details
)
]]></query>
</rules>
</processor>
詳細は、『Oracle Complex Event Processing CQL言語リファレンス』のOracle JDBCデータ・カートリッジにおけるOracle CQL問合せの定義に関する項を参照してください。