本文讨论了如何利用Web 服务来实现供应链中跨企业信息系统的集成,提出了基于Web 服务的供应链信息系统集成模式,并且具体讨论了如何利用Web 服务实现信息系统的集成。
关键词 供应链 Web 服务 系统集成
1 前 言
供应链中一个很重要的问题就是整条链中不同企业的信息共享,这些信息包括可能影响其他供应链成员行动和表现的任何类型的数据,如需求数据、库存状态、能力计划、生产安排、促销计划和发货计划等。最理想的情况就是这些信息能被供应链中的成员方便地实时在线访问。但是由于不同的企业采用的信息系统的开发语言不同、部署平台不同、通讯协议也可能不同,对外交换的数据格式更是可能有着巨大的差异。因此,要进行信息的交换是十分困难的,传统的解决办法就是利用EDI 技术。但是由于成本高,实施起来也有很多困难,只有少部分大企业才有能力使用。现在,我们可以利用以XML 技术为基础的Web 服务来解决这些问题。
2 Web 服务的定义及相关标准
简单地来说,Web 服务就是一系列的标准和正在发展中的标准,它们是由Worldwide Web Consortium(W3C) 设计和指定的,用来促进跨平台的程序对程序通信。这些标准包括有XML、HTTP、UDDI、WSDL、SOAP 等。UDDI (Universal Description ,Disco2very ,and Integration) 是发现、发布Web 服务的标准。WSDL (WEBServices Description Language) 则是Web 服务的说明书,它描述了Web 服务所有的相关信息。有了它就可以对Web 服务进行解析,并编制相关的程序。而SOAP (Simple Object Access Protocol)是Web 服务的通信协议。所有这些标准都是以XML 文件的形式存在的,都符合XML 标准。由于XML 是跨平台的、与具体语言无关的,所以利用以XML 为基础的Web 服务能够整合在不同平台、不同语言开发的信息系统。而且使用Web 服务进行信息系统集成所需要比使用EDI 进行系统集成要少,也更简便。
3 基于Web 服务的供应链的集成模式
基于以上所述Web 服务的特点,本文提出了一种利用Web服务来实现供应链中跨企业信息系统集成的模式。
以制造商为核心企业的供应链利用Web服务来实现跨企业信息系统集成的模式。由于Web 服务具有松散的,与具体平台无关的特性,所以供应链中的企业不需要对自己原有信息系统进行很大的改动,只要把想让供应链中其它企业知道的信息(如库存状态,生产计划,需求数据等) 利用Web 服务包装起来就可以了。不论供应链中其它企业的信息系统是在何种平台,使用何种语言来编写的,只要遵循Web 服务的标准就可以互相之间进行通信。我们可以看到,通过Web 服务把供应链中的企业连成一个虚拟的网络,信息传递的方式也由以前一级一级的传递方式转变成为一种发散式的传播,信息的传递具有简单、方便、快速等优点,因此可以在一定程度上避免供应链中“牛鞭效应”的产生。供应链中的企业可以随时发布自己的信息和获得其它企业所提供的信息,形成了一个信息共享的集成化供应链。这种基于Web 服务所实现的集成化供应链有利于加强供应链中各企业的沟通、缩短订货周期、减少订贷周期中的不确定性,增强整个供应链的竞争力。
4 案例设计
以下,我们将设计一个简单的获取库存信息的案例,来说明通过编写一个Web 服务实现供应链中跨企业信息系统的集成,假设供应链当中制造商生产一种产品A ,而产品A 需要由几种不同的原材料或半成品来加工制造。制造商可以提供这样的一个Web 服务,即提供制造产品A 所需的各种原材料在自己的库存中库存量的信息。通过调用这个Web 服务,原材料供应商可以知道制造商库存中某种原材料的库存量。根据双方的约定,当库存量达到某一点的时候可以自动生成原材料的订单。整个过程都可以通过Internet 来实现。
中制造商和供应商部分的放大。对于制造商和供应商的后台信息系统在这里就不作讨论了。这里主要讨论如何编写获取库存信息的Web 服务,以及原材料供应商如何调用这一服务的程序实现。所采用的开发工具为Visual Studio. NET,编程语言为C # 。对于如何使用这个工具,读者可以参考相关的资料,以便更好地理解下面的程序。首先打开Visual Studio. NET集成开发环境,点击文件- > 新建- > 项目- > C # 项目,然后选择ASP. NET Web ,在随后出现的对话框当中的位置栏中输入http :∥localhostPProduct ,系统就会自动建立一个Web 服务的程序的项目,下面就是库存信息Web 服务的源程序。
< %WebService Languages =“C # ”% >
using System.Web ;
using System.Web. Services ;
namespace Product
{ ∥继承Webservice 类
public class ProductInfo :Webservice
{ ∥Webmethod 标记表示下面的函数
∥为Web 服务提供的函数。
[webmethod]
public int GetStocks(string ProductName)
{ int num;
∥从制造商的后台ERP 系统中取得
∥名字为ProductName 材料的库存量
num= Stocks (ProductName) ;
return num;}
private int Stocks (string name)
{ retum 100 ;} ∥为了方便只返回一个常数,
∥代表库存量的信息
把这个程序保存名为ProductInfo. asmx 的文件。此程序就是我们要发布的库存信息Web 服务程序。而描述此Web 服务的WSDL文件,我们不需要自己编写,只要打开一个IE(版本为5.5 以上)窗口, 在地址中输入: http : ∥localhostPProductPProductInfo. asmx ?wsdl ,就可以在IE 中看见这个Web 服务的WSDL 文件。如果使用其他的语言调用这个Web 服务,可以分析这个WSDL 文件,来编写相应的调用程序。为了方便,在原材料供应商的信息平台上,对于调用这个Web 服务的客户端的程序也使用Visual Studio.NET集成开发环境来开发。. NET 集成开发环境中提供一个工具名叫wsdl ,它能简化创建和使用Web 服务的过程。我们用这个工具来生成Web 服务代理(Proxy) 文件。代理文件概念上就是将远端的Web 服务包装成一个对象,开发人员可以像调用本地对象一样,使用远端所提供的Web 服务。至于如何与那些底层网络的通信动作都由这个代理文件来处理,不用开发人员自己来管理。打开一个命令行窗口,输入wsdl ,按回车后有关于这个命令的详细说明。为了产生我们所需要的代理文件,在命令行中输入:wsdlPl : cs Pprotocol : soap http : ∥localhostPProductPProductInfo. asmx ? wsdlPout :productInfo. cs ,此命令将产生代理文件ProductInfo. cs ,然后使用csc (C # 语言编译工具) 命令把这个源文件编译成为dll 文件。在命令行窗口中输入: csdPt : libraryPr:sytem. web. servies. dllPr . : system. xml. dll ProductInfo. csPout :productInfo. dll 成功编译后,我们就可以在客户端的程序中使用这个自动生成的Web 服务代理文件ProductInfo. dll。然后点击新建- >项目- > C # 项目,选择创建Windows 应用程序,保存项目名称为TestService。项目打开后,选择项目- > 添加引用,点击浏览,然后找到我们刚才所创建的ProductInfo. dll 文件,按确定后,就可以使用这个代理文件了。下面的代码就是供应商调用这个库存Web 服务的源程序。