メッセージ処理スクリプト
「メッセージ処理スクリプト」プロセッサを使用すると、JavaScriptまたはGroovyを使用して、プロセッサに対するオプションとして入力される独自のプロセッサ・ロジックを指定できます。
「メッセージ処理スクリプト」プロセッサは「スクリプト」プロセッサと密接に関連しています。このプロセッサと「スクリプト」プロセッサの主な相違点は、「メッセージ処理スクリプト」プロセッサは、多数のレコードを含む可能性があるメッセージを処理するように設計されていることです。「メッセージ処理スクリプト」プロセッサは、メッセージ内の全レコードにわたって操作を実行でき、メッセージIDなどのメッセージ・レベルの属性にアクセスできます。
「メッセージ処理スクリプト」プロセッサを使用して、メッセージ内の全レコードにわたって機能する、またはメッセージ内の最初のレコードでのみ選択的に機能する処理ロジックを定義できます。
「メッセージ処理スクリプト」プロセッサは、処理時にサマリー統計を表示しません。
「データ」ビューには、各入力属性とともに、右側に出力属性が表示されます。
スクリプト
「メッセージ処理スクリプト」プロセッサに対するスクリプトの作成時に、次の注意事項を考慮することが重要です。
「メッセージ処理スクリプト」プロセッサでは、作業単位としてメッセージが取得されます。メッセージは複数のレコードで構成される場合があり、レコードは、「メッセージ処理スクリプト」プロセッサ内でrecordsという配列としてモデル化されます。配列内の各レコードには、標準の「スクリプト」プロセッサのinput1およびoutput1属性に対応する、独自の入力属性のセットと独自の出力属性があります。
さらに、事前定義の変数であるmessageid
に一意のメッセージIDが含まれ、変数tagsにはメッセージ・レベルのタグが含まれます。
各レコードに、プロセス内のレコードの処理の続行を抑制するcancel()
関数もあります。
注意:
各レコードに対して呼び出される関数を指定し(スプリプト全体の毎回実行ではなく)、スクリプトの言語を変更できます。
関数を設定するには、スクリプトの上部に次の行を挿入します。doitは関数名で、使用する関数名にこれを変更します。
#! function : doit
スクリプトの言語をJavascriptではなくGroovyに変更するには、次の行を追加します。
#! language : groovy
例
次のスクリプトはメッセージ内の全レコードにわたって繰り返され、各レコードに対する最初の入力属性(数値と想定されています)の値の合計が計算されます。次に、レコード全体で再度繰り返され、各レコードの出力属性の値に、最初のステップで計算された合計が設定されます。
var sum = 0; for (var i = 0; i < records.length; i++) { sum += records[i].input1[0]; } for (var i = 0; i < records.length; i++) { records[i].output1 = sum; }
次のスクリプトでは、前述と同様に合計が計算されますが、最初のレコード以外の全レコードがcancel()関数を使用して抑制されます。この結果、全レコードにわたる最初の入力属性の合計がその出力属性として設定された、単一のレコード(最初のレコード)がメッセージごとに出力されます。
var sum = 0; for (var i = 0; i < records.length; i++) { sum += records[i].input1[0]; } for (var i = 0; i < records.length; i++) { if (i == 0) { records[i].output1 = sum; } else { records[i].cancel(); } }