APP下载

基于WebAPI的全流程条码系统设计和实现

2018-12-07李兴华李玉平陶明

自动化与信息工程 2018年4期
关键词:明细表条码调用

李兴华 李玉平 陶明



基于WebAPI的全流程条码系统设计和实现

李兴华 李玉平 陶明

(广东省智能制造研究所)

某些工厂实行条码化管理,针对产品在生产、储运、分销和售后等环节的物流走向情况,提出运用WebAPI标准接口框架实现全流程条码系统的方案。标准接口分为写入条码物流走向和查询条码信息2个接口,接口参数以JSON格式传输。工厂不同系统通过HTTP请求方式调用标准接口,使全流程条码系统实现了条码关系和物流走向的数据共享。

WebAPI;RESTful;条码化;数据接口;JSON

0 引言

在工厂生产条码化的管理中,条码在企业资源计划(ERP)、制造执行系统(MES)、仓库管理系统(WMS)、客户关系管理(CRM)等系统中起着中间联系的作用。由于各个系统对条码的操作相互独立,如在MES产生的条码包装层级关系,只能在MES中查询;在WMS产生的入库、出库和仓库调拨等业务物流走向,只能在WMS中查询。若后端系统需获取条码关系和物流走向数据时,前端系统需提供接口才能使前后端不同系统间的数据交互。由于数据接口不统一,使整个工厂IT系统的运维工作量随着接入防伪查询系统的增加而翻倍,浪费了较多的管理资源。

基于条码信息在整个工厂IT系统中数据接口交互不统一的问题,本文提出基于WebAPI标准接口开发全流程条码系统,包括写入条码物流走向和查询条码信息2个接口。服务接口宿主在IIS上供外部系统调用,接口参数以JSON格式传入,同时描述了系统设计和关键技术。全流程条码系统作为一个独立的系统,外部系统调用统一的标准接口获取共享数据,并实时更新条码异动状态。

1 系统设计

1.1 数据流向

全流程条码系统的数据源头从MES开始,在生产下线时开始记录,同时将条码包装层级关系也写入系统;然后在WMS将条码的入库、出库、调拨、发货等步骤写入系统;最后在销售系统将条码从出货到最终用户的销售路径写入系统。从生产到销售全流程的条码物流走向数据都以接口的形式写入系统。售后系统通过查询接口获取对应的条码信息,通过条码查询可跟踪产品的物流走向情况。系统数据流向图如图1所示。

图1 系统数据流向图

系统按照标准RESTful的WebAPI接口方式供外部系统调用,参数以JSON格式传输。在WebAPI服务端调用数据库存储过程与数据库进行交互,通过存储过程写入条码信息,也可将条码物流信息返回给接口。系统数据交互图如图2所示。

图2 系统数据交互图

1.2 功能模块

系统记录了操作者何时在哪个系统对条码的相关操作。在不同的业务场景下,对条码操作各有不同。其中记录的基本信息有条码数量、单位、父级条码、单据类型、单据名称、源系统。根据后端系统的内外网情况,系统置于外网云服务。

系统功能包括写入条码信息和查询条码信息2个接口。根据需要查询当前和历史记录情况,系统设计有当前记录表和明细表。当条码写入到当前记录表时,若无此条码记录则插入相关字段信息,有则更新处理。在写入当前表的同时需将写入信息插入到明细表。系统功能结构图如图3所示。

图3 系统功能结构图

1.3 技术平台

WebAPI是用在.NET Framework上构建RESTful应用程序的理想平台,为构建HTTP服务提供强大的数据服务[1]。WebAPI服务采用JSON方式进行数据传递,与WCF和Web Service相比较是一种轻量级的框架。由于WebAPI RESTful采用统一的接口,所以其成员体现为针对同一资源的操作。对于Web来说,针对资源的操作通过HTTP方式来体现[2]。在PC端、网页端、移动端都可通过HTTP的方式调用WebAPI服务接口,从而提高系统的扩展性。

2 基于WebAPI RESTful框架接口实现

2.1 表设计

系统的表设计主要包含条码物流走向记录当前表和明细表,其中当前表是记录每个条码当前的物流走向情况;明细表是条码物流走向的全流程记录情况。当前表可按照半年或一年的时间进行删除,而明细表可按照时间进行分区处理,以便后续数据量较大时提高查询效率。当前表和明细表的表结构相同,如表1所示。

表1 当前表和明细表的表结构

2.2 接口实现

ASP.NET WebAPI 为OData(open data protocol)提供直接支持,OData通过HTTP协议提供对数据源的CRUD访问[3]。由于系统数据量较大,直接通过OData进行数据库操作会造成查询和更新数据时间较长,因此WebAPI服务接口与数据库通过存储过程的方式进行交互。通过ADO.NET封装Sql类和OleDB类,使用命令对象来调用存储过程。

