前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么EDI方案工作流中围绕XML做EDI报文数据解析/生成?

为什么EDI方案工作流中围绕XML做EDI报文数据解析/生成?

原创
作者头像
EDI顾问-杨欢
修改于 2020-04-03 02:51:43
修改于 2020-04-03 02:51:43
65700
代码可运行
举报
运行总次数:0
代码可运行

经常有人问起,为什么在处理EDI文件时不一次到位,而需要使用多个端口来分次进行处理呢,是不是想要多占用几个端口呀?

实际上,在一开始EDI产品的功能还没有这么完善,当时只支持EDI常见的传输协议,那个时候我们在做报文翻译时,还不能仅通过简单的配置来实现,需要手写代码,去读取报文,然后获取每一行的数据,再逐一去读对应的业务值。参考之前的实施经验,觉得实施过程漫长、前期开发代码量大、后期维护成本也高,经过产品部门多次考量,在一次次的产品升级过程中,不停的进行功能新增、完善,才形成了现在这样的一套报文处理模式。

那么,到底是不是直接对报文进行处理更简单呢?

假设我们现在通过AS2传输,接收850采购订单EDI报文,采用自定义XML方案。

直接处理EDI报文

我们来回顾一下直接处理业务报文的步骤:

首先,通过AS2收到850采购订单后,要直接进行处理,完成报文翻译,我们的代码逻辑大约如下:

  1. 先读取当前850采购订单报文的内容
  2. 对内容进行分割,将850采购订单的内容按照节点分割,例如:ST节点,BEG节点等等,每个节点代表不同的信息
  3. 开始逐一读取节点,匹配节点所属的业务含义,并将每个节点中的详细业务数据读取出来
  4. 一边读取数据,一边输出自定义XML
  5. 调试程序,确认业务逻辑和取值正确

以上步骤中我们可以看出,所有的处理都要使用代码来实现,那么代码量一定是非常大的。同时,因为EDI报文中数据比较多,而且结构复杂,所以代码逻辑也会非常复杂。在初步完成代码之后,后续的业务测试过程中,若是因为对EDI报文理解不到位,想要修改某一部分的处理逻辑或是取值方式,将会造成很大的工作量,而且往往都是牵一发而动全身,修改可能会造成其他本来正确的数据出错。同时,在切换生产环境之后,如果贸易合作伙伴对EDI规范做了某些升级或者调整,后来的维护人员需要将整个的代码整体通读一遍,完全理解之后,才能进行修改。

分步处理EDI报文

如果在目前的知行EDI产品中,我们分多个端口去完成报文翻译,每个端口都只负责各自的功能部分,那么整体步骤如下:

  1. AS2端口收到850采购订单后,直接转发到X12端口(直接配置实现)
  2. X12端口将EDI报文转换为标准XML,并转发到XMLMap端口(直接配置实现)
  3. XMLMap端口通过界面拖拽,并辅以少许简单code,实现转换为自定义XML文件(简单coding)

以上步骤中我们可以看出,通过这种方式,一方面,代码量非常少,大家知道,写的越多,容易出错的地方越多,代码量少了,大部分功能依赖于产品,所以出错概率会降低。如果有EDI报文结构更改或是升级的情况,前两步我们不用做任何修改,只要在最后一步,仅修改需要调整的部分即可。

标准XML文件

在知行EDI系统中,几乎所有的EDI报文处理都是以标准XML文件为媒介的。

XML(可扩展标记语言)是一种标记语言,提供了一种简单,灵活的文本格式。XML描述文档的数据结构,并为所有其他规范提供通用语法。XML的主要应用程序之一就是处理B2B和B2C数据交换。

这是部分EDI报文采购订单和标准XML采购订单:

850 原始EDI文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
BEG*00*DS*0476696888**20150708~
REF*SB*ZZ11~
REF*6P*ZZ~
...

经X12端口标准XML:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
<BEG type="Segment">
    <!--Transaction Set Purpose Code-->
    <BEG01><!--Original-->00</BEG01>
    <!--Purchase Order Type Code-->
    <BEG02><!--Dropship-->DS</BEG02>
    <!--Purchase Order Number-->
    <BEG03>0476696888</BEG03>
    <!--Release Number-->
    <BEG04 xsi:nil="true"/>
    <!--Date-->
    <BEG05>20150708</BEG05>
</BEG>
<REF type="Segment">
    <!--Reference Identification Qualifier-->
    <REF01><!--Sales Region Number-->SB</REF01>
    <!--Reference Identification-->
    <REF02>ZZ11</REF02>
</REF>
...

我们可以看出,标准XML包含解释每个节点含义的注释。最重要的是,对于标准XML文件,可以直接将其映射到目标格式,而不必查找EDI文档中每个节点的含义,只需参考标准XML文档中提供的说明和贸易伙伴提供的规范即可。

