第 5 章 基于 O2O 模式的小城镇超市物流信息服务系统主要功能实现
基于 O2O 模式的小城镇超市物流信息服务系统的主要功能实现是将第四章系统分析中的需求及功能等通过对 Web 的信息集成完成对数据的交换与共享以及原型系统展示来说明系统的主要功能,实现系统分析阶段所提出的将小城镇超市与电商企业、物流服务商相衔接的物流信息服务系统。
5.1 物流信息服务集成的功能实现
5.1.1 基于 Web 服务的集成模式
物流信息服务集成是以资源信息共享为主线,为小城镇超市与电商、物流服务商的相对独立的系统提供相互数据交换服务,系统之间通过统一规范的接口进行数据交换,小城镇超市及物流服务商在电商的监管下为整个城镇间物流运作提供相应服务。根据第四章的系统分析,本文涉及的具体功能实现见图5.1。【1】
在基础功能层中主要通过运载工具管理、货物管理和条码技术、GPS 技术等实现对物流系统基础数据的采集。作业管理层中主要由作业环节相关系统组成,主要针对订单处理、城镇间货物交接、线上线下协同库存调配、在途运输环节展开。这些信息系统在基础功能层的支持下承担作业管理中的信息处理任务。信息中心层中作为信息交换、控制和技术支持的中心,支持对电商企业和物流承运商系统的信息流通。企业层中由电商企业和小城镇超市等物流承运商构成,在信息共享技术的支持下,完成城镇货物的物流作业管理,进行相关信息查询,完成线上线下协同库存调配等业务。
根据上述功能需求为小城镇超市、电商企业、物流服务商系统之间提供信息服务动态调用、互相访问与应用集成服务。Web 服务建立在开放标准和独立于平台的协议之上,通过 Http 使用 SOA,SOA 是在各种分布式环境中将各种业务功能都以服务的形式提供给用户,供其查询和调用,以便在服务提供者和使用者之间进行通信。服务通过 WSDL 定义的接口来公开, XML 定义WSDL 的语义。UDDI 是一种与语言无关的协议,用于和注册中心进行交互以及查找服务,通过 Web 服务的组合和编排可以实现信息化业务流程。
通过基于 Web 的标准将来自同构或异构的小城镇超市、电商企业及物流服务商的数据源进行处理,将不同的数据源封装成一个统一格式的数据接口,存储于共享数据库中接受业务服务层的调用。
在业务服务层中包括 Web 服务组成和具体的业务功能模块[59]。它在基于Web 服务的集成系统中起到向上提供各参与方访问、查询物流信息数据的统一接口和查询结果,向下调用小城镇超市、电商企业及物流服务商的共享数据库资源。基于 Web 集成技术的物流信息服务系统提供城镇间货物交接、线上线下协同库存调配、城镇间在途运输等信息,实现各系统中的异构数据的访问、查询和交互。使得各方只需将这些功能通过协议调用 Web 服务组织好的查询结果获取需要的信息,而不需要安装新的信息系统或进入某个系统中来享受这些功能。基于 Web 的集成模式见图 5.2。【2】
5.1.2 基于 Web 服务的数据交换
基于 O2O 模式的小城镇超市物流信息服务的数据交换是基于业务需求的目的将小城镇超市、电商企业及物流服务商各自的业务信息与业务衔接需求方进行实时的数据交换,通过信息的共享,提高小城镇超市,电商企业及物流服务商三方之间的协作效率,提升整体的服务水平,满足客户的多样化需求。
数据交换的基础是提供统一格式的数据库供各方调取交换信息,本文小城镇超市、电商及物流服务商的信息是通过后台处理被存储在统一格式的共享数据库中,供各方上传或查询信息,共享数据库详细信息见表 5.1 至表 5.7。【3】
(1) OrderInfo表:订单信息。【4】
(2) OrderTrackInfo 表:订单追踪信息【5】
(3) ServiceProvider 表:服务商信息(城市段物流服务商,城镇段小城镇超市)【6】
本文实现各系统的信息共享和数据交换的关键是为各方提供统一的接口来获取或上传共享数据库信息。这里需要提供两个接口,一个是给电商企业接口,另一个则是给小城镇超市等物流服务商的接口。因为这两个接口实现的过程大致相同,所以以电商企业接入为例,代码如下:【7】
其中电商接入 WEB 服务的名字为 ECplantformRegestedService,它接受EC_name 、 EC_description 参数实现 ECplantformrollin 接口,并返回参数registedresult 、 ECplantformid 表示接入是否成功,以及分配给电商企业的ID,同理可知小城镇超市及物流服务商接入过程。
在获取接口访问共享数据库后,根据各方的不同交换需求提供不同的需求信息,各方的数据交换见表 5.8。【8】
通过统一集成接口、统一格式的共享数据库结合 Web 服务的相关技术实现异构的数据结构快速转换,使各方系统能按统一标准接口进行数据交换。
5.1.3 基于 Web 服务的数据集成
基于 Web 服务的数据集成包含了各种元数据存储格式的文件和元数据文档,通过 Web 标准定义将小城镇超市、电商企业及物流服务商的物流信息数据进行 Web 封装上传至共享数据库中,并将封装后形成的 Web 发布到 UDDI中,Web 通过绑定到具体的传输协议和消息格式上以定义提供给服务查询方的具体访问点。通过 SOAP 消息和网络协议实现对 Web 信息的调用,小城镇超市、电商企业及物流服务商可以根据查询条件及查询权限查询结果,将接收到的结果再通过 SOAP 消息返回到用户接收层,将查询结果进行合并,通过查询界面供使用者查询。基于 O2O 模式的物流信息服务系统数据集成流程见图5.3。【9】
5.2 订单处理作业功能实现
通过应用上文 5.1 节提出的集成技术实现各环节的信息化作业,在订单处理环节中通过将小城镇超市与电商企业及物流服务商的系统集成,使得主要参与主体即可对订单及运单进行处理及查询操作,通过开放集成接口完成信息的共享,在这里需要注意的是对于不同的用户,开放的数据视图也不同。
在电商企业基于 O2O 模式整合线下小城镇超市物流资源时,需要通过共享数据库访问超市上传的物流资源信息,由于用户查询是通过使用 UDDI 和WSDL 的服务组合,通过 SOAP 协议实现服务调用的,共享数据库接收请求后会验证是否为标准格式及语法的正确性。如果不是,需经过数据处理后再做操作,接下来会验证调用者的身份,根据电商输入的消息进行用户身份验证和查询权限设置,验证通过后会根据电商提供的调用请求分配唯一的事务代号,通过后台组件处理调用请求,把处理结果以相应封装到 SOAP 消息形式返回给电商,电商在显示界面中可以查询信息,具体操作代码如下所示:
<?xml version=“1.0” encoding=“UTF-8”?>
<wsdl:definitions Name=“ECShopManageService”>
<wsdl:types>
<xsd:schema targetNamespace=“http://tempuri.org/NewWSDLFile/”
xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
<xsd:element name=“ ECShopInfo” type=“xsd:ECShopInfo”/>
<complexType name=“ECShopInfo”>
<sequence>
<element name=“shopId” type=“int”/>
<element name=“capacity” type=“string”/>
<element name=“serviceRange” type=“string”/>
</sequence>
</complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name=“ECShopManageRequest”>
<wsdl:part name=“ECShopInfo” type=“ECShopInfo”/>
</wsdl:message>
<wsdl:message name=“ECShopManageResponse”>
<wsdl:part name=“operationResult” type=“boolean”/>
</wsdl:message>
<wsdl:portType name=“ECShopManagePort”>
<wsdl:operation name=“ECShopManage”>
<wsdl:input name=“ECShopInfo” message=“ ECShopManageRequest ”/>
<wsdl:output name=“operationResult” message=“ ECShopManageResponse ”/>
</wsdl:operation>
</wsdl:portType>
<wsdl:definitions >
//将超市信息插入数据库中insert into ServiceProvider(Id,Capacity,ServiceRange)values(shopId,capacity,serviceRange);//更新数据库中超市的运力和配送范围信息update ServiceProvider set Capacity = capacity, ServiceRange = serviceRange whereId = shopId//电商查询超市信息 ProviderType ='1' 小城镇超市类型为 1 物流服务商为 2select Id,Capacity,ServiceRange from ServiceProvider where ProviderType ='1'
电商查询线下小城镇超市运力的界面见图 5.4。【10】
小城镇超市在查询由电商企业发来的订单及运单的过程也是通过调用共享数据库中存储的电商企业发来的订单及运单分配信息,小城镇超市的查询界面见图5.5。
5.3 城镇间货物交接功能实现
根据前文对城镇间货物交接作业流程的分析,在交接作业中通过系统集成及信息采集技术实现小城镇超市、电商及物流服务商上传及查询信息功能,快速对 O2O 模式下的订单及运单进行操作,通过三方的信息共享,合理安排交接作业活动,完成货位分配等工作。
5.3.1 交接货物动态信息查询功能实现
在城镇间货物交接过程中,小城镇超市及城市物流服务商要对交货时的动态信息进行查询和确认。以小城镇超市接货为例,小城镇超市要了解物流服务商在途的物流信息,实现对共享数据库的资源服务调用,后台把调用消息传至集成操作后台组件进行处理,将处理结果返回给调用方,小城镇查询物流服务商的在途信息代码如下:
<?xml version=“1.0” encoding=“UTF-8”?>
<wsdl:definitions Name=“ECOrderTrackService”>
<wsdl:types>
<xsd:schema targetNamespace=“http://tempuri.org/NewWSDLFile/”
xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
<xsd:element name=“ ECOrderTrackInfo” type=“xsd:ECOrderTrackInfo”/>。。
<complexType name=“ECOrderTrackInfo”>
<sequence>
<element name=“orderId” type=“int”/>
<element name=“fromAdress” type=“string”/>
<element name=“toAdress” type=“string”/>
<element name=“comment” type=“string”/>
<element name=“serverName” type=“string”/>
<element name=“description” type=“string”/>
</sequence>
</complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name=“ECOrderTrackRequest”>
<wsdl:part name=“ECOrderTrackInfo” type=“ECOrderTrackInfo”/>
</wsdl:message>
<wsdl:message name=“ECOrderTrackResponse”>
<wsdl:part name=“operationResult” type=“boolean”/>
</wsdl:message>
<wsdl:portType name=“ECOrderTrackPort”>
<wsdl:operation name=“ECOrderTrack”>
<wsdl:input name=“ ECOrderTrackInfo ” message=“ ECOrderTrackInfoRequest ”/>
<wsdl:output name=“operationResult” message=“ECOrderTrackResponse”/>
</wsdl:operation>
</wsdl:portType>
<wsdl:definitions >
//将订单追踪信息插入数据库中Insert into OrderTrackInfo(OrderId,FromAdress,ToAdress,Comment,ServerName,InfoDate, Description) values(orderId,fromAdress,toAdress,comment,serverName,GetDate(),description);//超市查询订单追踪信息select InfoDate,Comment,ServerName from OrderTrackInfo where OrderId='1102'
order by InfoDate asc使得小城镇查收可以查询物流服务商的在途信息,为接货做好准备,见图5.6。
5.3.2 交接货物静态信息查询功能实现
在接货过程中,小城镇超市会对货物进行验收,并将验收货物的结果通过使用 UDDI 发布信息,使得物流服务商、电商会在自身系统中接收到此信息,物流服务商可以根据验收结果进行详情查看,上传或删除验收审核结果的操作,物流服务商查询货物交接详情代码如下:
<?xml version=“1.0” encoding=“UTF-8”?>
<wsdl:definitions Name=“ECExchangeInfoService”>
<wsdl:types>
<xsd:schema targetNamespace=“http://tempuri.org/NewWSDLFile/”
xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
<xsd:element name=“ ECExchangeInfo” type=“xsd:ECExchangeInfo”/>
<complexType name=“ECExchangeInfo”>
<sequence>
<element name=“orderId” type=“int”/>
<element name=“senderId” type=“int”/>
<element name=“receiveId” type=“int”/>
<element name=“applyDate” type=“datetime”/>
<element name=“detailInfo” type=“string”/>
<element name=“resault” type=“string”/>
<element name=“inDeadLine” type=“datetime”/>
<element name=“outDeadLine” type=“datetime”/>
<element name=“description” type=“string”/>
</sequence>
</complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name=“ECExchangeInfoRequest”>
<wsdl:part name=“ECExchangeInfo” type=“ECExchangeInfo”/>
</wsdl:message>
<wsdl:message name=“ECExchangeInfokResponse”>
<wsdl:part name=“operationResult” type=“boolean”/>
</wsdl:message>
<wsdl:portType name=“ECExchangeInfoPort”>
<wsdl:operation name=“ECAddExchangeInfo”>
<wsdl:input name=“ ECExchangeInfo ” message=“ ECExchangeInfoRequest ”/>
<wsdl:output name=“operationResult” message=“ECExchangeInfoResponse”/>
</wsdl:operation>
</wsdl:portType>
<wsdl:definitions >
//将订单交接信息插入数据库中Insert into ExchangeInfo(OrderId,SenderId,ReceiveId,ApplyDate,ExchangeDate,DetailInfo,Resault,inDeadLine,outDeadLine,Description) values (orderId,senderId,receiveId,applyDate,GetDate(),detailInfo,resault,inDeadLine,outDeadLine,description);//物流服务商查询小城镇超市交接信息Select OrderInfo.Id,OrderInfo.Name,OrderInfo.Money,OrderInfo.PaymentMethod,OrderInfo.ReceiveDate,OrderInfo.Num From OrderInfo join ExchangeInfoon OrderInfo.Id=ExchangeInfo.OrderId join ServiceProvider onExchangeInfo.ReveiverId = ServiceProvider.Id where ServiceProvider.Name = ‘新桥镇乐购超市'物流服务商通过点击验收详情可以在交货信息界面中查询具体交货状态,见图 5.7,图 5.8。
5.4 线上线下协同库存调配功能实现
5.4.1 线上缺货线下补货的库存调配功能实现线上缺货线下补货的库存调配作业环节中,电商企业在线上库存不足的情况下,除了向线上供应商进货外,可以通过线下小城镇超市等物流服务商的仓库中调配货物来满足需求。电商企业通过输入调用某一缺货商品的线下库存分配信息,Web 服务接收并后台处理调用请求,将调用共享数据库中存储这一商品的物流服务商信息,并将处理结果返回给电商,电商通过查询商品库存分配情况进行满足线上库存的线下调配方案。具体操作代码如下:
<?xml version=“1.0” encoding=“UTF-8”?>
<wsdl:definitions Name=“ECInventoryService”>
<wsdl:types>
<xsd:schema targetNamespace=“http://tempuri.org/NewWSDLFile/”
xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
<xsd:element name=“ ECInventoryInfo”
type=“xsd:ECInventoryInfo”/>
<complexType name=“ECInventoryInfo”>
<sequence>
<element name=“inventoryId” type=“int”/>
<element name=“stock” type=“int”/>
</sequence>
</complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name=“ECInventoryRequest”>
<wsdl:part name=“ECInventoryInfo” type=“ECInventoryInfo”/>
</wsdl:message>。。
<wsdl:message name=“ECInventoryResponse”>
<wsdl:part name=“operationResult” type=“boolean”/>
</wsdl:message>。。
<wsdl:portType name=“ECInventoryPort”>
<wsdl:operation name=“ECUpdateInventory”>
<wsdl:input name=“ ECInventoryInfo ” message=“ ECInventoryInfoRequest ”/>
<wsdl:output name=“operationResult” message=“ECInventoryResponse”/>
</wsdl:operation>
</wsdl:portType>
<wsdl:definitions >
//更新存量信息update Inventory set Stock = stock where Id = inventoryId;//电商查询超市存量信息select Belongs,Adress,Stock from Inventory电商查询界面见图 5.9。对于小城镇超市等物流服务商来说 ,通过共享的服务接口将电商发来的库存调配信息从数据库中抽取出来经过数据处理,以超市可接收的形式传输到超市系统中,超市方按照调配方案调配,在调配完成后人工或系统自动变更库存数据,并通过集成接口更新共享数据库中的库存信息。
5.4.2 线下缺货线上补货的库存调配功能实现当小城镇超市线下实体超市缺货时,可以在不影响超市线上销售的情况下向电商企业发出调货申请或选择从线上订货,通过从其他超市调配货物到自己的实体店。电商企业收到的调货申请信息见图 5.10。小城镇超市通过信息共享技术会收到电商发来的同步调货接收状态,见图5.11。对于不明确的审核结果可通过查询审核详情来了解具体情况。
5.5 在途运输作业功能实现
货物出库后就要进入在途配送阶段。以城镇段小城镇超市配送作业为例,在配送业务中主要是以同城镇业务为主,包括直接送到最终用户的配送业务及从城镇商家取货配送交至城市、异城镇物流服务商,也包括合理范围内的同城镇乡村、异城镇、城市的配送业务。在途运输中主要通过应用系统集成技术、GPS 集成技术实现各方对在途信息的查询和实时追踪,提高对 O2O 货物的配送效率及监管力度。通过信息的实时共享提高了小城镇超市与物流服务商对交接货物操作的准确性及高效性,使得电商企业在线下城镇地区获取了数据流量,优化了用户物流服务体验。
以小城镇超市配送为例,通过信息共享机制,应用 Web 集成技术、GPS信息定位技术提高物流信息系统的实时传输速度,合理的规划配送路线。小城镇超市通过利用电商企业相对成熟的信息追踪技术提供给超市及物流服务商在途信息,车辆在途信息将实时传输到共享数据库中,通过信息交互实现各子系统的有效衔接信息共享,小城镇超市、电商企业、物流服务商可通过查询在途运输界面对货物进行实时监控,通过信息共享,使得用户在通过登陆电商系统直接调用到物流服务商提供的在途信息,不必向之前由电商系统先接收物流商信息,再对用户进行信息查询功能的提供,使得用户能够与电商同步接收在途信息。便于电商企业借助小城镇由超市为用户提供城镇物流服务和为合理范围内的其他地区用户提供本地生活的双向服务。
物流服务商通过与小城镇超市在物流商的合作也可扩展业务,通过信息的实时追踪查询保证了运输的安全性与可靠性,也可对突发状况进行及时处理。
以小城镇超市在途运输为例,在小城镇超市提供城镇段物流服务时,电商企业可以通过调用共享数据库中的超市物流信息查询城镇段的在途信息。具体操作代码如下:
<?xml version=“1.0” encoding=“UTF-8”?>
<wsdl:definitions Name=“ECTransferService”>
<wsdl:types>
<xsd:schema targetNamespace=“http://tempuri.org/NewWSDLFile/”
xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
<xsd:element name=“ ECTransferInfo” type=“xsd:ECTransferInfo”/>
<complexType name=“ECTransferInfo”>
<sequence>
<element name=“orderId” type=“int”/>
<element name=“vehicleNum” type=“string”/>
<element name=“principal” type=“string”/>
<element name=“expectIndate” type=“datetime”/>
<element name=“phoneNum” type=“int”/>
<element name=“comment” type=“string”/>
</sequence>
</complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name=“ECTransferRequest”>
<wsdl:part name=“ECTransferInfo” type=“ECTransferInfo”/>
</wsdl:message>
<wsdl:message name=“ECTransferResponse”>
<wsdl:part name=“operationResult” type=“boolean”/>
</wsdl:message>
<wsdl:portType name=“ECTransferPort”>
<wsdl:operation name=“ECAddTransferInfo”>
<wsdl:input name=“ ECTransferInfo ” message=“ ECTransferInfoRequest ”/>
<wsdl:output name=“operationResult” message=“ECTransferResponse”/></wsdl:operation>
</wsdl:portType>
<wsdl:definitions >
//超市将在途信息插入数据库中Insert into TransferInfo(OrderId,VehicleNum,Principal,ExpectIndate,PhoneNum,UpdateDate,Comment) values(orderId,vehicleNum,principal,expectIndate,phoneNum, GetDate(),comment);//电商查询在途信息 TransferInfo.Id = '1121078' 此处 1121078 为查询的运单号select OrderInfo.SenderName,OrderInfo.Status,TransferInfo.VehicleNum,TransferInfo.Principal,TransferInfo.ExpectInDate,TransferInfo.PhoneNum,TransferInfo.UpdateDate,TransferInfo.Id,OrderInfo.Name,OrderInfo.Num,OrderInfo.Specification,TransferInfo.Comment from TransferInfo join OrderInfo onTransferInfo.OrderId = OrderInfo.Id where TransferInfo.Id = '1121078'
5.6 本章小结
本章重点研究基于 O2O 模式的小城镇超市物流信息服务系统主要功能的技术实现途径,并用原型系统展示物流信息服务的业务流程与具体功能实现,从而打通小城镇超市、电商企业、物流服务商在城市与城镇间的物流信息服务系统。