FME 2011预览:新特性 IFMEWorkspaceRunner

原发文时间;2010-11-02 14:52:13

作者:Mark

整理:乱马

各位好:

 

对于熟练掌握编程的人,我都是很尊敬的,因为我对于计算机编程或者软件工程不是很熟悉。如果你知道类和接口的不同(方法或者对象),那么我也一样尊敬你。

 

但是,有时我觉得对于FME,开发人员有着一些错误的观念。所以这里对于开发人员,提供一个快速指导,尤其是针对FME 2011的一些新特性。 


 

起因

我曾经或者经常看到这样的问题,一些人在安装FME后,立刻开始用C++编程,做一些例如从Shape格式到KML的转换工作。

 

老兄,并不是我们有一个SDK工具,就意味着你要用它来解决一切问题。说真的,当你着手转换和变换空间数据的编程,你可能要考虑是否有效的利用了你的时间。大多数用户只要30秒的时间就可以用Workbench来完成从Shape格式到KML的转换。你是否真的需要采用Java花很多天来完成同样的事情。

 

此外,你可以在FME Server上面运行一个工作空间,但是你不可能用FME Objects的应用做同样的事情。

 

归纳起来,在Workbench中定义一个转换,比起从头利用开发来完成整件事情,是很灵活和高效的。并且FME2011有了更全新的方式来做这些。

 

首先,让我们回顾一下现有的方式。

 
 

命令行方式执行

由于FME运行方式的核心就是命令行方式,所以通过这一方式来执行一个工作空间是非常简单的。任何工作空间的运行窗口将告诉你一个命令应该是什么样子的。所以即使是没有编程经验的人(比如我自己),也可以很容易把一组功能包装成最终用户可以使用的界面。

 

 

FME Server运行

当你需要采用一个web页面来运行工作空间,FME Server是一个方法。把一个工作空间发布到FME server上是很容易的,因为有简单的API,这样可以很容易用URL进行一个转换。对于FME Server 2011,甚至可以使用REST方式。

 

IFMEWorkspace

由于没有一个可行的方法利用FME Objects来运行一个工作空间,因此对于程序化一个工作空间的运行是困难的,至少是没有一个简单和灵活的方法。所以你发现使用Workbench来定义转换,然后用自己的程序去运行这个转换是比较困难的。

FME 2011的新特性,即在FME Objects中提供了一个类(或者接口)IFMEWorkspaceRunner,如他的名字一样,是提供了一个方法能从应用中去执行一个空间转换。

 

查看API的文档(你必须要安装开发资源才能得到这些文档),位于FME安装目录下的\fmeobjects\cpp\apidoc\classIFMEWorkspaceRunner.html。这个文档提示这个类有8个公共参数,他们分别是:

 

IFMEWorkspaceRunner的方法:

Run(运行):只要使用一个默认参数就可以运行工作空间。

 

promptRun(提示运行):明显的,这个参数是给用户一个参数对话框来运行工作空间。

 

runWithParameters(带参数运行)一个重要的方法,可以传递参数给FME,这样就可以在你自己的应用中把获取/创建的参数传递给FME,而不是必须使用FME默认参数。

 

还有一点很重要,由于promptRun接受参数并且直接传递给FME,因此没有返回值。使用runWithParameters这种方法让你保留这些参数是如何设置的记录。

 

当然,除非你知道准确的参数及何种类型,否则你不能传递参数值到工作空间。这里还有一些方法来取回信息:

·getPublishedParamNames:这个方法让你获得工作空间的一组参数。

·getParamValues:这个方法是让你取得每个参数的值。

·getParamType:这个方法让你取得每个工作空间参数的类型。

·getParamOptional:这个方法是让你确定每个参数是否可选。

·getParamLabel:这个方法让你取得每个参数定义的名称文本。

·例子
IFMEWorkspaceRunner的一个例子,可以参阅FME Objects文件夹下的C++例子:

<FME>\fmeobjects\samples\Cpp\CppViewer\ViewerDoc.cpp

IFMEWorkspaceRunner在FME2011 beta 6458 builds及以上版本,可以使用C++,Java和.Net等开发环境。也希望在FME 2011正式发布版本中有可以使用Python来开发。

 

 

快速回顾!
问题:为什么IFMEWorkspaceRunner很重要?
回答:使用Workbench开发一个数据转换是比使用FME Objects进行编程来完成转换容易的多,IFMEWorkspaceRunner之所以重要,是可以让你在比较容易的环境下进行转换定制(Workbench),然后在其他应用中调用这个转换。

 

 
 

不要忘了……
有一系列FME用户会议在2010年10月。Don Murray,Mark Stoakes和Craig Vemon将会访问一些地区,进行一系列的演示。

猜你喜欢

转载自blog.csdn.net/fmechina/article/details/81215310