ファイルからレコードを選択し、フローの他の部分に伝搬するために、レコード選択式を使用します。
各レコードが順番にこの式と比較され、最初に true と評価されたレコードが Out ターミナルに伝搬されます。
この式は、ブール値を返す任意の有効な XPath 式に設定できます。 「レコード検出」オプションに「ファイル全体」が選択された場合、
この式は使用されません。
式に使用される相関名
式には、以下の任意の相関名を使用できます。
- InputRoot および InputLocalEnvironment
- Input の名前は、In ターミナルを介してノードに入る着信メッセージを示します。
- ResultRoot
- ResultRoot の名前は、ファイル内の現在のレコードを使用して作成されたメッセージを示します。
- OutputRoot
- OutputRoot の名前は、式が true に評価された場合に伝搬されるメッセージを示します。 このアクションは、ファイル内で検出された Result メッセージを発信メッセージ内の別の位置にコピーするために、Output データの位置または Result データの位置が変更されていない場合、ResultRoot と同等です。
- OutputLocalEnvironment
- OutputLocalEnvironment には、Out ターミナルから伝搬される通常のローカル環境が含まれます。また、レコード数およびそのオフセットなどの、有用な情報が含まれます。
任意の有効な XPath 式と同時にこれらの相関名のデータの任意の組み合わせを使用して、レコードを伝搬するかどうかを決定できます。
例
式は次のとおりです。
$InputRoot/XMLNSC/Invoice/AccountNumber=$ResultRoot/XMLNSC/Data/Key
この例では、各レコードが有効な XML 文書です。 FileRead ノードがファイルから各レコードを読み取ります。着信メッセージ内で FileRead ノードが、フィールド /Data/Key とフィールド /Invoice/AccountNumber を比較します。レコードが一致すると、Out ターミナルに伝搬されます。
式は次のとおりです。
$OutputLocalEnvironment/File/Read/RecordNumber=5
FileRead ノードがファイルから各レコードを読み取り、そのレコード番号を 5 と比較します。5 番目のレコードに到達すると、そのレコードが伝搬されます。
着信メッセージとファイルからのレコードを組み合わせて使用することにより出力メッセージを作成する
FileRead ノードがファイルからレコードを読み取り、ノードに着信するメッセージと組み合わせます。デフォルトで、ファイルから読み取られたレコードの内容で、メッセージが置き換えられます。 ただし、「結果」パネルのプロパティーを使用することにより、着信メッセージとファイル・レコードの内容の組み合わせ方法を選択できます。 ノードには 3 つの論理ツリーがあります。
- 入力
- 入力メッセージ・アセンブリーには、着信メッセージのすべてのデータが含まれ、伝搬されるレコードの基礎になります。
- 結果
- 結果メッセージ・アセンブリーには、ファイルから読み取られたレコードの内容が含まれます。
- 出力
- 出力メッセージ・アセンブリーは、ノードから伝搬された実際のオブジェクトです。
デフォルトで、出力メッセージ・アセンブリーは、入力メッセージ・アセンブリーを出力メッセージ・アセンブリーにコピーすることにより構成されます。
出力メッセージ・アセンブリーのデータ部分は、次に、結果メッセージ・アセンブリーの内容で置き換えられ、OutputLocalEnvironment が、ノード内の処理の詳細によって更新されます。
以下の結果パネルのプロパティーを使用すると、この動作を変更することができます。
- 結果データのロケーション
- 読み取られたレコードのどの部分を出力メッセージにコピーするかを指定します。 デフォルトで、結果データのロケーションは、ResultRoot からすべてをコピーしますが、レコードの一部のみをコピーするように変更することもできます。
例えば、ResultRoot.XMLNSC.Invoice.Name とすると、選択したレコードの名前フィールドのみを出力メッセージにコピーします。
- 出力データのロケーション
- レコードを出力メッセージのどこにコピーするかを指定します。
デフォルトで、出力データのロケーションは、すべてを OutputRoot にコピーします。
指定されるロケーションは、メッセージのデータ部分 (ResultRoot の下)、またはその他の出力ツリー (OutputLocalEnvironment など) にすることができます。
例えば、結果のレコードをメッセージ本体内のフィールドにコピーするには OutputRoot.XMLNSC.Invoice.Data、結果をローカル環境にコピーするには OutputRoot.Variables.Invoice.data とします。
- ローカル環境のコピー
- InputLocalEnvironment からローカル環境をコピーします。
「ローカル環境のコピー」オプションが選択されていない場合、InputLocalEnvironment がコピーされずに直接使用されます。 このオプションにより、FileRead ノードより前にあるノードで、ローカル環境への変更を確認できるようになります。
例えば、以下のオプションは、レコードの名前フィールドを出力メッセージにコピーします。 その他の出力メッセージは、入力メッセージに基づきます。
Result data location= ResultRoot.XMLNSC.Invoice.Name
Output data location= OutputRoot.XMLNSC.Invoice.Name
以下のオプションは、メッセージ本体をレコードから出力ローカル環境にコピーします。 出力メッセージは入力メッセージと同じです。
Result data location= ResultRoot.XMLNSC.Invoice
Output data location= OutputLocalEnvironment.Variables.Invoice