|
Message Handling Script |
「Message Handling Script」プロセッサを使用すると、JavaScriptを使用して、プロセッサに対するオプションとして入力される独自のプロセッサ論理を指定できます。
「Message Handling Script」プロセッサは「Script」プロセッサと密接に関連しています。このプロセッサと「Script」プロセッサの主な相違点は、「Message Handling Script」プロセッサは、多数のレコードを含む可能性があるメッセージを処理するように設計されていることです。「Message Handling Script」プロセッサは、メッセージ内の全レコードにわたって操作を実行でき、メッセージIDなどのメッセージ・レベルの属性にアクセスできます。
「Message Handling Script」プロセッサを使用して、メッセージ内の全レコードにわたって機能する、またはメッセージ内の最初のレコードでのみ選択的に機能する処理ロジックを定義できます。
任意の数のあらゆるタイプの属性を「Message Handling Script」プロセッサの入力にできます。入力属性はinput1というJavaScript配列にまとめられます。メッセージ内の各レコードに、そのレコードの属性値を含む、input1の独自のインスタンスがあります。
オプション |
タイプ |
目的 |
デフォルト値 |
|
Result type |
選択(String/Number/Date/String Array/Number Array/Date Array) |
スクリプトの出力結果のタイプを決定します。
|
String |
|
Script |
スクリプト |
プロセッサ論理を定義するスクリプト。詳細は、「Script」の項を参照してください。 |
なし |
「Message Handling Script」プロセッサでは、レコードごとに単一の出力データ属性がサポートされます。この属性のタイプは、「Result type」オプションの設定によって決まります。
単一の出力をJavaScript名output1に割り当てる必要があります。
注意: 結果タイプに配列タイプを選択しても、配列は自動的にはインスタンス化されません。単純なデータ・タイプと配列タイプには違いがあるため、配列はスクリプトによってインスタンス化する必要があります。これを行わないと、プロセッサの実行時にスクリプト実行エラーが発生します。詳細は、「Script」プロセッサのトピックの「例3」を参照してください。 |
データ属性 |
タイプ |
目的 |
値 |
ScriptResult |
追加 |
スクリプトの結果を含む属性。 |
値はスクリプトによって設定されます。 |
なし
実行モード |
サポート |
バッチ |
Yes |
リアルタイム・モニタリング |
Yes |
リアルタイム応答 |
Yes |
新規プロセッサ(スクリプトの使用を含む可能性がある)の作成時に、プロセッサをリアルタイム応答の実行と非互換にするには、プロセッサに、完了まで実行する必要があるプロセッサというフラグを設定します(たとえば、処理されたすべてのレコード全体で計算されるパーセントに基づいてレコードをフィルタ処理するプロセッサ)。
「Message Handling Script」プロセッサでは、処理に関するサマリー統計は表示されません。
データ・ビューには、各入力属性とともに、右側に出力属性が表示されます。
なし
「Message Handling Script」プロセッサに対するスクリプトの作成時に、次の注意事項を考慮することが重要です。
「Message Handling Script」プロセッサでは、作業単位としてメッセージが取得されます。メッセージは複数のレコードで構成される場合があり、レコードは、「Message Handling Script」プロセッサ内でrecordsという配列としてモデル化されます。配列内の各レコードには、標準の「Script」プロセッサのinput1およびoutput1属性に対応する、独自の入力属性のセットと独自の出力属性があります。
さらに、事前定義の変数であるmessageidに一意のメッセージIDが含まれ、変数tagsにはメッセージ・レベルのタグが含まれます。
各レコードに、プロセス内のレコードの処理の続行を抑制する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++)
{
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();
}
}
Oracle (R) Enterprise Data Qualityオンライン・ヘルプ バージョン8.1
Copyright (C) 2006,2011 Oracle and/or its affiliates.All rights reserved.