基于SOA与Web Service的飞机保障信息系统集成

2018-01-18 09:19,,
计算机工程 2018年1期
关键词:调用信息系统资源管理

, ,

(北京航空航天大学 机械工程及自动化学院,北京 100191)

0 概述

随着计算机技术和网络技术的高速发展,航空装备保障企业为提高企业事务处理效率,大力推进企业信息化。航空装备保障企业的各个部门根据自身的情况与需要分别建立了信息和业务系统,如飞机保障资源管理系统、敏捷平台和飞机外场服务综合信息系统等。这些业务系统往往采用不同的技术标准与框架、数据结构、软硬件平台、交互模式和软件开发商,其中部分系统已经部署多时,这些跨平台、跨部门的异构系统造成了信息壁垒[1-2]。为在充分利用现有部门信息系统的基础上,进一步推进飞机综合保障部门信息化水平,迫切地需要研究如何对这些分散、孤立的部门信息系统的业务和数据进行集成。

行业中解决异构系统集成问题的主流方法是企业应用集成(Enterprise Application Integration,EAI),其经过多年的探索和发展,具体方法有很多种,现今在IT界内应用较为广泛的是面向服务的架构(Service-Oriented Architecture,SOA)[3-4],在本文中便是以“服务”为中心,把飞机保障资源管理系统、敏捷平台和飞机外场服务综合信息系统提供的功能发布为“服务”,并将飞机保障信息系统构建成为这些服务的集合,提供一个灵活、低成本、松耦合与可扩展的基础服务集成平台,实现飞机保障信息的数据集成和应用集成。尽管基于SOA的开发方法不是最新概念,但一方面它经过多年的发展已经很成熟,较为稳定,能够很好地适应航空领域的信息化特点[5];另一方面它采用SOA来开发和部署“服务”,能够充分利用现有的信息系统,降低新系统的开发成本,从而打破信息壁垒,进一步推进航空企业信息化的发展[6]。

Web Service技术不仅是SOA模式的主要实现技术,而且是建立在独立平台的协议和开放标准基础上的企业应用集成技术,它对操作系统、开发框架、服务器与数据库等没有任何限制,可动态查询、发现并调用所需的服务[7-8]。航空领域因其特殊性,具有封闭性,与互联网领域相比技术更新速度较慢,因此,需要相对成熟的技术。

为此,本文从异构系统集成的角度出发,通过分析飞机保障信息系统集成需求和特征,基于SOA和Web Service开发技术建立异构系统集成模型,设计集成体系架构的3个模块(服务网提供者、服务注册代理与服务请求者),并按服务描述、服务实现、服务数据封装、服务发布、服务绑定与服务调用的顺序介绍系统集成的具体实现过程。

1 飞机保障信息系统集成方法

飞机保障信息系统是面向某飞机设计研究所综合保障部门的企业信息化系统,它通过软件平台实现飞机保障各项工作技术状态管理,支持各项飞机保障工作技术状态信息的共享与分发,可以与所内外其他主要数字化平台实现互通互联。从事务角度看,飞机保障信息系统集成是将各科室的业务系统集成到一个统一的信息系统中,实现各科室业务和数据共享,对飞机综合保障部门进行全面的闭环管理;从技术角度看,它是在不做出过多修改的情况下将不同已有的应用程序和业务数据集成到一起的过程,从而最终实现业务流程的集成和数据共享。系统集成需求如图1所示。

图1 飞机保障信息系统集成需求

本文根据对某飞机设计研究所综合保障部门需求的调研结果,总结了以下飞机保障信息系统集成存在的难点:

1)跨框架与跨平台:所需要集成的系统往往是采用不同的框架和技术,由不同的软件开发商开发,因此,如何将这些异构平台集成到本系统中是一大难点。

2)高效性与低成本:如何使被集成的系统尽量少被修改,尤其是针对正在运行的系统,应尽量保证其功能完整性,并降低系统集成成本。

