span8
span4
在自定义转换器中,我必须在几个地方使用已发布的参数。参数从主工作区传递。我使用日志记录器进行了检查,我发现这个值出现在自定义transformer工作流的开头,但是当继续执行时,它就被删除了(我不知道是什么原因导致的,因为我知道发布的参数是只读的)。亚搏在线
所以,我认为混淆的原因是,当您创建一个自定义转换器时,它就像拥有一个单独的工作区。它有自己的参数,它们与主工作区中的参数不同。因此,参数确实保持其值(它们绝对是只读的),但我怀疑您正在查看两个不同的参数。
我做了一个短片来证明这个事实:https://www.screencast.com/t/QHJKlRk2bcO2
因此,在主工作区中有$(MyName),而在自定义转换器中有类似于$(MyName)的内容。但是在FME中,自定义转换器中参数的实际名称是$(TransformerName_WorkspaceName)_MyName。
我认为您是在主工作区中设置了$(MyName),而不是在自定义转换器中。当您在工作区中读取$(MyName)时,它有一个值,但是当您试图在自定义转换器中读取它时,FME会说它是空的。这是因为FME将$(MyName)替换为$(TransformerName_WorkspaceName)_MyName并返回一个不同的参数值。
我知道这可能会令人困惑,也许我没有很好地描述它(试试视频,事情会更清楚)。简而言之,重点是这样的。如果您希望用户在运行时设置一个参数的值,并让它在自定义转换器中可用,那么您要做的是:
现在这两者是相互联系的。在我的视频中,Workspace:MyName_2链接到Transformer:MyName1。无论用户在运行时进入工作区(MyName_2)的是什么,都会传递给自定义转换器(MyName)。
我希望这有助于解释。另外,您对fme_feature_type的理解是正确的。它是一个属性(不是参数),因此可以更改。当您使用FeatureReader转换器时,输出将被标记为从FeatureReader中读取的特性类型。“发起者”特性将保留它们已经拥有的fme_feature_type值。
事实上,自从上次更新以来,我最近一直面临这个问题。
我有很多脚本通过发布的参数传递值。
现在却空空如也。除非我真的把它们检索到属性中(as)@Mark2At亚搏在线Safe指出)
我不得不更换两个工作台后,是(请不要评论)是保存他们没有备份..
您说的对,发布的参数是只读的。它们是在您按下运行按钮时设置的,在转换期间不会/不能更改。
所以…我想知道您在哪里以及如何获得发布的参数并记录其内容。我看到了千变万化的现实版变形金刚,这总是让我好奇。它们依赖于与您预期完全一致的特性流,但情况并非总是如此。
哦,我不知道…在创建自定义转换器时,可以选择让FME使用参数处理所有使用的属性。如果这样做,那么FME将创建一个已发布的参数,但是您不需要使用它。不管输入的是什么,都应该使用属性名。当运行时,FME会自动用参数替换该值。
例如,我有一个LabelPointReplacer转换器,它使用一个名为MyAttr1的属性创建一个标签。如果我由此创建一个自定义转换器,那么FME将在该转换器中生成一个名为MYATTR1的用户参数。但是,LabelPointReplacer仍然指向名为MyAttr1的属性。FME在运行时执行替换。
即使我回到主画布,将自定义Transformer参数更改为使用MyAttr2,自定义Transformer中的LabelPointReplacer仍然表示它使用的是MyAttr1。实际上,它仍然链接到MYATTR1参数,该参数现在指向MyAttr2。
我想知道您是否正在查看自定义转换器中生成的用户参数。最好使用它所指向的属性,而不是引用该参数。我想知道这是不是你没有得到你想要的价值的原因。
©2019安全亚搏在线软件公司法律