表驱动循环示例
本部分简要介绍使用 “表循环” 和“ 表提取程序” functoid 的映射。 有关选择、放置、链接和配置 functoid 的详细信息,请参阅 How to Add Table Looping 和 Table Extractor Functoids to a Map。
假设您有一个需要在文档中使用的地址的列表,该文档需要单独的发货地址和帐单邮寄地址。 这些地址可能如以下代码所示:
<ns0:Root xmlns:ns0="http://TableLoopingSample.Addresses">
<Address>
<Name>Kelly Focht</Name>
<Street>456 1st Ave</Street>
<City>Miami</City>
<State>FL</State>
<PostalCode>81406</PostalCode>
</Address>
<Address>
<Name>Wendy Wheeler</Name>
<Street>7890 Broadway</Street>
<City>Columbus</City>
<State>OH</State>
<PostalCode>46290</PostalCode>
</Address>
</ns0:Root>
可采用的输出形式之一如以下代码所示,可复制这些地址但使用属性对其进行标记:
<ns0:Root xmlns:ns0="http://TableLoopingSample.POAddresses">
<Address Type="ShipTo">
<Name>Kelly Focht</Name>
<Street>456 1st Ave</Street>
<City>Miami</City>
<State>FL</State>
<PostalCode>81406</PostalCode>
</Address>
<Address Type="BillTo">
<Name>Kelly Focht</Name>
<Street>456 1st Ave</Street>
<City>Miami</City><State>FL</State>
<PostalCode>81406</PostalCode>
</Address>
<Address Type="ShipTo">
<Name>Wendy Wheeler</Name>
<Street>7890 Broadway</Street>
<City>Columbus</City>
<State>OH</State>
<PostalCode>46290</PostalCode>
</Address>
<Address Type="BillTo">
<Name>Wendy Wheeler</Name>
<Street>7890 Broadway</Street>
<City>Columbus</City>
<State>OH</State>
<PostalCode>46290</PostalCode>
</Address>
</ns0:Root>
The following figure shows a map using the
表循环functoid and
表提取程序functoids to generate the desired output instance message.
“表循环”和“表提取程序”Functoid
请注意, Table Looping functoid 链接到输入和输出架构中的记录级元素。 此链接可确保创建封闭的结构,从而确保在记录内创建元素。 另请注意,输出架构中的每个字段都有一个 表提取程序 functoid。
输入架构中记录的链接是“ 配置 <Functoid> Functoid”对话框中的第一个参数。
第二个参数是 functoid 网格表中的列数:地址类型、名称、街道、城市、州和邮政编码各有一列。 紧随第二个参数之后是在该网格表中可能显示的所有值的列表。 这些值包括地址类型的字符串常数(“ShipTo”、“BillTo”),以及指向地址的字段的链接。 请注意,指向地址字段的链接都具有名称。 对映射中的链接进行命名,可以简化构造表的过程。 否则,完整路径将显示在 “配置表循环”Functoid 对话框中。
配置 表循环 functoid 后,可以使用“ 配置表循环 Functoid ”对话框构造表。 单击与“属性”窗口中的“表循环网格”属性关联的省略号 (...) 按钮时,将显示对话框。
请注意,在 “配置表循环 Functoid ”对话框中指定了六列:输出架构中每个字段对应一列。 下拉列表显示字段的可能值,也由 配置表循环 Functoid 对话框中的第三个和以下参数指定。 表包含两行,分别对应于输出架构中的每个记录类型。 因为存在两行,所以此映射将为每个输入记录生成两个记录。 如果存在四行,则每个输入记录将有四个输出记录。
当 “表循环 ”functoid 获取每条记录时,它会用记录中的值填充表中的值,然后一次向 表提取程序 functoid 发送一行。 “表提取程序”functoid 分别从表行中提取一个值,并将其传递到输出实例消息中的链接字段。
另请参阅
“表循环”Functoid
“表提取程序”functoid
表驱动循环配置
如何向映射添加“表循环”和“表提取程序”Functoid
高级 Functoid
“索引”Functoid
“迭代”Functoid
“循环”Functoid
“记录计数”Functoid