声明:尽管我这里的题目叫做 “EDI 技术浅述” ,并不表明EDI的确需要深邃的技术,只是说得好听一些,给人以高深的迷惑感 ^o^
1.EDI (Electronic Data Interchange 电子数据交换, 无纸贸易[金山词霸2003解释])
2.平文件:与计算机操作系统无关的电子数据文件
3.EDI报文
是通过电子媒质进行交换数据的文件,在这个交换数据的过程中,主要由两部分组成,格式和平台。
格式是指,报文的具体数据格式。平台是指报文应用的操作系统平台(但是大多数EDI报文都是以平文件的格式传输的,但是由于WINDOWS的存在,EXCEL等固定平台格式的报文也很常见)
4.EDI定义
EDI报文定义,就是指EDI报文的格式,这个格式是由贸易伙伴双方共同的一个约定。由于计算机的普及,现在联合国和交通部,都有对各种电子报文的格式定义,其中联合国标准我们通常称为EDIFACT。当然方便期间,你可以和你的贸易伙伴约定一个格式定义,但是这样在通用性方面就会大打折扣。所以我们建议使用联合国和交通部相关标准
5.一个通用的EDI接收验证发送模型--程序员最关心的问题
在开发交通运输方面的项目的时候,我们会经常涉及到对EDI报文的接收发送的问题
例如一个集装箱码头的生产管理,会涉及到与其它集装箱码头,集装箱公司,货物代理等之间的大量EDI数据的接收发送验证问题
但是由于EDI格式的不规范,和其它集装箱码头,集装箱公司,货物代理的不规范,及技术的不完善,以及EDI报文生成,及传输过程中造成错误的不可避免,仍然给EDI报文的接收验证发送工作造成了相当大的困难。其次就是对未知报文的接收验证发送,对程序员来说也是一个相当头痛的问题。
那么,怎样能够开发一个相对通用的EDI系统哪?下面给出了一个模型。
请对照(中华人民共和国海关舱单电子数据传输管理办法)
http://customs.huzhou.gov.cn/zcfg/hggz/ysgj/1.htm
?
或自行搜索(中华人民共和国交通部相关标准)
或联合国标准船图(P1)
阅读以下内容
第一部分:数据格式定义
由大约6部分组成:
(1)数据(报文)代码(商检报文,海关报文) 相当于一类图书的名称
(2)数据(报文)标准定义(商检验箱单标准,海关舱单标准) 定义的标准,相当于一个文学书籍中的一类,例如:古汉语文学,现代英语文学。当我们看到这个标准的时候,就知道,她的格式要么是汉字的,要么是英文的
(3)记录(海关舱单标准:提单头记录,提运单记录,提运单-集装箱记录) 通常一个标准中包含多个记录,如果只有一个记录,那么这是一个最简单的报文,也最容易处理,它如下格式
(4)字段 记录里的具体的具体内容,例如一个集装箱箱号MSKU1234567
(5)字段属性 我们用来接收(读取)这个字段内容时候的规则
(6)数据库表定义 我们要将数据读取到数据库中具体的哪一个表的哪一条记录的哪一个字段里?
在这一部分里面,最重要的是(3)和(5)两部分的内容,因为我们将在这两部分中定义读取规则.
▲记录:我们应该实现
1.按照什么来读一行记录?
A.按照长度(海关标准须如此)
B.按照一个具体的分割符号(联合国标准须如此)
C.按照开始的标志来读取(交通部格式须如此)
D.其他...(xml格式)
2.这种记录是不是循环的?这种记录是不是嵌套循环的?--怎么处理记录的循环?
A.按照一个标志(P1中的EQD就将告诉我们,一个段组循环开始(也就是记录循环.段组:嵌套循环的记录))
B.按照一个指定的数字循环(海关提运单)
其他...
▲字段:我们应该实现
1.读取到哪儿?
要能够设定读取到表中的哪个字段,这其中可能会出现越界
2.怎样读取?
A.按照长度读取(海关舱单只能这样)
B.按照标识读取
C.按照分割符读取(P1联合国应该如此)
例如:
NAD+CA+CMA:172:ZZZ'
LOC+147+0250702::5'
?NAD,LOC为记录标识,CA,147为字段具体值,用分割符(+)分割
注意CMA:172:ZZZ是NAD下面的一个嵌套,CMA,172,ZZZ是字段,由(:)分割,所以我们应该把NAD叫做一个段组
D.应该能够提供函数功能,
例如,
(A)重复设置函数,我可以重复的把CA插入表中的所有记录的一个字段中
(B)判断函数,当NAD记录的第一个字段中的数据等于CA的时候我就把CA转换成CN
(C)TRIM,LEFT,RIGHT,MID函数,截取字符串
(D)字段提取函数,在本来应该写入CMA的时候,我去提取CA的值,写入(这时候CA必须是已经读取过的,否则就会有问题)
(E)其他函数
通过以上的分析,我们会看到
是可以作到基本上通用的,但是其中的控制相当烦琐,具体细节过于纷繁,没有亲自分析过2,3种标准的更无从体会.
一点经验:
联合国的各种标准,最烦琐,因为要适应全世界吗!如果能够把联合过的标准疏通一遍,其他标准作起来就顺利的多了.
由于XML的发展,XML作为平台文件传输成为一种趋势