西班牙
斯潘4
嗨,我有一个这样的FMW文件列表:
我想使用fme工作区(fmw)阅读器浏览和提取一些数据或每个fmw。
为此,我创建了一个工作台“fileproperties.fmw”,它使用fme workspace(fmw)reader获取工作台的功能类型fileproperties并将数据放入csv。
然后,因为我想将这个过程应用于多个工作台,而不仅仅是一个工作台,所以我创建了一个单独的工作台“runworkbench.fmw”,它使用一个WorkspaceRunner为列表中的每个文件运行fileproperties.fmw工作台。列表的每一行都用作变量,因此fileproperties工作台分析列表中的每个fmw文件并将数据提取到csv中。
在WorkspaceRunner配置中,我运行fmw_properties.fmw。WorkspaceRunner知道每次要分析哪些工作台,因为在fmw_properties.fmw中,我创建了一个已发布的参数,该参数将通过要分析的工作台。
这是我如何在fmw_properties.fmw中设置已发布参数的方法:
工作流的逻辑是正确的。亚搏在线然而,当运行它时,它开始读取文件,并最终开始发送错误和警告,最后以某种“内存不足”消息崩溃。对于哪些工作区失败,哪些工作区成功,还没有一个明确的模式。他们中的一些人总是工作,有的只是偶尔崩溃,有的总是崩溃。已经检查了那些失败的并且在这些工作区中显然没有错误,其中一些显然非常简单。
另外,对于一些失败的工作区,分别运行fileproperties.fmw,它们运行得非常好。
不知道这里发生了什么,从workspacerunner运行fme workspace reader时似乎效率很低。我很惊讶阅读fme工作台会消耗大量内存(它没有反映在windows任务管理器中)。
想问一下是否有其他方法可以做到这一点,或者是否有其他人发现了WorkspaceRunner/FME工作区阅读器的类似问题?还有,不知道我是不是做错了什么…我是否正确设置了已发布的参数?
另外,我对阅读这些工作台中的其他特性类型很感兴趣,但甚至不能使这个基本特性(fileproperties)工作,它只是几个字段。
我们目前的产品是FME 2019.0 19246
我把两个工作台连在一起。
嗯。这是我以前从未听说过的,我可能是保险箱里用这个阅读器最多的人。亚搏在线我已经试过你的方法了,似乎对我很有效。
在WorkspaceRunner (wait for completion = yes)中一次只运行一个工作区,所以我认为内存不足的错误是一堆胡扯。你有多少内存,你有什么Windows版本?这可能会产生影响。
我有几个猜测。首先,问题在于路径是如何传递的——我在unc路径中尝试过,但是效果很好,所以可能路径中的某些东西是不同的(空格?)
另一个猜测是编码。也许文本文件有一个奇怪的编码,或者它有一个BOM字符,FME读取并试图解释为一个文件名?也许是行尾标记出了问题?基本上,这些都可能损坏文件名,尽管我希望出现一个简单的“文件未找到”问题,而不是“内存不足”问题。
我通常更喜欢Itay使用的技术(目录/路径读取器),但是我想深入了解一下你的文本文件问题。
你能试着把这个过程分成几个步骤吗?步骤1:可以使用FMW阅读器使用数据检查器读取失败的工作区吗?如果不是,那么我们知道读者就是问题所在。
步骤2:如果步骤1有效,您可以自己运行helper(子)工作区吗?这工作吗?
步骤3:如果步骤2有效,那么再次尝试WorkspaceRunner,但是要硬编码文件名(不要从txt文件中读取文件名,也不要将其设置为WorkspaceRunner参数中的属性)。
基本上是一点一点地缩小范围,看看哪里出了问题,看看是否一致。
否则....嗯,“内存不足”的错误通常是我们的问题,所以请随时与我们一起记录一个支持案例(亚搏在线safe.com/support我们将更加努力地诊断和复制这个问题。
查看完整的日志文件(特别是告诉我们系统信息的头部分)并可能获得文本文件的副本,看看是否有什么奇怪的地方,这将很有帮助。
嗨@ mark2a亚搏在线tsafe谢谢你的建议。在与许多错误作斗争之后,我最终遍历了每个工作台,将其保存在当前的FME版本中,升级了所有转换器,还用更新的版本替换了读取器。在这之后,我得到了更少的错误,但也得到了一个新的机器W10/64bit改进规格(以前的规格是W7/32bit),现在这个阅读器工作得更好。虽然每个工作台的运行速度仍然有点慢,但至少它不会因为内存资源而随机崩溃。
所以我认为这是一个问题的组合:从使用旧读卡器和变压器的旧工作台,到糟糕的机器/设置。
不是更好用,谢谢。
我已经用workspacerunner测试了您的解决方案,可以确认某些工作空间出现错误。
实际上,您并不真正需要父-子方法,您可以在一个工作区中使用目录和文件路径名阅读器和FeatureReader来读取工作区。
这里我正在读取所有的工作空间特性类型,您可以调整为只读取您感兴趣的类型,或者为将来的灵活性保留通用端口。
希望这有助于
待会
嗨@itay,
谢谢你的回答。我也尝试了您的方法,阅读工作台中的所有或部分功能类型(因此使用通用输出端口或特定的输出端口)。但是,这样做也会导致FME由于多个错误而崩溃。从“错误运行翻译”到“FME EXE已停止工作”提示,再到更复杂的错误消息。现在出现了,正在读精细与以前的方法工作区这些错误。
也注意到,不能在该变压器使用多种输出端口。阅读过程变得很不可能,又显然是由于阅读一个FME工作区效率低下。
米克尔
?2019安全亚搏在线软件公司|合法的