3)可扩展性与灵活性:如何保证未来开发的系统能较为简单地集成到本系统中,并使被集成的系统与本系统易于修改。

飞机保障信息系统集成利用SOA组件模型,将飞机保障资源管理系统、敏捷平台和飞机外场服务综合信息系统中所需集成的功能模块发布成“服务”,然后采用服务之间定义的接口和契约来实现系统集成。接口一般采用开放标准和协议,利用中立的方式进行定义,因此,它独立于实现服务的硬件平台、操作系统与编程语言[9]。飞机保障信息系统集成采用SOA模型,便于充分利用现有资源,降低整合和管理的复杂性,提高灵活性和重用性。本文在采用SOA框架的同时,以Web Service作为实现飞机保障信息系统中“服务”的最主要手段,其本质是通过传输固定格式的XML来解决跨平台调用问题[10]。以飞机试飞管理系统的试飞大纲管理功能为例,本文利用Web Service技术调用飞机试飞管理系统发布的试飞大纲管理“服务”,其原理如图2所示。

图2 Web Service调用原理

根据Web Service调用原理,本文建立基于SOA和Web Service设计的系统集成模型,如图3所示。此模型基于J2EE架构与Web服务器,可以解决飞机保障信息系统集成存在的高效性与低成本、可扩展性与灵活性等难点。模型总体分为服务提供者、服务注册代理与服务请求者3个部分。

1)服务提供者是根据集成业务需求,把飞机保障资源管理系统、飞机试飞管理系统、飞机外场服务综合信息系统与敏捷平台等所内外系统所提供的“服务”用XSD文件进行定义,并生成Web Service描述语言(Web Service Description Language,WSDL)文件,然后采用基于Spring-WS的contract-first模式编写Web服务,最后把服务生成的WSDL文件发布到统一描述、发现和集成(Universal Desotiption,Discovery and Intergation,UDDI)注册中心。

2)服务注册代理是一个可被搜索的服务描述注册中心,服务提供者可以在此发布它们的服务描述文件,服务注册代理对其进行分类,并提供搜索服务。

3)服务请求者是狭义范围的飞机保障信息系统,首先它在“服务注册代理”中查找所需“服务”,然后根据查找结果,与服务提供者实现绑定,最后通过简单对象访问协议(Simple Object Access Protocol,SOAP)协议发送或接收可扩展标记语言(eXtensible Markup Language,XML)消息实现“服务”调用。

图3 飞机保障信息系统集成模型

本文在构建模型和使用Web Service的过程中主要采用了4种标准和技术:XML,SOAP,WSDL,UDDI[11],它们都是开放标准和协议,可解决飞机保障信息系统集成存在的“跨框架与跨平台”难点。

1)XML是Web服务中的数据传输基本格式[12-13],它使用Unicode编码,采用自描述的数据结构,能够以简单的文本文档格式储存、传输、读取数据。本文通过XML传输集成数据。

2)SOAP是用来交换信息的一种协议[14],它是分布式系统之间交换信息的轻量级方法,同时也是基于XML和HTTP的一种协议。本文利用SOAP进行消息传递。

3)WSDL是由IBM和微软于2000年提出的一种用以描述Web Service的功能特征的语言[15]。本文利用WSDL描述服务语义和接口等信息。

4)UDDI本质上是一种目录服务,是一种基于Web的分布式Web服务信息注册中心的实现规范。本文利用UDDI对服务进行注册和检索。

2 飞机保障信息系统集成功能实现

本文从“服务提供者”“服务注册代理”“服务请求者”3个方面介绍飞机保障信息系统集成功能实现。以集成飞机保障资源管理系统的过程为例,详细叙述如何利用“发布服务”的思想实现异构系统集成。其中飞机保障资源管理系统是由天健志行软件公司利用bootstrap3等框架开发的,采用oracle数据库,与本文系统采用的框架、数据库等完全不同。

