出力式とは、入力イベントとマスタデータを結合した結果を出力するための処理です。
出力式の定義を以下の図に示します。
出力するイベントのプロパティやマスタデータの項目を指定します。
結合関係式の条件を満たすマスタデータが存在しない場合、マスタの項目は空で出力されます。
出力項目を指定しない場合の動作は以下の通りです。
検索式によってフィルタリングされた入力イベントがそのまま出力されます。
検索式が無い場合は、CEPエンジンの起動に失敗します。
入力イベントの全プロパティおよび結合される全てのマスタデータの全項目が順番に出力されます(入力イベントがCSV形式の場合)。
入力イベントがXML形式であれば、CEPエンジンの起動に失敗します。
ポイント
連結式の後に引数(出力項目)がない出力式を記述した場合、入力イベントとマスタデータのすべての項目を指定した出力式と同様の出力結果になります。
if-then文:
join("MASTER01", $propA == $prop11), join("MASTER02", $propB == $prop22) output();
上記のoutput()は、次の出力式と同様の出力結果になります。
output($propA,$propB,$propC,"MASTER01".$prop11,"MASTER01".$prop12,"MASTER02".$prop21,"MASTER02".$prop22);
注意
XML形式のイベントに連結処理をする場合は出力項目の指定が必須です。
検索式または連結式を指定した場合だけ出力項目を省略できます。
1つのoutput()に指定できる出力項目数に制限はありませんが、以下の計算式で求められるサイズが65535バイトを超過した場合はCEPエンジンの起動に失敗します。
サイズの計算式:
各出力項目の必要サイズ + output関数の引数の数 - 1 (単位:バイト)
出力項目 | 必要サイズ |
---|---|
項目参照 | 項目参照の文字列長 |
マスタ項目参照 | マスタ項目参照の文字列長 + 対象連結式の結合関係式の文字列長 + 9 |
lookup_sum関数 | lookup_sumの引数文字列長 + 対象連結式の結合関係式の文字列長 + 13 |
lookup_count関数 | lookup_countの引数文字列長 + 対象連結式の結合関係式の文字列長 + 15 |
各文字列長は、UTF-8エンコーディングの文字列の長さを指します。
出力項目の詳細については、「2.7.1 出力項目」を参照してください。
以下のif-then文のoutput()におけるサイズ(例):
join("MASTER01", $message = $word)
output($ID, "MASTER01".$word, lookup_sum("MASTER01".$weight));
計算結果は88バイトとなります。
「$ID」の文字列長
+ (「"MASTER01".$word」の文字列長 + 「$message = $word」の文字列長 + 9)
+ (「"MASTER01".$weight」の文字列長 + 「$message = $word」の文字列長 + 13)
+ 引数の数 - 1
= 3 + (16 + 16 + 9) + (18 + 16 + 13) + 3 - 1 = 88
出力する項目に対して別名を付けます。
最後のif-then文以外の出力式に、プロパティ別名を指定する必要があります。
次の処理の入力イベントのプロパティ名として利用可能となります。
入力イベントがXML形式の場合は、プロパティ別名を指定する必要があります(on文中の最後の出力式を除く)。
入力イベントがCSV形式の場合は、以下に示すプロパティ別名が自動生成されます。
プロパティ | 自動生成されるプロパティ別名 |
---|---|
入力イベントの項目 | 入力イベントの項目名がそのまま指定される |
マスタデータの項目 | M略称と項目名をピリオド(.)で連結した名称 |
注意
on文中の最後の出力式ではプロパティ別名を指定することはできません。
プロパティ別名に使用できる文字には制限があります。詳細は、「2.2.5 項目名・属性名」を参照してください。
1つの出力式の中で同じプロパティ別名を使うことはできません。
同じ項目を複数回出力する場合は、それぞれ異なるプロパティ別名を付ける必要があります。
入力の形式がXMLの場合、on文中の最後の出力式でなければプロパティ別名を指定する必要があります。指定がない場合、CEPエンジンの起動に失敗します。
自動生成される別名も含め、1つの出力式で定義される別名に重複がある場合にはCEPエンジンの起動に失敗します。
例
出力項目に"Mst1".$item1を指定した場合、プロパティ別名は以下の通りです。
Mst1.item1
出力するイベントに対してイベントタイプの別名を付けます。
最後のif-then文の出力式に、イベントタイプ別名を指定する必要があります。
複合イベント処理に渡すイベントタイプ定義の開発資産IDを指定します。
注意
on文中の最後の処理以外でイベントタイプ別名を指定した場合、CEPエンジンの起動に失敗します。
on文内の処理が抽出処理だけの場合、イベントタイプ別名はon文に指定したイベントタイプと同一である必要があります。
on文の最後の出力式におけるイベントタイプ別名は、イベントタイプ定義として登録されている必要があります。
出力がCSV形式の場合、そのイベントタイプ定義のプロパティの数と出力する項目の数が一致している必要があります。一致していない場合には、CEPエンジンの起動に失敗します。
ポイント
入力イベントがCSV形式であり、かつ、最後のif-then文でなければ出力式を省略できます。
連結式で複数のマスタ項目が結合関係式の条件を満たす場合、以下のように複数の項目がコンマ(,)で区切られ、全体を二重引用符(")で括られて出力されます。なお、マスタ項目の内容に二重引用符(")が含まれる場合は、その二重引用符の前に二重引用符が付きます。
if-then文:
join("MemberInfo", $group == $GroupID)
output("MemberInfo".$MemberID, "MemberInfo".$Name);
$groupが“GRP01”の入力イベントとマスタデータを結合した場合の出力結果は以下の通りです。
"""MEM0001"",""MEM0003""","""太郎"",""花子"""
ただし、出力項目にlookup_sum関数またはlookup_count関数を指定している場合は、二重引用符(")で括られずに出力されます。