span8
span4
最近我经常和邮递员一起工作。该工具的一个很好的特性是您可以定义环境,例如。开发和生产。对于每个环境,您可以定义它自己的一组参数值。因此,当您在开发和生产之间切换时,url、userid和密码的值也会自动更改。
如何在FME中实现相同的行为?我希望有一个已发布的参数,让我在开发和生产之间进行选择,然后为url、用户id、密码和其他可能的参数设置正确的值。
我创建了一个已发布的参数环境(choice with alias,values prod and test)和两个私有参数:url_prod和url_test。
然后我创建了第三个私有参数url,一个脚本化的python参数,代码如下:
import fme env=fme.macrovalues.get('environment')如果env='prod':返回fme.macrovalues.get('url_prod')elif env='test':返回fme.macrovalues.get('url_test')
这很好,但是如果我有更多的参数可以设置,甚至有更多的值可以选择,就会有点混乱。
在这个例子中,我宁愿只有一个私有参数。这将是url(带有别名的选项)。我想根据已发布参数环境的值选择正确的值。
是否可以在运行时设置私有参数的值?python代码是什么样子的?
如果可以使用Web连接身份验证,那么可以为每个环境创建一个连接,并根据需要进行切换。
例如,如果要将FME工作空间移动到不同的机器上,那么可以在每台机器上创建一个名为MyConnection的连接(例如)。在机器A上,MyConnection中的参数指向开发环境。在机器B上,MyConnection中的参数指向生产环境。当您将工作空间从机器A移动到机器B时,因为连接名是相同的,所以它将只使用新的连接参数。
如果您停留在同一台机器上,但是指向不同的环境,那么您需要创建两个连接:MyConnectionDev和MyConnectionProd。要切换环境,只需切换连接即可。只要在工作空间中需要共享相同的连接,那么在使用该连接的任何地方交换连接。
我知道这只适用于ID/密码——不是你提到的url——但我认为这是一个需要注意的有用选项。
关于您的第二个问题,如果您可以选择使用Alias,并且它返回的是Dev或Prod,那么无论您在哪里使用它,都需要这些值(Dev或Prod),否则您将需要已经定义好的Python参数。您需要设置多少个环境值?如果只是ID、密码和URL,那么我将使用一个预定义的连接(如上所述)来设置ID/密码,而只使用脚本设置URL。
当然,另一个选项是不使用python参数,而是使用属性在工作区中完成工作。因此,如果使用alias的选项返回dev或prod,那么您只需使用该参数,并在工作区中处理查找。
例如,在httpcaller中,可以将url设置为条件值。条件可以是如果parameter=dev,则url=x,否则url=y。
不一定像参数那样好,因为它在整个工作区中都不可重用,但它确实避免编写任何脚本或创建多个私有参数。
©2019安全亚搏在线软件公司法律