ルール定義を記述するための設定ファイル(ルール定義ファイル)について説明します。
ruleをルート要素とするXMLファイルであり、高速フィルター機能と複合イベント処理機能のルールを記述します。
ルール定義ファイルに設定する項目は以下のとおりです。
要素または属性 | 項目名 | 説明 | 設定可能文字 | 必須 |
---|---|---|---|---|
id ※rule要素の属性 | 開発資産ID | 配備先のCEPエンジンで一意となるIDを指定します。 | 半角英数字、アンダースコア(_)、ハイフン(-) ※先頭のみ半角英字です。 39文字以内 | 必須 |
comment | コメント | この定義の説明を指定します。 | 1000文字以内 | 任意 |
filter | フィルタールール | 高速フィルタールールを記述します。 マークアップの指定として解釈されるような記述がある場合は、CDATAセクション等を用いて記述します。 | 1048576文字以内 | (*1) |
statements | 複合イベント処理ルール | 複合イベント処理ルールを記述します。 マークアップの指定として解釈されるような記述がある場合は、CDATAセクション等を用いて記述します。 | 1048576文字以内 | (*2) |
(*1) 高速フィルタールールを記述する場合に指定します。
(*2) 複合イベント処理ルールを記述する場合に指定します。
ポイント
SkipChar(検索対象外として取り扱う文字列)などのフィルタールールのオプションを設定する場合は、フィルタールールの先頭に記述する必要があります。
フィルタールールのオプションの詳細については、「開発リファレンス」の「第2章 フィルタールール言語リファレンス」を参照してください。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rule xmlns="urn:xmlns-fujitsu-com:cspf:bdcep:v1" id="RULE_02">
<comment>ルール定義_02</comment>
<filter>
<![CDATA[
@SkipChar("\n")
@SeparateChar("\t")
@ANKmix(true)
@KNJmix(true)
on EVENTTYPE_02 {
(中略)
}
]]>
</filter>
</rule>
文字数の許容範囲内であれば、1つのルール定義に膨大なルールを記述できますが、ルールが複雑になることで保守性・参照性が悪くなる場合があります。高速フィルター用と複合イベント処理用のルール定義をそれぞれ作成する、意味のあるまとまりでルール定義を小分けにする、などを考慮して作成してください。
注意
1つのCEPエンジンに配備できるルール定義数の上限は32です。
1つのCEPエンジンに複数のルール定義を配備可能ですが、依存関係のある複合イベント処理ルール(例えば、insert into句でイベントストリームを指定しているselect文と、そのイベントストリームを指定したfrom句をもつselect文)は1つのルール定義に記述してください。
cepgetrscコマンドを使用して開発資産の詳細表示を行う場合、フィルタールールおよび複合イベント処理ルールはCDATAセクションを使用した形式で表示されます。
参照
フィルタールールの記述方法など詳細については、開発リファレンス「第2章 フィルタールール言語リファレンス」を参照してください。
複合イベント処理ルール記述方法など詳細については、開発リファレンス「第1章 複合イベント処理言語リファレンス」を参照してください。
例
記述例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rule xmlns="urn:xmlns-fujitsu-com:cspf:bdcep:v1" id="RULE_01">
<comment>ルール定義_01</comment>
<filter>
<![CDATA[
on EVENTTYPE_01 {
if ($status == 'Walking') then output() as EVENTTYPE_01;
}
]]>
</filter>
<statements>
<![CDATA[
@SoapListener('LISTEN_01')
@DebugLogListener
select * from EVENTTYPE_01 where areaID = '1010';
]]>
</statements>
</rule>
本例では、以下のルールを記述しています。
イベントタイプEVENTTYPE_01の入力イベントからstatusの項目内容(文字列)がWalkingのイベントを抽出し、複合イベント処理に渡します。
イベントタイプEVENTTYPE_01のイベントデータをSOAPリスナに通知し、同時にデバッグ情報をエンジンログに出力します。