通过单个MFX处理许多EDI文件
问题描述:
我在MapForce 2013中创建了一个映射并导出了MFX文件。现在,我需要能够使用MapForce Server运行映射。问题是,我需要指定输入EDI文件和输出文件。据我所知,使用模式是使用MFX中的输入/输出配置与MapForce服务器进行映射,而不是通过命令行传入。通过单个MFX处理许多EDI文件
我想我可以将输入/输出更改为某个标准文件名,然后在执行映射之前将输入文件写入该路径,然后在映射完成时从标准输出文件路径抓取输出。
但我宁愿能够做这样的事情:
MapForceServer run -in=MyInputFile.txt -out=MyOutputFile.xml MyMapping.mfx > MyLogFile.txt
是这样的可能吗?也许在映射中使用参数?
答
我在处理类似情况时遇到了两个选项。
选项1-如果在组件设置中将输入XML文件设置为* .xml,则mapforceserver.exe将自动处理该目录中的所有txt,前提是您的源代码是xml(这对文本应该是一样的)。与下面的示例类似,您可以设置清理例程,以在处理后将文件移动到另一个文件夹中。
注意:它在架构文件所在的文件夹中查找。
选项2 - 由于您的输出是XML,因此您可以使用Altova的raptorxml(架起另一个许可证费用)。现在你可以在XSLT 2.0中生成代码并使用批处理文件自动执行,就像这样。
::@echo off
for %%f IN (*.xml) DO (RaptorXML xslt --xslt-version=2 --input="%%f" --output="out/%%f" %* "mymapping.xslt"
if NOT errorlevel 1 move "%%f" processed
if errorlevel 1 move "%%f" error)
sleep 15
mymapping.bat
我抛出一个睡眠命令来循环批处理,以便每15秒重新检查一次。不幸的是,如果您的输出目标是数据库,则这不起作用。
最后一个提示之一就是......现在我身后好几英里的mapforce。要更直接地回答原始问题,只需使用*而不是源文件名,并且mfx将处理文件夹中的所有内容。 –