“FME 2016 先睹为快”之转换器版本

翻译:小新

原文地址:https://blog.safe.com/2015/11/fmeevangelist140/

这篇文章介绍FME2016很重要的一个新功能:关于转换器的版本和升级。

首先,我说明一下什么是转换器的版本,以及转换器的版本为什么重要或不重要。如果你已经了解了这些,你可以跳过第一章节。

简单来说,因为你的“工作空间的转换器”与“核心转换器”(FME中的核心定义)不同步。

当我们定义一个新转换器(例如FME2016中的FeatureWriter),它的版本从0(零)开始。你使用该转换器时,你添加一个“工作空间转换器”,版本依然为0(零)。

 如果Safe Software对“核心转换器”升级,同时增加转换器的版本号,从1到2,甚至更高。但是,如果你的“工作空间转换器”没有进行升级,它的版本将依然保持为0(零)。

为什么会这样呢?因为FME不会自动升级你的工作空间中的转换器,自动升级后有可能产生不同的结果!转换器版本通常是向下兼容的,无论你升级到FME的哪个版本,工作空间应该输出一样的结果。

所以,随着时间推移,你的“工作空间转换器”开始滞后于不断升级和修正的“核心转换器”。然而其实这并不是一件什么大不了的事情……

为什么不重要?

你可能会认为转换器升级是一件大事——修正错误之类的,但事实上并非如此。

那是因为转换器指向的是组成FME功能最底层的“工厂(factories)”和“函数(functions)”。如果它们的功能进行了升级或修正,无论你现有的转换器是什么版本,都将使用新的功能。

这样联想一下:就像道路上的一个坑被修整了,你就必须去买一辆新车一样!

 基本上我们不会因为底层的修复就创建一个新的转换器版本。他们会在任何情况下被使用。你现有的转换器会很好的适应这些修复的功能。

道路修复对车的益处,你现有的车和新车是同等的。

只有当转换器有新功能时,我们才会创建新的转换器版本。因为我们会添加新的转换器参数或者设置,让你使用它们来控制转换器。这个时候你需要升级转换器来使用这些功能。

你可能会有点担心(transformerschmerz)工作空间中的转换器过时。但是如果你的工作空间运行正确,并且能得到你满意的结果,这个时候真的没有必要升级任何内容。

                               

为什么重要!

当然,有些时候升级工作空间转换器非常重要。

首先,最明显的就是,它的新功能对你很有用。例如,FME2016中Sampler转换器会增加一个做随机采样的选项;之前你只能对特定顺序进行采样,现在通过随机采样将得到更好的结果。因此你需要升级你的转换器到最新的版本。

或者你可能已经在工作空间中创建了随机的方法,你可以使用该转换器这个新功能代替,这样可以替换2-3个已有的转换器或一个Python脚本。

 第二个升级转换器的原因是,虽然升级前后转换器的功能相同,但是升级后的转换器具有重新设计的GUI,让它更易用。最近更新的SchemaMapper转换器就是这样一个例子。它与升级前的功能一样,但是界面更友好、易用。

 上面这些都是很容易让你辨别了解哪些转换器需要升级的情况。但实际上并没有这么简单,尤其是工作空间中有几百个转换器时!

    

一个功能

当你打开FME2016时,你会看到在导航窗口中,会有一栏列出了哪些转换器已经过时,需要升级。

 在这个部分你可以查看工作空间中转换器的版本,以及“核心转换器”的最新版本。例如,在工作空间中使用的AttributeFilter的版本为1,但是在FME中可用的最新版本为4。我还可以看到这种情况的所有转换器数量(有两个废弃的转换器)。

对转换器升级(例如Counter转换器),只需对Workbench画布中的转换器右键单击:

 在一个警告(你可以选择永久关闭后),出现如下的对话框:

 这里你将看到的是转换器参数对话框的改变,并且可以使用新版本中开放的任何功能。在上面的图片中,升级前后看起来非常相似——好像只是改变了外观而没有任何新的功能。但是如果单击下拉箭头,你会看到Counter Name参数现在可以设置为条件赋值或者某个属性值,这是之前的版本中没有的。

 另外,你做的任何改动都被记录在新的历史窗口中,这些操作可以被撤销:

 (是的,VertexCreator改动的描述看起来有点奇怪,需要重新描述!)

                              

新特性窗口

你是否注意到上述的对话框中,有一个“Show Changes”的标签?

 通过这个标签,你可以精确的查看两个版本之间的不同。例如,Counter转换器的Change对话框如下:

 ……这样可以证明更新了Counter Name参数接收属性值的情况。

废弃的转换器

我的工作空间中另外一个转换器是3DPointReplacer:

 但是现在已经没有这个转换器了。所以升级选项会做什么操作呢?升级操作将把它替换为新的功能相同的转换器——VertexCreator。

 注意在我们最终的一些改动中,我们很有可能对这种情况下的转换器进行重命名。这样就不会混淆。

当没有与废弃转换器等价的转换器时,将不会对废弃转换器进行升级。到目前为止,AppearanceAdder是我知道的唯一一个这样的转换器。与它近似的新转换器——AppearanceSetter——比它更高级,不能进行1:1的交换。

                                    

局限性

这个功能很好,但是有一些局限性。

例如,你不能通过点击一个按钮对所有过时的转换器进行一次性升级。这是一个深思熟虑的决定。因为新转换器中的变化(比如额外的参数或者不同的输入/输出端口),我们认为你应该真正的单独对这些变化进行处理。

对于自定义转换器,这个功能对自定义转换器定义内部的转换器起作用。但是,就像上面提到的那样,你不能通过单击自定义转换器(尤其是链接式自定义转换器)对内部所有的转换器进行升级。

最后,一些转换器参数对话框使用向导的方式(例如FMEServerJobSubmitter),所以我们不能通过一个对话框对新旧转换器参数进行比较。其他一些有特定对话框的转换器也不能通过这样的方式进行比较(例如AttributeFilter)。

                                   

你现在可以试试

上面所有的截图来自一个旧的工作空间,我从老版的FMEpedia下载的:

 所以除了阅读我上面描述的功能外,何不试试下载工作空间,并用FME2016 beta打开看看这些是怎么工作的。

你做的第一件事是仅仅运行工作空间。注意它会运行成功并得到正确的结果。如果结果令你满意,你不需要升级它。 

当你开始升级转换器时,你将注意到3DPointReplacer和PointConnector增加了一个Rejected要素输出端口,AttributeFilter也有额外的一个端口,并且你需要对它做处理。事实上,3DPointReplacer被VertexCreator转换器代替,AttributeSetter被AttributeCreator代替。

唯一不需要升级的转换器是AttributeCreator,由于工作空间的逻辑错误我才注意到!

                           

总结

我必须强调的是“当你发现工作空间中有过时的转换器时,你不需要升级它们。除非你发现了特别需要的功能,否则你是冒着没有好处的行为进行改变。

但是如果你不需要升级转换器,这个工具可以让你更容易的知道哪些转换器被影响,改变了什么内容,然后自动的更新转换器到最新版本。我希望它会对你有帮助。

 注意虽然我提到转换器不会自动升级到最新版本,但是有一些例外(如SQLExecutor),它们会在打开参数框时自动升级。正如你期望的,我们真的、真的、真的非常小心,以确保自动更新时结果不会被改变。

猜你喜欢

转载自blog.csdn.net/fmechina/article/details/81130011
今日推荐