显而易见,在处理EDI报文时,并不是直接对EDI报文进行处理一步到位就更好。先将EDI报文转换为标准XML,再对标准XML进行后续处理存在以下优点:

  • 代码逻辑简单,工作量较小
  • 可以自动检查贸易合作伙伴传来的EDI报文是否符合国际标准
  • 易于调试,进行业务测试
  • 易于后期维护
  • 易于和其他目标格式文档做转换,比如自定义XML,CSV,PSV,Excel等
  • 增加功能模块的独立性,降低耦合性

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
伟创力Flextronics EDI 850订单详解
伟创力Flextronics EDI项目,报文标准包括了X12和EDIFACT两种。
知行软件EDI
2022/05/24
8210
伟创力Flextronics EDI 850订单详解
如何在EDI系统中区分Target发给不同店铺的订单?
塔吉特Target与供应商传输的是X12标准报文,业务类型包含850(采购订单)、860(订单变更)、864(文本消息)、856(发货通知)和810(发票)。
知行软件EDI
2022/05/09
6470
如何在EDI系统中区分Target发给不同店铺的订单?
[EDI 案例] 汽车地带/Autozone EDI解决方案
“汽车地带”(AutoZone)是美国最大的汽车修配连锁品牌,Autozone的前身Auto shack建于1970年, 1979年开设了其第一家店,并命名为“汽车小屋”,1987年更名为“AutoZone”。 其连锁卖场主要集中于美国东部及西海岸经济较发达城市。主要经营汽车配件、维修器件等,同时也提供汽车信贷服务、销售汽车诊断和修理软件。AutoZone继续将发展重心放在提升配送中心的效率方面。 2016年开放五个超级枢纽之后,2017年新增五个超级枢纽。 AutoZone是美国一家领先的汽车配件零售商和分销商,在北美地区拥有大约5700多家分店,其销售的产品范围非常广泛,每一家分店都有针对轿车、越野车、货车和轻型卡车的新旧汽车零部件, 一些分店还有汽车贷款和向美国各地的修理厂等商业客户提供配件等业务。
EDI顾问-杨欢
2020/04/20
8600
Babylist EDI 需求详解
Babylist 是一个为准父母提供方便和灵活的婴儿注册服务的平台,帮助他们准备迎接新生儿的到来。Babylist 与各种不同的品牌和零售商合作,包括婴儿用品、玩具、衣物和其他相关产品的制造商。用户可以在 Babylist 上浏览各种不同的产品,并根据自己的需求和喜好选择适合的项目。本文将带大家了解 Babylist 的 EDI 需求,快速理清 EDI 对接思路。
知行软件EDI
2023/07/03
3720
Babylist EDI 需求详解
如何与沃尔格林Walgreens建立EDI连接?
沃尔格林Walgreens从1901年芝加哥一个家庭作坊式的小店开始,经历了百年沧桑,如今已经拥有4000多家连锁药店,在自己100多年的发展历史中年年赢利,创造了连续100多年的赢利神话。
知行软件EDI
2023/01/03
4060
如何与 MACOM 建立 EDI 连接?
MACOM提供高性能射频,微波和毫米波器件,其产品广泛应用于通信,航空航天,国防和工业市场。近年来MACOM在中国地区的业务一直高速增长。
知行软件EDI
2023/04/17
1.3K0
如何与 MACOM 建立 EDI 连接?
Lids EDI 850 订单详解
Lids是一家专门从事运动帽销售的美国零售商,在美国、波多黎各、加拿大和英国设有商店。Lids与其供应商之间,传输X12标准的报文。对供应商而言,需要接收Lids发来的EDI 850订单。在此前的文章 如何读懂X12 中,我们对X12已经做了详细的解读,接下来让我们以 Lids EDI项目中对EDI 850订单的处理为基础,开始深入了解850订单。
知行软件EDI
2022/06/07
4230
Lids EDI 850 订单详解
如何监控文件已成功通过EDI系统发给客户(三)-997回写
今天继续给大家分享继邮件通知、数据库状态回写后的第三种监控文件发送状态的方案:通过监控997功能性确认文件,进行数据状态回写。
知行软件EDI
2022/09/21
4140
如何监控文件已成功通过EDI系统发给客户(三)-997回写
如何与安森美Onsemi建立EDI连接?
安森美半导体(ON Semiconductor)是应用于高能效电子产品的首要高性能硅方案供应商。其产品包括电源和信号管理、逻辑、分立及定制器件,帮助客户解决他们在汽车、通信、计算机、消费电子等领域的独特设计挑战。近期我们帮助客户成功与安森美Onsemi建立EDI连接,实现自动化地业务数据传输。
知行软件EDI
2022/10/25
5160
如何与安森美Onsemi建立EDI连接?
Rockwell EDI 850 采购订单报文详解
罗克韦尔(Rockwell)自动化(中国)有限公司(NYSE: ROK)是全球最大的致力于工业自动化与信息化的公司,致力于帮助客户提高生产力,以及世界可持续发展。罗克韦尔自动化总部位于美国威斯康星州密尔沃基市,在全球80多个国家设有分支机构,现有雇员约22,000人。
知行软件EDI
2022/11/21
5720
沃尔玛Walmart EDI 850订单详解
沃尔玛百货有限公司,是一家美国的世界性连锁企业,以营业额计算为全球最大的公司。连续 7 年在美国《财富》杂志世界 500 强企业中居首位。沃尔玛公司有 8500 家门店,分布于全球 15 个国家。沃尔玛在美国 50 个州和波多黎各运营。
知行软件EDI
2022/08/12
1K0
沃尔玛Walmart EDI 850订单详解
Lids EDI项目案例
Lids是一家专门从事运动帽销售的美国零售商,在美国、波多黎各、加拿大和英国设有商店,大多数开设在大型购物中心和工厂直销中心。如何成功与Lids建立EDI连接并实现自动化地收发业务文件呢?
知行软件EDI
2022/08/16
8800
Lids EDI项目案例
渔具界的沃尔玛Bass Pro Shops
Bass Pro Shops(以下简称Bass Pro)自 1972 年开始营业,现在在北美拥有 100 多家商店,几乎在美国每一个城市都有分布。每年接待超过 1.2 亿游客,可以说是户外爱好者的“迪士尼乐园” 。
知行软件EDI
2022/06/06
7020
渔具界的沃尔玛Bass Pro Shops
MACOM EDI 需求分析
企业应该如何与 MACOM 建立 EDI 连接呢?在开始 EDI 项目之前需要先确认 EDI 需求,包括:传输协议以及报文标准等信息。
知行软件EDI
2023/07/31
2160
MACOM EDI 需求分析
零售行业R公司对接亚马逊Amazon Device EDI项目案例
为了满足平台货物的多样性,亚马逊Amazon邀请了来自全球各地的优秀供应商加入其供应链体系。要管理如此庞大的供应商群体,需要完成大量的数据处理工作,位列世界500强的Amazon是如何传输这些数据的呢?
知行软件EDI
2022/12/28
4700
和Yageo国巨做EDI连接应该做何准备呢?
Yageo国巨股份有限公司(以下简称Yageo)创立于1977年。为台湾第一家上市且第一大无源元件供货商、世界第一大专业电容器制造厂,是一家拥有全球产销据点的国际化企业。
知行软件EDI
2022/06/20
3740
和Yageo国巨做EDI连接应该做何准备呢?
对接莫仕Molex EDI项目案例
莫仕(Molex)公司是领先的全套互连产品供应商。拥有10万多种性能可靠的产品,居于世界最大产品规模之列,包括电子、电气和光纤互连解决方案、开关和应用工具等。
知行软件EDI
2022/04/25
8660
对接莫仕Molex EDI项目案例
汽车EDI:如何与Stellantis建立EDI连接?
Stellantis 是一家实力雄厚的汽车制造公司,由法国标致雪铁龙集团(PSA集团)和意大利菲亚特克莱斯勒汽车集团(FCA集团)合并而成,是世界上第四大汽车制造商,拥有包括标致、雪铁龙、菲亚特、克莱斯勒、道奇、Jeep、阿尔法罗密欧、兰博基尼等30多个知名品牌。
知行软件EDI
2023/05/30
4150
汽车EDI:如何与Stellantis建立EDI连接?
Amazon Device EDI 数据库方案开源介绍
近期为了帮助广大用户更好地使用 EDI 系统,我们根据以往的项目实施经验,将成熟的 EDI 项目进行开源。用户安装好知行之桥EDI系统之后,只需要下载我们整理好的示例代码,并放置在知行之桥指定的工作区中,即可开始使用。
知行软件EDI
2023/06/06
5410
Amazon Device EDI 数据库方案开源介绍
Reinhart FoodService的EDI需求详解
Reinhart FoodService是一家成立于1972年的美国食品服务公司,隶属于上市公司Performance Food Group。Reinhart FoodService为餐馆、酒店、医院、学校等各类机构提供广泛的食品选择和相关服务,产品包括新鲜的肉类、禽类、海鲜、奶制品、烘焙用品、蔬菜和水果以及包装食品、饮料和清洁用品等。除此之外,Reinhart FoodService还提供顾问和培训等增值服务,以帮助客户提高经营效率和利润。公司的使命是提供高质量的食品和服务,帮助客户在竞争激烈的市场中获得成功。
知行软件EDI
2023/05/05
3480
Reinhart FoodService的EDI需求详解
相关推荐
伟创力Flextronics EDI 850订单详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验