李俚;程鑫;黄海院
【摘 要】针对物流服务交易平台与海关EDI通关系统没有对接,导致物流报关数据采集人工化以及通关效率低下等问题,提出基于XML的物流数据交换传递方法。该方法完成物流服务交易平台的物流报关数据批量提取、转换以及向报关企业的安全传递。同时,通过反序列化的方式解析报关企业的物流报关数据并自动提交至海关EDI通关系统,实现了物流服务交易平台与海关EDI通关系统的无缝连接,提高了货物的通关效率。%The logistics services trading platform hasn’t connected with the EDI customs clearance system yet,because of this,the customs declaration data of logistics needs to be gathered manually,and the efficiency of customs clearance is rather low.In view of this,the article puts forward an XML-based logistics data exchange and transfer method,which completes the batch extraction and conversion of the logistics declaration data come from the logistics services trading
platform,as well as the secure data transfer to customs brokers.Meanwhile, through deserialised means the logistics declaration data of the brokers is interpreted and then automatically submitted to EDI customs clearance system,thus achieves the seamless connection between the logistics services trading platform and the EDI customs clearance system,and raises the efficiency of customs clearance. 【期刊名称】《计算机应用与软件》 【年(卷),期】2016(033)006
【总页数】3页(P44-46)
【关键词】物流报关数据;数据交换;海关EDI通关系统 【作 者】李俚;程鑫;黄海院
【作者单位】广西大学机械工程学院 广西 南宁530004;广西大学机械工程学院 广西 南宁530004; 中国人民解放军76199部队 湖南 株洲412005;广西大学机械工程学院 广西 南宁530004 【正文语种】中 文 【中图分类】TP302.1
近年来,随着物流信息化的深入发展[1],物流服务交易平台在港口物流中扮演的角色日益重要,在一定程度上促进了港口进出口贸易的繁荣[2]。然而,货物通关效率却可能成为制约我国港口物流发展的绊脚石[3]。由于我国现行政策,海关EDI通关系统只有具备报关资质的报关企业才能申请使用。它没有完成与物流专业服务交易平台的系统对接,无法直接接受来自交易平台的物流报关数据。并且交易平台是分层分布式结构[4],数据离散性高,提取难度大。同时,因为交易平台与通关系统结构的差异性以及绝对的安全需求,数据的交换与传递存在很大的局限性[5],导致报关单的物流数据只能依靠人工采集,容易造成出错率高、报关周期增长等问题[6]。
针对这些问题,本文提出基于XML的物流数据交换方法,解决业务交易平台的物流报关数据批量提取、转换并安全传递到报关企业。同时,通过反序列化的方式将报关企业的物流数据自动提交至海关EDI通关系统,实现物流服务交易平台与海关EDI通关系统的无缝连接,提高了货物的通关效率。
数据交换方法的数据源来自物流服务交易平台。平台包含运输、商品交易、仓储、
报关等各种物流服务。每种服务都有对应的交易流程,用户在平台中可能扮演着多种角色。不同服务的交易流程可以相互串联,造成服务器数据存储繁杂,离散性高,直接从服务器提取报关数据效率较低。因此,选用C#中的SgmlReader类解析交易相关的表示层,使它转换成格式规范的结构。同时读取这些结构中的节点值进行数据的批量提取,将这些数据作为集合转换成XML,并自动传递至报关企业,最后转换为SQL数据提交至通关系统。 1.1 物流报关数据提取方法
物流服务交易平台包含着多种物流服务交易流程,不同服务的交易流程之间可以相互串联,导致数据存储位置不确定,提取效率低下。例如,平台客户完成一批货物的进口,可能经历商品交易流程、运输交易流程和报关交易流程,某些报关数据可能存储于其他流程中。因此,仅仅通过报关流程查询所有报关数据无法完成,而在数据层遍历所有交易流程的物流数据则使得查询任务过于繁重,难度较大。为了实现对平台物流报关数据的批量提取,创建以下数据模型来提高数据的提取效率。 可能与报关流程相串联的流程为商品交易流程和运输流程。引入对象数据集和数值数据集概念:
对象数据集:元素均为对象名称,如报关口岸、运输方式、运输工具等; 数值数据集:元素均为对象的数值,如广西东兴、江海运输、船舶等,对象数据集和数值数据值均为有序集合,且两者元素有对应关系。
定义商品交易流程的对象数据集、数值数据集、包含的报关对象数据集、报关数值数据集分别为S、Si、R、Ri;运输交易的对象数据集、数值数据集、包含的报关对象数据集、报关数值数据集分别为Q、Qi、P、Pi;报关交易的对象数据集、数值数据集、包含的报关对象数据集、报关数值数据集分别为A、Ai、C、Ci;目的对象数据集和目的数值数据集分别为B、Bi;已知合同协议号为xi,提运单号为yi,创建以报关单上所有对象为元素的对象数据集Z。由平台交易流程提取B和Bi的
过程,即数据模型如图1所示。
(1) 由已知条件xi查询商品交易流程是否在平台上存在,若存在,则定位流程所有的表示层;利用SgmlReader进行解析,提取其中对象数据集S={se:e∈[1,m]}以及数值数据集Si={ sie:e∈[1,m]},S与Si中元素位置对应,Si中元素为S中元素的值,若不存在,则直接为空集。
(2) 由对象数据集S与报关单对象数据集Z的交集获得商品交易流程包含的报关信息对象数据集R={Re:e∈[1,m]},即R=S∩Z。
(3) 由S与Si的映射关系,查询R中元素的值,得到商品交易流程包含的报关信息数值数据集Ri={ Rie:e∈[1,m]}。
(4) 由已知条件yi查询运输交易流程,同上最终可得运输交易流程中包含的报关信息对象数据集Q={Qe:e∈[1,m]}和报关信息数值数据集Qi={Qie:e∈[1,m]}。 (5) 因为报关交易肯定存在,直接依照上面方法可得报关交易中包含的报关信息对象数据集C={Ce:e∈[1,m]}和报关信息数值数据集Ci={Cie:e∈[1,m]}。 (6) 由R、P、C的并集得到目的结构数据集B={Be:e∈[1,m]},即B=R∪P∪C;Ri、Pi、Ci的并集得到目的对象数据集Bi={Bie:e∈[1,m]},即Bi=Ri∪Pi∪Ci。B中元素为报关单的对象,Bi中元素为报关单对象的数值。 1.2 物流报关数据转换方法
由于物流服务交易平台上数据的不确定性和不安全性,海关EDI通关系统拒绝接收物流服务交易平台上提取的数据集,从而报关单的申报必须人工手动采集,容易导致出错率升高、报关周期延长等问题,阻碍了货物的快速通关。实际上,海关EDI通关系统只能是具有报关资质的物流企业才能申请安装使用。因此,必须先将数据存储至报关企业的数据库S,然后提交至EDI通关系统进行货物进出口报关。 然而,由于数据集B与Bi存储于物流服务交易平台服务器中,数据库S与平台服务器无法连接,直接提取B与Bi存储至数据库S难以实现。针对此问题,将数据
集通过XML序列化转换成XML文档,经过加密的HTTPS协议将该XML文档传输至报关企业[7]。并由安装在报关企业上的软件数据转化工具进行XML反序列化,提取其中物流报关数据并存储至数据库S,最后提交至EDI通关系统。其中,序列化是指将对象的状态信息转换为可以存储或传输的形式的过程,XML序列化是指XML的公共字段和属性转换成可以存储的形式后,将提取的物流数据赋予XML中相对应的节点,最后生成XML文档[8]。与XML序列化相对应的即为XML反序列化,它可将XML流转换为数据流。XML序列化与反序列化相结合,可以轻松地在异构系统之间存储和传输数据。
数据模型的创建和数据的处理与传递结合形成物流报关数据交换方法,该方法通过C#语言编程实现。
2.1 数据交换方法的业务流程
数据交换方法的业务流程如图2所示。生成的XML经过加密的HTTPS协议传输至报关企业,由报关企业的数据转化工具进行解析。数据转化工具是一个简单的独立的软件,由C#窗体应用程序打包生成安装包,用户下载安装后进行使用,其核心功能为反序列化XML,提取物流数据提交至数据库。在数据提交至数据库前,该工具会进行目的数据表的判定,若目的数据表不存在,则创建数据表,提交数据;反之,则直接提交数据。
2.2 数据集向XML文档的转换实现
获得数据集B和Bi后,依照映射关系提取两数据集中的数据并保存至网格虚拟表MyTable。新建一个含有“Order”根节点的XML文档,加载该XML文档并序列化,添加以报关单中各个项目为名称的子节点,并由MyTable中的数据予以赋值。XML序列化以及节点赋值的关键代码如下: XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(System.Web.HttpContext.Current.Server.MapPath(″../hhy/″ +
CustomsForm));
XmlNode root = xmlDoc.SelectSingleNode(″Order″); XmlElement xe1 = xmlDoc.CreateElement(″CustomsForm″); xe1.SetAttribute(″需求商″, MyRow[2].ToString()); xe1.SetAttribute(″服务商″, MyRow[6].ToString());
XmlElement xesub1 = xmlDoc.CreateElement(″进口口岸″); xesub1.InnerText = MyRow[10].ToString(); xe1.AppendChild(xesub1); ⋮
数据转换完成后,得到的XML如图3所示,右图为展开后的商品信息图,是对左图的补充。 2.3 XML的传递
利用加密的HTTPS协议,实现生成的XML文档由物流服务交易平台向报关企业的自动传递。
2.4 XML的解析与物流数据的存储
软件数据转化工具将接收的XML文档反序列化,解析得到的报关单数据存入数据库,为提交至海关EDI通关系统做好准备。反序列化核心代码如下: OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog();
string loadFullName = ofd.FileName.ToString(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(loadFullName);
XmlNode root = xmlDoc.SelectSingleNode(″//CustomsForm″); XmlNode Port1 = xmlDoc.SelectSingleNode(″//进口口岸″);
string Port = Port1.InnerText.ToString(); ⋮
2.5 物流数据的提交
在数据库中提取数据提交至海关EDI通关系统,结果如图4所示,报关员核查后提交海关服务器。
本文论述了物流报关数据交换方法的研究与实现。在数据的处理中,创建了数据模型来进行物流报关数据在物流服务交易平台的批量提取,克服了数据的提取难度,提高了数据的提取效率;并利用XML的序列化与反序列化,实现了数据在异构系统之间的交换。目前国内关于物流服务交易平台和海关EDI通关系统之间进行数据交换的经验有限,但随着港口进出口贸易的发展和物流服务交易平台的大力推广,数据交换方法的设计与实现将会得到进一步的提升和完善。
因篇幅问题不能全部显示,请点此查看更多更全内容