第1章物流系统与ERP集成接口方案
1.1. 接口方案说明
1.2. 消息整体框架
DAP 消息框架使用符合业界标准的XML格式用于包装业务数据,同时使用标准的HTTP 协议进行消息传递;
同时它还提供一整套用于保证消息可靠传递以及方便调用后台应用API 进行消息处理的工具与类库, 从而在最大程度上加速了特定应用消息服务器的二次开发。
DAP 消息框架提供了两种消息处理模式,实时与非实时;以下我们将详细介绍在处理实时与非实时消息时的系统架构。
1.2.1. 实时消息(请求)处理的基本架构
【功能简述】
实时消息处理架构最大的好处在于发送方(ERP系统)能够即时使得物流系统进行处理,并得到返回的信息。
其效果相当于在IE浏览器里,
提交一个查询请求,然后就可以得到相应的返回页面。
ERP系统通过HTTP方式访问物流系统消息服务器,并将XML格式的消息报文发送给消息侦听器。
消息侦听器解析消息报文,生成消息框架的消息对象,然后通过消息服务管理器查找特定的处理此类消息对象的消息服务,并将消息对象交由消息服务处理。
消息服务在接收到特定消息对象之后,从中提取业务数据,根据业务逻辑,调用物流系统相应的功能接口进行处理;消息服务在处理完毕之后,生成回发的消息对象,交由消息发送器通过Http回发予ERP系统。
实时消息处理框架的不利之处在于,当消息服务器同时接收到大量的请求时,会影响正常的物流系统运行。
解决的方法有两种:一种是不要将不需要实时处理的消息改为非实时消息,使得消息服务器可以在空余的时间内再做处理;另外一种是将消息服务器与物流系统部署于两个WEB服务器上。
【名词解释】
●消息侦听器DAPMessageListener
用来接收外部应用程序发来的DAPMessage, 总体控制DAPMessage到具体服务的分发。
●消息服务管理器DAPMessageServiceMgr
用来管理各种DAPMessageService, 如接单管理服务( OrderManagementService ), 等等…
●消息服务DAPMessageService
用来处理具体的DAPMessage, 目前分为实时和非实时(NRDAPMessageServiceMgr)两种。
消息服务相当于一个适配器,将外部的数据转换成系统内部所识别的业务数据,并调用系统内部的功能接口处理转换后的业务数据。
●消息发送器DAPMessageSender
主要用于发送DAPMessage给外部应用程序, 外部应用程序也可以用它发送DAPMessage给我们的DAPMessageListener。
【功能简述】
本架构的重要作用是将消息缓存起来,然后交由非实时消息处理线程进行统一处理,对系统的性能影响较小。
非实时的DAPMessageService接收从DAPMessageListener分发过来的消息对象, 直接交于DAPMessageMgr进行入库(InputDAPMessage),同时返回‘是否收到DAPMessage’给DAPMessageListener
不利之处在于发送方不能得知接收方将于何时对所发送的消息进行处理,因此要求非实时消息必需是不会影响发送方当前的业务流程的消息。
【名词解释】
非实时消息服务NRDAPMessageService
继承了DAPMessageService,用来处理具体的非实时DAPMessage。
【功能简述】
在“非实时消息接收的基本架构”中,接收到的非实时消息保存于数据库中。
在“非实时消息处理的基本架构”中,将会由非实时消息读取线程式从数据库中读取相应消息对象,并交由各自对应的消息服务进行处理。
消息服务处理完之后,将会产生相应的回发消息对象,发送予ERP系统的消息服务器。
如果发送不成功,消息发送器会保存消息对象,交由“发送请求”线程进行再次发送。
【名词解释】
ERP系统的消息服务器
是一个与物流系统消息服务器类似的,用于接收和处理消息的WEB 服务器。
不同之处只在于其消息服务部份,是针对于ERP系统所定制的消息处理器。
非实时请求消息读取线程(InputDAPMessageThread) 以固定的时间间隔(T),从消息管理器中循环读取数据库保存的未处理消息对象,并交由特定的消息服务处理。
处理完固定数目(N)的BackupInputDAPMessage后,睡眠固定的时间间隔(T)。
1.2.4. 发送消息的基本架构
【功能简述】
物流系统功能模块将业务数据交予对应的消息服务,消息服务将业务数据转换成相应的消息对象,并交由消息管理器将消息对象标记为“未发送的消息对象”保存。
非实时消息发送线程通过消息管理器从数据库中读取未发送的以及发送失败的消息对象,交由各自对应的消息服务进行处理。
消息服务处理完之后,将会产生相应的消息对象,交由消息发送器发送予ERP系统的消息服务器。
【名词解释】
非实时响应消息发送线程(OutputDAPMessageThread) 以固定的时间间隔(T)循环遍历OutputDAPMessage表,处理完固定数目(N)的BackupOutputDAPMessage后,睡眠固定的时间间隔(T)。
1.3. 业务接口的基本架构
DAP 根据以往在物流系统与ERP系统广泛集成的经验基础上,总结出成功集成的关键在于:
1) 基础数据必须实现实时同步;(基础数据并不会进行频繁的修改,
因此实时同步并不会影响系统效率)
2) 订单流程必须在非实时交互模式下实现无缝集成。
(订单的业务操
作十分频繁,因此需要利用非实时的模式进行异步同步,以提高系
统效率,同时可以通过调整传输频率,以达到令人满意的订单同步
频率)
其它的数据集成还包括产成品入库流程集成、库存调整同步等多种数据集成,在本方案中,着重就基础数据同步和订单流程集成进行讨论。
1.3.1. 基础数据同步接口
基于以往的设计经验与目前技术上实际情况,不建议多个系统共用一个数据库,因为这会引发数据库性能与系统灾难性故障时修复的难度。
因此ERP系统与物流系统各有自己的数据库。
为了使两个系统中的基础数据不会引起岐义,ERP系统与物流系统中使用的基础数据必须有同步。
步可以分为两个步骤进行:一是系统初始化时的同步,二是系统运行时的同步。
【系统初始化时的同步】
系统初始化时的同步,指的是物流系统未开始正式运行以前,将ERP系统的基础数据导入到物流系统的数据库中,以使物流系统在正式运作时使用的基础数据与ERP系统是一致的。
同步的方法有很多种,可以根据实际的情况选用。
●使用数据库工具进行数据的导出/导入
目前各类成熟的数据库产品都具备了相应的导出与导入工具,可以生成文本、SQL、Excel等各种数据文件,并从所支持的数据文件中导入数据。
●物流系统中使用Excel报表进行导入。
DAP平台提供了从Excel报表进行导入的良好支持,可以根据客户已有的Excel或其它样式的电子文档转化成相应的Excel电子文档,然后通过微量的代码开发即可以将Excel中的数据保存于物流系统的数据库中。
【系统运行时的同步】
系统运行时的同步,是指物流系统与ERP系统在正式运行以后,两个系统之间的基础数据维护,将会自动影响另一系统的基础数据。
假设以ERP系统中的基础为准,则在ERP系统中对各种类型的基础数据进行新增、修改、删除等操作时,将会产生相应的XML消息报文,发送予物流系统的消息服务器。
消息服务器(物流)在接收到消息报文时,将会调用相应的基础数据消息服务进行处理,对物流系统中的基础数据自动进行维护,并在处理之后返回确认消息予发送方ERP系统。
1.3.
2. 订单流程集成接口
【流程概述】
在ERP系统中生成的发货通知单,是通知物流公司发货的凭证,也是ERP系统与物流系统至为最要的数据交换接口。
库存数据以物流系统中的为基准,发货通知单的生成必须基于物流系统的可用库存。
因此需要在物流系统中查询可用库存的接口。
ERP系统也可以有自己的库存数据。
ERP系统中的库存数据必须及时根据物流系统中的库存变化作出更新。
在ERP系统中要提供处理库存变化的接口,以同步物流系统中的库存数据。
如果两个系统中经常存在库存数据差异,还需要通过其它功能模块进行库存差异分析。
ERP系统中需要监控发货通知单的执行状态,因此需要提供商家接收、订单完成等消息接口,由物流系统调用,需要视企业的具体业务需求决定创建多少个接收订单状态变化的接口。