使用英语阅读

通过


“索引”Functoid

使用 “索引” functoid,可以从一系列记录中的特定记录中选择信息。 每个 索引 functoid 从单个字段收集信息。

某些记录通常会在输入文件中出现多次。 例如,在天气报告中, DailySummary 元素可能会出现多次。 DailySummary 元素可能包括温度、气压和风速的属性。 下面列出了一个示例气象报表的代码:

<ns0:WeatherReport xmlns:ns0="http://IndexFunctoid.WeatherReport">  
    <DailySummary Pressure="80" Windspeed="10" Temperature="20" />  
    <DailySummary Pressure="78" Windspeed="20" Temperature="23" />  
    <DailySummary Pressure="77" Windspeed="16" Temperature="24" />  
</ns0:WeatherReport>  

在基础架构中,DailySummary 记录的 Max Occurs 属性将设置为 unbounded,以指示定期记录或循环记录。 这样,BizTalk 映射器就会将此记录编译为循环。

假设你想要收集天气报告的前两条 DailySummary 记录的天气信息。 在 BizTalk 映射器中,来自传入源架构的 DailySummary 记录中的每个属性都可以连接到 Index functoid。 反过来,每个 Index functoid 可以指定要从中提取信息的 DailySummary 记录:第一条或第二条。 然后,可以将 “索引” functoid 连接到目标架构的相应字段。

下图显示了以这种方式使用的 索引 functoid。

显示连接到目标架构的相应字段的索引 functoid 的图像。
“索引”Functoid 示例

若要获取第一天的每日摘要信息,三个 索引 functoid 的上一组将其索引值设置为 1。 若要获取第二天的每日摘要信息,三个 Index functoid 的下一组将其索引值设置为 2。

索引 functoid 使用 “配置 <Functoid> Functoid ”对话框设置其输入参数。 第一个输入参数标识源架构中循环记录内的某个字段。 第二个和其后的输入参数指定特定的记录。 您可以指定多个索引值以选择嵌套重复结构中的记录。 最内层结构的索引值为第二个参数。 紧临的靠外一层结构的索引值为第三个参数,以此类推。 例如,假设前面的 DailySummary 记录位于 WeeklyData 记录内。 若要从第二个 WeeklyData 中的第一个 DailySummary 检索 Pressure,第二个参数为 1,第三个参数为 2。

请注意,此示例假定 “压力 ”字段不重复。 如果该字段确实重复,则索引将关闭 - 计数以 “压力 ”字段而不是 “每日摘要”开头。

备注

尽管索引序列输入参数通常为常数,但也可以使用来自源架构中某节点的链接。 如果此链接来自于一个循环记录,而该循环记录并不是第一个输入参数的父项,则索引序列输入值将来自输入实例消息中节点的第一个实例。

备注

索引序列输入的值始终与源文档中的当前上下文相关。

重要

Index functoid 必须具有从字段级别到根节点下方第一级的父节点数一样多的索引值。 例如,在多气象报表实例消息中必须具有两个索引值, 而单气象报表实例消息中只需要具有一个索引值。 未能设置 Index functoid 所需的索引值数,将基于与 Index functoid 的第一个输入参数匹配的源实例消息中的第一个节点创建输出。

另请参阅

如何向映射添加“索引”Functoid
高级 Functoid
“迭代”Functoid
“记录计数”Functoid