2.1 “服务提供者”功能实现

“服务提供者”功能实现是基于Web Service将飞机保障资源管理系统、敏捷平台等系统向飞机保障信息系统提供服务,包括服务描述、服务实现与服务数据封装。

2.1.1 服务描述

服务描述是对飞机保障资源管理系统、敏捷平台和飞机外场服务综合信息系统等信息系统所提供服务的接口和实现细节的描述,主要包括数据结构、绑定信息、操作、分类、网络位置和其他的元数据信息,其中分类和其他的元数据用来实现飞机保障信息系统的服务检索和服务调用。本文利用WSDL实现服务描述。WSDL是基于XML语法描述服务,具有协议规范、普遍性、易读性等特点,图 4是WSDL规范结构图。但由于WSDL语法较为复杂,手工编写难度很大,因此本文采用先编写XML Schema定义,后将其动态转换为WSDL的方法来实现服务描述。

图4 WSDL规范结构图

XML Schema定义(XML Schema Definition,XSD)也称XML Schema语言,用于定义可出现于XML文档中的元素和属性、其子元素的次序和数目、定义元素的数据类型和默认值等。它类似于DTD,定义了XML文档的合法构建模块。

本文以集成飞机保障资源管理系统为例介绍“服务描述”过程。首先利用XSD详细定义了飞机保障资源管理系统等信息系统提供的服务所传输XML的名称、命名空间、子元素、数据类型、数据默认值以及固定值等信息;然后在配置文件中对XSD进行配置,如在飞机保障资源管理系统中WEB-INF/dorado-home/datasources.xml文件进行配置,在此文件当中添加配置信息,包括XSD的地址、命名空间与WSDL的ID和地址等信息,在配置XSD后,启动服务,请求如下地址:https://servername://dorado/webservice/.wsdl,便可查看生成的WSDL文件;最后把上述地址提供给服务注册代理即可。

2.1.2 服务实现

服务实现是根据服务描述(即XSD与WSDL文件)和飞机保障信息系统集成需求编写服务程序。因为Spring Web Services是contract-first模式即契约优先模式,它要求先确定服务描述再进行代码开发,从而可以实现服务描述和实现之间的松散耦合,并确保Web服务的语言无关性,所以本文采用Spring-WS框架实现服务。本文中“服务实现”需要定义2个Java程序,一个是对服务传输数据对象化的处理数据访问的类,另一个是处理业务逻辑的类。

处理数据访问的类本质上是JavaBean与POJO,本系统在此采用了Object/XML映射技术,实现了Java对象与XML的相互转换。因为JAXB(Java Architecture for XML Binding)是一个业界的标准,所以本文采用JAXB2,实现将服务传输的XML文档反向生成Java对象树。为了实现Object/XML转换,需要在处理数据访问的类名前添加annotation注解,在annotation注解中标明服务所采用的namespace、xmlRoot与相关属性,而这些属性都需要在“服务描述”中声明,例如在飞机保障资源管理系统中“服务实现”处理数据访问的类结构如下所示:

