什么是XMLMap?
XMLMap 的主要功能就是完成两个不同XML文件的关系映射,在知行之桥 EDI 系统中,将XMLMap 的全部功能都集成在了 XMLMap 端口中。
在正式使用XML Map 端口之前,我们先来了解一下此端口的内部构造,和其他端口类似,XML Map端口的基础设置在 设置 界面,高级设置 则是我们的高级选项配置,自动化 界面可以设置自动发送文件以及配置性能相关的参数。输入/输出界面负责收发文件,事件 界面用来写触发事件的代码。
知行之桥操作手册——概览页面操作指南
接下来我将以接收Target 850采购订单为例,通过模板、Foreach Loops、取值映射以及映射逻辑这四个要点为大家展开介绍。
Templates 模板文件
任何XML映射的第一步都是上传代表源和目标 XML 结构的模板文件。
每个数据映射工作流都是以将企业现有的数据:文件、数据库表等转换为一个XML文件,我们将其命名为模板文件。
来自转换端口的模板文件
X12、EDIFACT 和 CSV 等转换端口会自动将文档转换为 XML。这允许端口轻松生成模板 XML 文件。
来自数据库端口的模板文件
SQL Server 端口、MySQL 端口和 CData 端口等数据库端口会自动生成其输入和输出映射的 XML 文件。
一旦你的数据都是XML的形式,你可以使用 XMLMap端口将一个XML模板映射为另一个XML模板。
在XMLMap端口中,设置 页面下的 源文件模板的选择取决于XMLMap端口输入文件的格式,目标文件模板的选择取决于 XMLMap 端口输出文件的格式。如果你在XMLMap 端口之后连接了数据库端口或者是应用程序端口,如:salesforce 端口,这些端口可以自动生成XML模板。
映射循环
数据映射过程中,需要处理重复的结构。首先需要确认的是你的数据当中有哪些结构是可以重复的。
例如:采购订单中可能会有多个订单行,发货通知当中可能会有多个包装。
需要找出你的 源 和 目标 中有哪些可以重复的结构。
我们以850采购订单为例,我们在XMLMap端口中可以看到,左侧:TX-00401-850表示一个订单,而下面的PO1Loop1则表示该订单下面的一条订单明细。
右侧可以看到:我们的po_header存放订单信息,po_detail中存放订单物料行信息。
因此需要将左侧的TX-00401-850信息拖拽至右侧的po_header,从而创建一个Foreach 映射。
接下来将左侧的PO1Loop1拖拽至右侧的po_detail,从而创建一个Foreach映射。
如果你还有其他需要重复的结构,也可以根据上述方式进行操作。
取值映射
当你完成了重复结构的循环映射之后,取值映射会相对简单一些。我们只需要确认左侧源部分的元素被准确地映射到右侧目标部分的元素中。
示例:源 数据中的BEG03,在 目标 数据中对应的是采购订单: purchase_order_number ,只需要选中左侧的 BEG03 拖拽至右侧purchase_order_number即可建立映射关系。
映射逻辑
Lookheads 用于区分数据中同样结构的多个副本。
示例:EDI 文档可能会包含多个公司或实体,例如:收货方、收款方等等。
在EDI 850 中,N1Loop1中包含了收货方信息。如果这个EDI850中还需要包含发货方信息,则会出现多个N1Loop1,这时应该如何进行区分呢?
可以通过N101的取值来进行区分,如果当前N1Loop1中表示的是收货方信息,则可以看到N101旁边的标识为ST。如果当前 N1Loop1中表示的是发货方信息,则可以看到N101旁边的标识为SF。
在右侧,我们可以看到我们创建了一个新的逻辑,表示在N1下当N101的取值为ST的时候,N102的取值被映射到了ship_to_Name中。我们可以根据需求,点击表达式编辑器对这个逻辑进行修改。
除了以上要点之外,XMLMap 端口中还可以支持条件语句,用于检查源XML中的两个值是否相等,也支持编写脚本来处理自定义用例。
了解更多 EDI 信息,请参阅: EDI 是什么?
阅读原文