一、企业办公自动化系统建设存在的问题
(一)存在的问题
随着信息技术的发展,企业信息化建设已经有原有的企业业务信息化逐渐转换成企业信息流的自动化管理,即利用信息化技术将财务管理系统、人事管理系统、仓库管理系统、客户关系管理系统等企业中相互孤立的信息化系统进行集成,从而简化企业的组织结构,让企业各部门在信息共享的基础上进行协作,不仅使得各部门的责任更加明确,而且可以让决策层迅速综合企业各部门的信息,为管理层决策的制定提供信息化依据。
办公自动化系统的建设就是在企业已有信息系统的基础上,建立一条完整信息链的过程。由于企业信息化建设是一个逐步完善的过程。在这个完善的过程中,随着计算机技术的发展,各种系统开发平台层出不穷,使得企业先后建立的信息系统可能相互异构,从而导致这些异构系统之间的通信困难。如何解决由于企业内部信息相互异构而造成的信息孤岛问题,就成为了企业办公自动化系统建设所需要面对的问题。
(二)可行的解决方案
从上面的分析可以看出,目前企业办公自动化系统建设存在的最大问题在于:由于企业内部系统互相异构,从而导致企业内部信息管理系统之间无法进行有效的通信,从而无法再企业内部形成一条高校的信息通信链。
针对目前企业办公自动化系统建设所存在的问题,提出使用SOA技术来实现企业内部异构系统之间的信息通信。
SOA技术具有如下的特点:(1)松耦合性,基于SOA架构的系统之间耦合仅仅是通过一个文档形式的服务契约,服务提供者根据这个契约提供服务,而应用程序终端则根据这个契约来调去服务提供者提供的服务,并实现特定的业务功能。而不需要考虑服务提供者与应用程序终端所在的操作系统类型和实现语言的不同;(2)SOA的复用性,SOA并不是提供一种编写构件的全新的规范,而是提供了一种能够把已有构建按照某种特定标准再次封转之后的文档形式,从而实现了服务提供者与服务使用者的一个松耦合的关系。应用程序前端也不必要理会服务提供者提供的服务时采用何种语言编写的以及基于何种平台的。因此,使用SOA技术可以有效解决企业内部信息系统异构,从而导致企业内部存在信息孤岛的问题。
二、基于SOA技术的异构系统数据集成
以基于.NET平台的仓库管理系统与基于Java平台的财务管理系统之间信息的传输为例,对基于SOA架构的异构系统间信息传输进行研究。
(一)信息传输格式
异构系统之间数据传输最大的问题在于数据结构的不同。不仅基于Java平台的系统无法直接使用由.NET平台实现的功能;而且.NET平台中的表格等类型的数据无法直接转换Java平台中的相应的数据格式。为此,不仅需要有一个中间转换的机制来处理异构平台之间功能的相互调用,还需要定义一种数据格式来对异构平台之间的数据进行描述。
一般而言,异构平台之间的字符串都是基于不同字符编码格式来进行编码的,即如果异构平台之间的字符编码格式相同,那么异构平台之间对相同字符串的数据流是相同的。为此,在企业办公自动化系统中,异构系统之间数据交互采用XML字符串的数据格式进行交互。例如一个产品的库存信息其XML表示如下所示:
XML实质上就是一个字符串,一般所有的平台都支持对XML数据的处理,如果平台不支持XML数据的处理,也因为XML格式是非常固定的,可以通过简单的方法来解析XML字符串,得到XML字符串中的数据。因此,使用XML字符串数据格式来进行异构平台之间的数据交互是可行的。
(二)服务实现
由于企业的其它系统(例如财务管理系统)可能需要获取企业库存管理系统中的产品库存信息,为此,在企业基于.NET平台的库存管理系统端必须要实现产品库存信息查询的功能。.NET平台下Web服务的实现,较为简单,只需要在普通函数的前面加上[WebMethod]关键字即可,其具体的实现如下所示:
[WebMethod]
String GetProductByCode(String code)
{
String sql=”SELECT * FROM t_product WHERE code=\’”+code+”\’”;
DataTable dt=DataBaseOp.Select(sql);//数据库查询,并将结果保存在DataTable类型数据结构中。
String dtXML=dt.toXML();//将DataTable类型的数据转换成XML字符串流
return dtXML;
}
三)服务调用
在企业系统实现并发布了Web服务之后,企业财务管理系统就可以通过调用这个Web服务来进行产品库存的查询。
Java平台使用Web服务有两种方法,在本文的研究中主要使用Axis2来进行Web服务的调用,其实现的关键代码如下所示:
public int getProductCount(String code) {
String endpoint = "http://localhost:8080/ERP/services/erpSynrochnized?wsdl";//库存管理系统发布的Web服务端点
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("GetProductByCode");//调用库存管理系统发布的名为” GetProductByCode”的Web服务
call.addParameter("code", org.apache.axis.encoding.XMLType.XSD_DATE, javax.xml.rpc.ParameterMode.IN);//将产品编号作为参数传入到Web服务调用中
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置Web服务返回结果的类型为XML字符串类型
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://www.my.com/Rpc");
String strXML = (String) call.invoke(code);//调用ERP系统发布的名为” GetProductByCode”的Web服务
XML xml=new XML(strXML);//将XML字符串转换成为XML类
int count=Convert.toInt(xml.getValue(“count”);//获取xml中109的值,并且转换成int型数据
return count;
}
通过上述的步骤,从而实现了企业与基于.NET平台的库存管理系统与基于Java平台的财务管理系统与之间的数据交互。
三、结束语
将企业相互独立的业务管理信息系统进行有效集成,从而实现企业的办公自动化,已经成为了我国企业信息化的主要研究方向,但是各具体业务管理信息系统之间的异构,严重制约了企业内部的信息通信。为此,本文提出使用SOA技术来实现企业内部数据集成,并对其中具体的实现方法进行了研究。
CIO之家 www.ciozj.com 公众号:imciow