原文发布时间:2013-07-15
作者:一峰
我们在创建FME模板的时候经常会希望:模板能否在运行之前执行某些操作,运行成功之后执行某些操作,运行失败执行某些操作,(比如模板运行前连接数据库查询数据,模板运行成功之后清空表,运行失败之后发送通知)等,这些应用往往能够使我们的整个工作变得更加完整。也更符合实际应用的需求。
FME提供两种方式来实现模板运行前和运行后执行指定的操作:1.启动和关闭PYTHON脚本;2.FME模板嵌套
1. 启动和关闭PYTHON脚本
Fme提供了启动python脚本和关闭python脚本,提供模板在启动前和运行后执行一段python语句。
启动关闭脚本编辑器在:
Workbench->workspace parameters->advanced->stratup python script/shutdown pythons cript
更多的fme与python的介绍见如下博客:
https://blog.csdn.net/fmechina/article/details/81160169
https://blog.csdn.net/fmechina/article/details/81150507
https://blog.csdn.net/fmechina/article/details/81150555
2. FME模板嵌套
如果你不会python也想实现在模板运行前和运行后执行指定操作怎么办,你可以使用
WorkspaceRunner转换器,采用模板嵌套。
例如:我在执行一个模板前需要连接数据库激活视图,当模板运行成功后清空视图,如果模板运行失败,输出日志。
过程如下:
这里主要用到了WorkspaceRunner转换器,这个转换器用于调用其他模板,当调用的模板执行成功后会从successed端口输出一条记录,当调用模板运行失败后,从failed端口输出一条记录,这样我们就可以通过这个转换器来控制被调用的模板运行成功后执行什么操作,模板运行失败后执行什么操作了。
这里在调用模板前执行了一段SQL语句,用于连接数据库激活视图;被调用的模板成运行功后执行了一段SQL语句,用于清空视图;如果调用的模板运行失败,输出错误日志。