@XmlRootElement(name=“SupportRequest”,namespace=“http://www.bstek.com/ws”)//annotation,规定命名空间

@XmlAccessorType(XmlAccessType.FIELD)

//annotation注解

public class SupportRequest {}

注释@XmlRootElement()、@XmlAccessorType()由JAXB2提供,XmlRootElement是用于定义SupportRequest类在序列化成XML之后的XmlRoot及namespace值,这两个值来自于XSD文件;Xml AccessorType用于定义这个类中属性在序列化成xml之后子节点名及通过什么样方式访问这些属性值,这里定义成XmlAccessType.FIELD,表示直接采用属性名方式。

处理业务逻辑的类是用于接受飞机保障信息系统请求的类,类中处理具体业务逻辑的方法以飞机保障信息系统的输入信息对象为入参,并且返回一个服务输出信息对象,例如在飞机保障资源管理系统中“服务实现”处理业务逻辑的类结构如下所示:

@Endpoint

public class SupportResourceEndpoint{

@Resource

private TechnicaldocDao technicaldocDao;

@PayloadRoot(localPart="SupportResourceRequest",namespace="http://www.bstek.com/ws")//annotation,规定//命名空间

public @ResponsePayload SupportResponse getSup(@Request Payload SupporRequest request) throws Exception{

…//处理业务逻辑

return response;//返回调用结果

}

这个类采用了3类annotation,具体如下:

1)@Endpoint标明本文将这个类发布成一个Endpoint服务类,它是Spring-WS的特殊注解,表明这个类是Web Service的服务端点。而@Resource注解被用来激活一个命名资源(TechnicaldocDao)的依赖注入,拥有与@Resource注解所提供“TechnicaldocDao”相匹配的Spring管理对象会被注入。

2)具体处理业务逻辑的getSup()方法上面的注解@PayloadRoot用于标明此方法可以接收的XML信息,这里需要定义的是XML的namespace,同时XML的ROOT为SupportRequest的信息。

3)@ResponsePayload表示getSup()方法的返回值将作为响应的负载返回到Web Service调用客户端。该方法中参数前的注释@RequestPayload表示SupportRequest值需要从“飞机保障信息系统”请求的SOAP消息的Body中解析出来,解析后的Body部分的XML要反序列化成为需要的SupportRequest对象并作为参数,这里也采用了JAXB将负载的XML消息直接转换成服务输出信息的Java对象。

编写相关Javabean与Endpoint后,在飞机保障资源管理系统的配置文件中对2类服务实现类进行配置,至此,一个完整的基于Spring-WS的Web Service的服务实现编写与部署即全部完成。

2.1.3 服务数据封装

服务数据封装是把服务业务数据映射于某个封装协议的净荷中,并填充对应协议的包头,然后形成封装协议的服务数据包,最终完成速率适配。而SOAP是基于XML和HTTP的简单、轻量级、扩展性很好的消息传输协议,它独立于语言、平台与底层传输机制,非常适合应用于分散的环境中,以点对点的方式进行交换结构化和类型化信息。因此,本文采用SOAP协议进行服务数据封装。

本文中的服务数据封装以“SOAP消息”为通信的基本单位,一条SOAP消息便是一个普通的XML文档,SOAP Envelope是SOAP消息结构的主要容器,而SOAP Envelope里面包含一个可选的SOAP Header和一个必须的SOAP Body。本文利用Java提供的Java XML Pack实现SOAP协议,来创建、使用、发送和接收XML消息,具体信息可查看JAXP的API。

2.2 “服务注册代理”功能实现

服务注册代理是UDDI注册中心,它是用来描述、发现并集成Web服务的一系列技术规范[16],本文借助UDDI实现Web服务的发布与搜索,从而大幅降低了飞机保障信息系统发布和寻找服务的成本,提高了企业运营效率。UDDI注册中心分为公共UDDI注册中心和私有UDDI注册中心,由于本文的研究背景是面向飞机保障信息领域,因此采用私有UDDI注册中心。其中UDDI注册中心存储的信息以XML形式表示。

发布服务是将“服务描述”即WSDL文件映射到UDDI,WSDL中的服务接口是服务可重用的抽象定义,而且要在UDDI注册中心作为发布,从而将WSDL中元素在UDDI注册中心发布为元素。

2.3 “服务请求者”功能实现

“服务请求者”是飞机保障信息系统调用飞机保障资源管理系统、敏捷平台和飞机外场服务综合信息系统等所提供的服务的过程,包括服务绑定与服务调用。

2.3.1 服务绑定

