スクリプト

「スクリプト」プロセッサを使用すると、JavaScriptまたはGroovyを使用して単純なプロセッサに対する独自のプロセッサ・ロジックを指定できます。スクリプトは、「スクリプト」プロセッサのオプションとして入力されます。

EDQで作成されるプロセッサ内でスクリプトを使用できるため、そのスクリプトには、プロセッサのエンド・ユーザーは簡単にアクセスできないことに注意してください。また、プロセッサ・ライブラリに追加する新規プロセッサの作成時にスクリプトを使用できるため、スクリプトの大幅な複雑化が可能であり、たとえば、複数の入出力、参照データを使用するオプション、および結果ビューを使用可能にできます。

「スクリプト」プロセッサは、提供されているいずれのプロセッサを使用しても簡単に実行できない、いくつかの単純な処理ロジックを定義するために使用します。

入力

あらゆるタイプの任意の数の属性を「スクリプト」プロセッサに入力できます。選択した入力属性は、input1という名前のJavaScript配列にマップされます。

オプション

オプション タイプ 目的 デフォルト値

結果タイプ

選択(文字列/数値/日付/文字配列/番号配列/日付配列)

スクリプトの出力結果のタイプを決定します。

注意:「配列」タイプを選択する場合、スクリプト内の配列をインスタンス化する必要があります。

文字列

スクリプト

スクリプト

プロセッサ・ロジックを定義するスクリプト。関数の使用およびスクリプト言語の変更についは、後述の注意を参照してください。

なし

注意:

各レコードに対して呼び出される関数を指定し(スプリプト全体の毎回実行ではなく)、スクリプトの言語を変更できます

スクリプトの上部に次の行を含む関数を設定するには、次のようにします。

#! function : doit

このスクリプトのdoitは関数名で、これを使用する関数名に変更します。

スクリプトの言語をJavascriptではなくGroovyに変更するには、次の行を追加します。

#! language : groovy

出力

「スクリプト」プロセッサは、単一の出力データ属性のみをサポートします。この属性のタイプは、「結果」タイプ・オプションを設定することで決定されます。

単一の出力は、スクリプト名output1に割り当てられる必要があります。

注意:

結果タイプに対して「配列」タイプを選択すると、配列は自動的にインスタンス化されません。単純なデータ・タイプと配列タイプ間の違いのために、配列は、スクリプトによってインスタンス化される必要があります。これに失敗すると、プロセッサの実行時にスクリプト実行エラーが発生します。詳細は、例1-3を参照してください。

データ属性

データ属性 タイプ 目的

ScriptResult

追加

スクリプトの結果を含む属性。

この値はスクリプトによって設定されます。

フラグ

なし

実行

実行モード サポート

バッチ

あり

リアルタイム・モニタリング

あり

リアルタイム・レスポンス

あり

注意:

新規プロセッサ(スクリプトの使用が含まれる)を記述する場合、完了まで実行する必要があるプロセッサとしてプロセッサにフラグを付けることで(たとえば、処理されるすべてのレコード全体での計算完了率に基づきレコードをフィルタリングするプロセッサなど)、プロセッサをリアルタイム・レスポンス実行と互換性を持たないように指定できます。

結果の表示

「スクリプト」プロセッサは、処理時にサマリー統計を表示しません。

「データ」ビューには、各入力属性とともに、右側に出力属性が表示されます。

出力フィルタ

なし

例1-1 一意の識別子を出力するためのスクリプト

次の例のスクリプトでは、基礎となるJava関数を使用して一意のIDを生成しています。

output1 = java.util.UUID.randomUUID().toString()

この場合、入力属性はスクリプトによって実際には使用されていませんが、ダミー属性を「スクリプト」プロセッサが実行可能となるようにこれに入力する必要があります。

結果

例1スクリプトの結果

ScriptResult

  • 4d8ed32a-4175-409a-a752-3619cf9fbd5a

  • 8818e732-f56d-4658-bfd9-93ef7ee639bd

  • 4e957a42-6b6c-4669-a7fe-d5c17f1e734f

  • 49a658c1-20db-4d3c-81d8-8cc4aa91016b

  • 1dc94a3c-ec7c-4191-a199-ce1aa4316404

  • 11d3c22f-77cf-4ccc-bbcf-e78ac2ebd227

  • dd698c8d-9bfb-40b5-a5bd-2660787233ec

  • b624911b-9d16-4377-8520-4ab546132dfc

  • 7859603f-3348-4bae-ba62-e24daa11c1cd

  • 065fcae7-3a71-4683-931a-cd16c8d45d91

  • ecdad97d-6dd2-4556-9f47-76cc9a4d74e9

  • b22b386f-c655-4497-9ee4-a379381201dc

  • 7e7b817d-a752-4b9c-98ca-bfd2c85136fa

例1-2 連結

次の例のスクリプトでは、すべての入力属性が単一の出力値に連結されており、各属性値は||によって区切られています。

var res = '';
for (var i = 0; i < input1.length; i++)
  { if (i > 0) res += '||';
     res += input1[i];
  }
output1 = res;

結果

敬称 名前

[Null]

KAREN LOUSE

MILLER

||KAREN LOUISE||MILLER

MR

BRIAN MICHAEL

MILES

||BRIAN MICHAEL||MILES

[Null]

FREDRIK

MISTANDER

||FREDRIK||MISTANDER

MR

KENNETH

MIDDLEMASS

||KENNETH||MIDDLEMASS

[Null]

NEIL ALASTAIR

MITCHELL

||NEIL ALASTAIR||MITCHELL

[Null]

KOKILA RAMESH

MISTRY

||KOKILA RAMESH||MISTRY

[Null]

ANDREW SIMON

MICKLEBURGH

||ANDREW SIMON||MICKLEBURGH

例1-3 配列結果タイプの使用方法

単純なデータ・タイプと異なり、配列変数は、値が書込み可能となるために必ずインスタンス化する必要があります。これに失敗すると、次のようなエラー・メッセージが表示されます。

Script execution failed: TypeError: Cannot set property '0.0' of null to '<value>' ([script]#2)

出力配列をインスタンス化するには、次に示すように、スクリプトで新規コマンドを使用して、配列にメモリーを割り当てる必要があります。

var output1 = new Array();

この文の後、配列はインスタンス化され、書込みが可能になります。