FME创建循环
原文发布时间:2014-12-09
作者:一峰
什么是循环
循环是在自定义转换器中重复做一部分操作的方法。
循环是程序结构允许一部分重复执行,通常,这用于迭代,重复执行某个过程,逐步缩小范围,通常循环连接一个条件,即循环停止的条件。
注意:在FME中,循环只能在自定义转换器中创建
循环创建
除了数据的流入和流出,循环还需要三个对象:循环的输入、循环对象、循环条件。
(1)循环输入
循环的输入是通过输入对象定义的,它跟其他输入端口一样使用,例如,这里有一个输入端口来接受要素,另一个输入端口作为循环的输入。
如果你不希望循环输入端口在自定义转换器中显示,如下:
你可以打开循环输入端口的参数,关闭“publish”复选框:
2)循环对象
循环的关键步骤是定义一个循环对象,在自定义转换器中,
右击>insert Transformer Loop,添加循环对象
当你添加了循环对象,会提示你循环到哪个输入端口(即选择循环的输入端)。
点击OK,循环对象被创建。
(3)循环条件
当然,一般情况下,循环需要一个条件来终止循环,例如,你可以添加一个Tester转换器来进行条件来测试循环,如果失败,则继续循环,如果成功则输出结果。
这样我们在FME中就创建了一个最简单的循环
注意:正确设置循环条件,不要让FME陷入死循环,那样你会很崩溃的。
循环作用
在FME中正确利用循环是非常有用的,例如,在list1{N}.A中查找list2{M}.B中的元素,那么利用循环,设置变量i=0,如果i<M,则在list1{N}.A中查找list2{i}.B,如果找到,则记录list2{i}.B,如果没找到,则记录不存在。这样会大大提高FME执行的效率。