当飞机保障信息系统通过查询服务注册代理,得到所需服务的“服务描述”文件即WSDL文件后,通过WSDL定义的Web服务端点,将消息和操作信息绑定到某个具体的网络协议与消息格式上。本文采用SOAP的绑定方式实现抽象消息交换模式与具体的传输协议和消息交换格式的绑定。

2.3.2 服务调用

服务调用是当实现服务绑定后,飞机保障信息系统调用飞机保障资源管理系统等系统提供的服务的过程。服务调用的实现需要根据 “服务提供者”生成的WSDL文件,编写处理数据访问与服务调用业务逻辑的类,其中处理数据访问类与上文服务实现中的处理数据访问类的结构类似,在此不再赘述。

服务调用业务逻辑的类主要实现对“服务提供者”提供的Web服务的调用。本文的服务请求者可调用那些不需要任何安全性验证的Web服务,也可调用那些使用WS-Security进行认证的Web服务,同时也支持一些采用Http Basic进行认证的Web服务。飞机保障信息系统调用飞机保障资源管理系统的WebServiceInvoke类结构如下:

public class WebserviceInvokeTest {

public static void main(String[] args) throws Exception{

//设置要调用的目标Web Service的地址

Stringuri="http://localhost:8083/escmp/dorado/webservice/supportResourceWebService";

//初始化Webservice客户端

WebServiceClientclient=new WebServiceClient(uri);

//设置要调用的Webservice的WS-Security认证所需要的//username及password,以及是否对用户名及密码进行加密传输

client.set Username Token("admin","81c1206f28f2738cdf 714b4e10428 c66f58eee10",true);

//设置要调用的Webservice的Http Basic认证所需要的//username及password,Http Basic认证当中所使用的密码//为加密之前的密码,而非被加密之后的密码

client.setHttpAuthenticationCredentials("admin","admin");

//调用服务

SupportRequest request= new SupportRequest();

request.setSendStatus(0);

//设置在调用目标Webservice过程当中,需要将//Javabean与XML进行相互序列化的Javabean类的class

client.setMarshallerClasses(new Class[] {SurpportRequest.class,SurpportResponse.class});

//发送调用请求并返回调用结果

SupportResponse response=(SupportR esponse)client.sendAndReceive(request);

//判断返回结果是否为空

if(response.getTechnicaldocuments()!=null){

//输出返回结果

for(Technicaldocument technicaldocument:response.getTechnicaldocuments()){

System.out.println(" aircrafttype:" + technicaldocument.getAircrafttype());}

}

}

3 验证与应用

本文提出飞机保障信息集成方法,应用Dorado平台和Spring-WS框架开发基于SOA和Web Service的飞机保障信息系统。该系统是为飞机综合保障相关部门的用户提供一个统一的保障信息管理平台,主要以飞机综合保障工作的业务管理为基础,以试飞管理和外场管理为核心业务,通过SOAP封装XML信息实现与飞机保障资源管理系统、飞机试飞管理系统、飞机外场服务综合信息系统等异构系统的集成及数据共享。该系统在某飞机设计研究所的综合保障工作过程中进行了初步应用,验证了上述异构系统集成方法的有效性。同时对于一些需要集成到本系统中的异构系统,也可按本文的方法,以“发布服务”的思想实现集成,使本文系统不断完善。飞机保障信息系统的主界面如图5所示。

图5 系统验证界面

本文系统于2016年5月份由航空系统某信息公司作为第三方企业进行了测试,测试总体结果如表1所示。首轮测试中出现问题如下:角色拥有不属于自己权限,提示信息错误或不一致,输入错误或无效的数据,输入或输出字段类型有误,权限判别的业务流程设计不友好,飞机试飞管理系统集成数据没有或错误验证。产生这些问题的主要原因是需求定义不明确、功能性错误、页面设计和需求不一致以及开发人员的疏忽。开发人员通过与需求方进行详细沟通并提出完善措施,改进之后,在回归测试中,上述问题均被解决,发现飞行统计过程中读取的数据类型有误等问题,这是由于修改集成业务逻辑而引入了新的错误。测试后开发人员采取了与飞机综合保障部门业务人员加强沟通,修改与敏捷平台集成的业务逻辑代码,增加输入与输出限制判别与对集成数据进行控制等措施来改进本文系统。

表1 系统测试用例执行情况

最终本文系统于2016年9月通过了项目组的验收,并已正式上线运行,笔者也每隔一段时间去现场收集用户的反馈意见,目前系统运行稳定、可靠。

4 结束语

本文以航空企业信息化为背景,针对飞机综合保障部门信息化集成需求,首先提出基于SOA和Web Services的异构系统集成方法,研究支撑SOA和Web Services技术的XML、SOAP、WSDL与UDDI等开发技术与标准;然后建立飞机保障信息系统集成模型,分析SOA和Web Service体系架构的3个模块以及基本操作;最后通过飞机保障信息系统集成实例说明如何基于SOA与Web Services实现异构系统集成。目前SOA和Web Services技术已经成熟,但其在航空企业信息化领域的应用尚处于发展阶段,需要对此做进一步研究,从而有效推进航空企业信息化水平,提高航空制造业整体效率。

[1] 王 颖,吴荣泉,黄美锋,等.一个面向服务的EAI框架[J].计算机工程,2006,32(1):279-281.

[2] PAPAZOGLOU M P,HEUVEL W J.Service Oriented Architectures:Approaches,Technologies and Research Issues[J].The VLDB Journal,2007,16(3):389-415.

[3] 黄双喜,范玉顺,赵大哲,等.基于Web 服务的企业应用集成[J].计算机集成制造系统,2003,9(10):864-867.

[4] JURIC M B,LOGANATHAN R,SARANG P,et al.SOA Approach to Integration[M].Birmingham,UK:Packt Publishing Ltd.,2007.

[5] KUZYK R.Web Services:Standardizing EAI[J].EAI Journal,2002(3):123-128.

[6] HE Wu,XU Lida.Integration of Distributed Enterprise Applications:A Survey[J].IEEE Transactions on Industrial Informatics,2014,10(1):35-42.

[7] KRAFZIG D,BANKE K,SLAMA D.Enterprice SOA Service-Oriented Architecture Best Practices[M].[S.l.]:Prentice Hall,2005.

[8] 王卫玲.基于SOA的Web Services集成技术研究[D].南宁:广西大学,2007.

[9] 高 洁,张相文.基于SOA的服务型电子政务模式研究[J].情报学报,2009(10):777-783.

[10] 张朝晖,徐立臻,董逸生,等.一种基于SOA的企业集成平台[J].计算机工程,2011,37(5):258-260.

[11] 李安渝.Web Services技术与实现[M].北京:国防工业出版社,2003.

[12] 张文斌,叶红云,陈恩红.基于Web Service的B2B电子商务环境构建技术[J].计算机工程,2002,28(11):69-71.

[13] W3C Recommendation.Extensible Markup Language(XML) 1.0[EB/OL].(2000-10-06).http://www.w3.org/TR/REC-xml.

[14] 胡迎松,彭利文,池楚兵.基于.NET的Web应用三层结构设计技术[J].计算机工程,2003,29(8):173-175.

[15] 程 澄.基于Web Service的综合物流服务平台的研究与实现[D].大连:大连海事大学,2012.

[16] 刘家茂.Web Services动态合成及UDDI注册/查询技术的研究[D].上海:复旦大学,2005.

猜你喜欢
调用信息系统资源管理
企业信息系统安全防护
人事档案管理在人力资源管理中的作用
人力资源管理促进企业绩效提升
企业人力资源管理
核电项目物项调用管理的应用研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
基于区块链的通航维护信息系统研究
GIS在森林资源管理中的应用
信息系统审计中计算机审计的应用
基于ADC法的指挥信息系统效能评估