记录选择表达式

记录选择表达式用于从文件中选择要传播到流的其余内容的记录。

每个记录依次与表达式相比较,并且将第一个求值为 true 的记录传播到 Out 终端。 可以将表达式设置为返回布尔值的任何有效 XPath 表达式。 当选择整个文件作为记录检测选项时,将不使用表达式。

表达式中使用的关联名

可以在表达式中使用以下任何关联名:
InputRootInputLocalEnvironment
Input 名称引用通过 In 终端进入节点的入局消息
ResultRoot
ResultRoot 名称引用通过使用文件中的当前记录创建的消息。
OutputRoot
OutputRoot 名称引用表达式求值为 true 时传播的消息。 除非“输出数据位置”或“结果数据位置”已更改为将文件中找到的“结果”消息复制到外发消息中的其他位置,否则此操作与 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 进行比较。 记录在到达第五条记录时传播。

通过使用与文件中的记录组合的入局消息构建外发消息

FileRead 节点从文件中读取记录,并将其与传入节点的消息相结合。 缺省情况下,它将消息替换为从文件中读取的记录的内容。 但是,通过使用“结果”面板上的属性,可以选择如何组合入局消息和文件记录内容。 该节点具有三棵逻辑树:
输入
“输入”消息组合件包含入局消息中的所有数据,并且是所传播记录的基础。
结果
“结果”消息组合件包含从文件中读取的记录。
Output
“输出”消息组合件是从节点传播的实际对象。

缺省情况下,通过将“输入”消息组合件复制到“输出”消息组合件来构造“输出”消息组合件。 然后,“输出”消息组合件的数据部分替换为“结果”消息组合件的内容,并将使用节点中发生的情况的详细信息更新 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