ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework システム構築・運用ガイド

[目次][索引][前へ][次へ]

9.11.3 フィルター定義

フィルター定義(FilterDefinitionタグ)は,「9.9.3 編集用CB定義」で説明した編集用CB定義(DataEditCBDefinitionタグ)の子要素として定義します。

なお,レコードのフィルタリングの処理については,「11.4 レコードのフィルタリング」を参照してください。

<この項の構成>
(1) 記述形式
(2) 定義の詳細
(3) 記述例

(1) 記述形式

<FilterDefinition>
  <record source="<フィルター対象のレコード名>"
   conditionName="<レコード条件名>" condition="{ANDOR}">
    <field source="<フィールド名>"
     condition="{eq|ge|gt|le|lt|ne}" value="<条件値>"/>
  </record>
</FilterDefinition>

(2) 定義の詳細

FilterDefinitionタグ(全体情報の定義)
フィルター定義の全体情報を定義します。この定義は必ず1個だけ記述します。
recordタグ(レコード条件の定義)
レコード条件を定義します。この定義は10個まで記述できます。この定義は省略できません。
レコード条件とは,フィルター対象のレコードを取捨選択するための条件の一つです。レコード条件には,フィルター対象のレコード名を指定します。
source="<フィルター対象のレコード名>"
レコードのフィルタリングの前に処理したコールバックから渡されたレコード形式の中で,フィルター対象とするレコード名を1〜100文字の半角英数字,およびアンダーライン(_)で指定します。先頭の文字に指定できるのは,半角英字だけです。
この属性は1個だけ記述できます。
conditionName="<レコード条件名>"
レコード条件名を1〜100文字の半角英数字,およびアンダーライン(_)で指定します。先頭の文字に指定できるのは,半角英字だけです。
この定義は必ず1個だけ記述します。また,FilterDefinitionタグ内で一意となるように指定してください。
condition="{AND|OR}"
レコード条件の論理条件を指定します。省略した場合,ANDが仮定されます。
指定できる値を次に示します。
  • AND
    複数のフィールド条件にすべて一致したフィールドを持つレコードを出力結果として出力します。
  • OR
    複数のフィールド条件に一つでも一致したフィールドを持つレコードを出力結果として出力します。
fieldタグ(フィールド条件の定義)
フィールド条件を定義します。この定義は10個まで記述できます。この定義は省略できません。
フィールド条件とは,フィルター対象のレコードを取捨選択するための条件の一つです。フィールド条件には,フィルター対象のレコードのフィールド名,比較演算記号,および条件値を指定します。
source="<フィールド名>"
recordタグのsourceで指定したレコード形式のフィールド名を1〜100文字の半角英数字,およびアンダーライン(_)で指定します。先頭の文字に指定できるのは,半角英字だけです。
この属性は省略できません。
condition="{eq|ge|gt|le|lt|ne}"
フィールド条件の比較演算子を表す値を指定します。
この属性に指定できる値は,fieldタグのvalue属性に文字データを指定するか,数値データを指定するかによって異なります。指定できる値を次の表に示します。省略した場合,eqが仮定されます。
この属性の指定値 比較演算子 value属性の指定値
文字データ 数値データ
eq =
ge >= ×
gt > ×
le <= ×
lt < ×
ne !=
(凡例)
○:指定できます。
×:指定できません。

比較演算子の意味を次の表に示します。
比較演算子 比較演算子の使用例 使用例の意味
= A = B AはBと等しい
>= A >= B AはB以上
> A > B AはBより大きい
<= A <= B AはB以下
< A < B AはBより小さい
!= A != B AはBと等しくない
value="<条件値>"
フィールド条件の条件値を文字データ,または数値データで指定します。使用できる文字,または数値を次に示します。この属性は省略できません。
  • 文字データの場合
    指定できる文字数は1〜128文字です。
    文字列として正規表現が使用できます。正規表現の解析には,java.util.regex.Patternクラスを使用します。このため,正規表現は,java.util.regex.Patternクラスがサポートする正規表現の範囲で記述してください。
    正規表現で特別な意味を持つ文字を本来の文字として使用するには,円記号(\)でエスケープする必要があります。
    正規表現で特別な意味を持つ文字を次に示します。
    「(」,「)」,「[」,「]」,「{」,「}」,「-」,「|」,「/」,「\」,「.」,「*」,「?」,「+」,「^」,「$」
  • 数値データの場合
    -9223372036854775808〜9223372036854775807の整数を指定できます。

(3) 記述例

<?xml version="1.0" encoding="UTF-8"?>
<root:AdaptorCompositionDefinition
<!-- 途中略 -->
 xmlns:filter="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/callback/FilterDefinition">
<!-- 途中略 -->
 
<!-- 編集用CB定義 -->
<cb:DataEditCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.dataedit.filter.FilterCBImpl" name="filter1">
  <!-- フィルター定義 -->
  <filter:FilterDefinition>
    <!-- レコード条件の定義 -->
    <filter:record source="R1" conditionName="filterName1" condition="AND">
      <!-- フィールド条件の定義 -->
      <filter:field source="F11" condition="ge"  value="1"/>
      <filter:field source="F11" condition="le"  value="100"/>
      <filter:field source="F21" condition="eq"  value=".*TARO.*"/>
    </filter:record>
    <!-- レコード条件の定義 -->
    <filter:record source="R2" conditionName="filterName2" operator="OR">
      <!-- フィールド条件の定義 -->
      <filter:field source="F21" value="1"/>
      <filter:field source="F22" condition="ne"  value=".*HANAKO.*"/>
    </filter:record>
  </filter:FilterDefinition>
</cb:DataEditCBDefinition>