通过单个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秒重新检查一次。不幸的是,如果您的输出目标是数据库,则这不起作用。

+0

最后一个提示之一就是......现在我身后好几英里的mapforce。要更直接地回答原始问题,只需使用*而不是源文件名,并且mfx将处理文件夹中的所有内容。 –