用阻挡变压器循环

FME可以在通常会绕过的阻塞(或基于组的)变压器周围创建处理循环,这些变压器通常会阻挡功能流。此功能类似于循环功能,但它以非常不同的方式运行。

背景

在标准工作空间中,特征处理循环一次处理一个特征。FME的常用工作流程是从亚搏在线读取器中拍摄一个功能,将其推动通过变压器,然后在进入下一个输入功能之前将结果写入Writer。变形金刚可以沿不同的路径转移特征,但FME将在继续下一个特征之前尽可能远将单个功能推下工作空间。

Workbench提供了一种开发一个自定义变压器的方法,可以绕过FME的自然变换过程:变压器回路使FME能够从自定义变压器内的一个处理点中取出功能,并将其插入另一个点。这就是所谓的循环。到目前为止,Looping仅限于基于特征的变换器。

一些变形金刚可以堵塞:即,它们可能会坚持某些功能,经常直到FME完成处理。(例如,当使用变换器的“按”功能时,它将发生这种情况,因为在考虑每个功能之前,组无法完成。)这样的变压器也经常被称为“基于组”的变压器。当这些变换器抓住一个功能时,FME返回读者以获取下一个要处理的功能。阻塞变压器不能产生任何输出,直到其所有输入都累计。在逻辑上,这意味着阻塞变换器不能包含在变压器循环中,因为循环发生在变压器尚未准备好接受新功能时发生。

启用阻止的循环功能克服了这种限制。

要求

在循环中使用阻塞变压器时,只有一个要求:自定义变压器必须是外部的(保存并存储为.FMX.文件)并始终链接(未嵌入)。

脚步

  1. 创建一个自定义变形器。如果是嵌入式自定义变压器,请将其导出为链接的自定义变压器。
  2. 或者,当您将循环端口添加到包含阻塞变换器的自定义变压器时,FME会提示您导出自定义变压器,并显示以下消息:

    Note: ">笔记:如果将阻塞变压器添加到包含循环端口的自定义变压器,则不显示此消息。但是,您仍然可以导出自定义变压器。

  3. 打开链接的自定义变压器(.FMX.文件中的文件)。在“导航器”下,在“变换器属性”下,将“启用阻止循环”参数设置为“是”并保存更改。
  4. Note: ">笔记:当“启用被阻止的循环”设置为“是”时,允许仅允许一个循环。

    当在链接的自定义变压器中启用“阻塞循环”时,在变压器上会发现两个附加参数:最大迭代次数属性保持迭代计数

    这两个参数控制要执行循环的次数并有助于防止无限循环。

  5. 将此链接的自定义变压器插入需要循环的工作区。将变压器添加到工作区时,它将显示为“链接”。(如果没有,请右键单击插入的变压器并选择关联。)
  6. 此插入的链接自定义变压器将有一个额外的输出端口,称为不完整。您无法重命名此端口。它是自动创建的,以便路由满足循环条件的功能,但不能循环回来,因为循环迭代计数已超过“最大迭代次数”的值。

Note: ">笔记:链接自定义变换器中的任何输入/输出端口都不能使用“不完整”名称。