WebAPI项目包含Models、Views、Controllers等文件夹。Models主要创建实体类,用于保持Service和Client之间通信的对象,这些对象以JSON格式进行数据传输。Views一般不起作用,因为接口服务不需要提供视图界面文件。Controllers中的Controller对Webservice来说是一个Resource,用于提供服务,在Controller下创建的类继承于ApiController类,在其中实现处理各种Get、Post、Put、Delete类型HTTP请求的方法。

在Controller下添加Writebarcodetrendinfo方法,返回一个由字符串类型Messgae和布尔类型Success两个字段构成的对象,参数为写入条码信息的相关字段,通过封装的ADO.NET类执行存储过程调用。在方法调用过程中,若数据库未有异常信息抛出或者方法执行无异常时,返回值设置Message为空且Success为True,此时条码信息写入成功,否则写入失败。

在Models构建一个查询返回的类ResultDataObj,并在此类标识有序列化特性。

[Serializable]

public class ResultDataObj

{

public string sn { get; set; }

public string itemcode { get; set; }

public string itemname { get; set; }

public string sourcesystem { get; set; }

public string billtype { get; set; }

public string billname { get; set; }

public string billno { get; set; }

public string businesstype { get; set; }

public int snstatusorder { get; set; }

public DateTime operationdate { get; set; }

public string snparentno { get; set; }

}

在Controller下添加Querybarcodetrendinfo方法,参数为条码和查询类型,调用存储过程返回结果集为ResultDataObj类集合。

2.3 接口调用

WebAPI服务接口部署在IIS,外部系统通过HTTP协议的处理流程调用服务接口。客户端发送HTTP Request(请求)后,服务器接收到请求包后开始处理,返回HTTP Response(响应)包。

以下是以C#为例的服务接口调用处理流程,首先声明一个HttpWebRequest类的对象request对接口服务地址进行请求,请求方式为POST,参数形式为application/json。相关代码如下:

HttpWebRequest request = WebRequest.Create(formUrl) as HttpWebRequest;

request.Method = "POST";

request.ContentType = "application/json";

然后通过声明一个HttpWebResponse类的对象response来接收请求的响应数据,相关代码如下:

HttpWebResponse response;

Stream responseStream;

StreamReader reader;

response = request.GetResponse() as HttpWebResponse;

最后根据response返回的结果,将JOSN格式的数据转化为构建的结果类对象,相关代码如下:

ApiRepDtp res = JsonConvert.DeserializeObject< ApiRepDtp>(retjson);

通过Fiddler抓包工具,查看写入条码信息和查询条码信息两个接口的调用情况,分别如图4和图5所示。

图4 写入条码信息接口抓包图

图5 查询条码信息接口抓包图

3 结语

外部系统通过WebAPI接口对条码的操作信息进行记录。在统一标准接口下,提高了数据交互的性能,降低了各系统间的耦合度。JSON格式的数据传输处理,能够简易、快速地在不同平台交互数据,提高系统的扩展性。通过全流程条码系统可将各系统对条码的操作信息整合,为各系统提供查询接口,实现条码物流全流程共享。

[1] MricoSoft. MSDN Library for ASP.NET [DB/OL]. 2013.

[2] 蒋金楠.ASP.NET Web API 2框架揭秘[M].北京:电子工业出版,2014.

[3] Christian Nagel, Jay Glynn, Morgan Skinner. C#高级编程——C# 5.0 & .NET 4.5.1 [M].李铭,译.9版.北京:清华大学出版社, 2014.

Design and Implementation of Whole Process Barcode System Based on WebAPI

Li Xinghua Li Yuping Tao Ming

(Guangdong Institute of Intelligent Manufacturing)

At present, factory production practices bar code management, products through production, storage and transportation, distribution and then to a series of after-sales processes. Aiming at the logistics trend of products in various links, this paper proposes a scheme to implement the whole process bar code system by using the standard interface framework of WebAPI. The standard interface is divided into two interfaces: writing bar code logistics direction and inquiring bar code information. The interface parameters are transmitted in JSON format. Different systems in the whole factory call standard interfaces through HTTP requests, so that the whole process of bar code system to achieve the bar code relationship and logistics direction of data sharing.

WebAPI; Restful; Barcode; Data Interface; JSON

李兴华,男,1987年生,本科,主要研究方向:智能制造信息化。E-mail: xh.li@giim.ac.cn

猜你喜欢

明细表条码调用
热线互动
浅析影响商品条码质量的主要因素
2019年中国出口石材明细表(三)
2019年中国出口石材明细表(二)
2019年中国出口量值石材明细表(一)
日杂商品条码质量现状研究
核电项目物项调用管理的应用研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
ISSN条码的制作和印前输出要点
利用RFC技术实现SAP系统接口通信