鉴于SOA石油企业管理系统研发

时间:2022-09-17 07:49:43

鉴于SOA石油企业管理系统研发

设备是企业固定资产的重要组成部分,是企业组织生产的重要物质技术基础.石油设备作为科技、资金的物化载体,对石油产业的发展起到关键的推动作用,并随着该产业的发展而不断地更新换代.石油企业设备的使用及管理与普通企业有较大的差别,主要具有设备数量大、种类多、价值高、分布范围广等特点[1].鉴于此,设备的使用、维修、空闲、报废、缺失、库存等信息的汇总上报周期长,设备的查询、调配、管理难度大,因此,加强设备管理,有效利用现有设备资产,提高设备利用率及设备管理的现代化水平是保证石油企业正常生产、降低企业生产成本的一个非常重要的环节.随着石油生产精细化的不断深入,设备管理在石油企业管理的地位将越来越重要,设备管理所创造的经济效益越来越显著.

我国石油设备管理虽然有一定的信息化基础,但大多数系统只注重设备的基本信息管理、设备使用过程中的维护修理等静态信息的管理,没有涉及设备的调度管理、作业过程管理、实效统计及设备的运转、消耗等生产动态信息,也不搞技术反馈,不参与设备合理选型,这样严重影响设备使用的技术水平和经济效益的提高;同时,各油田、钻探公司的设备管理系统自成体系、互不兼容、耦合性强、扩展性差,不仅严重影响石油集团对整体设备资产的管控,而且各系统基本都是C/S模式,系统重复建设,浪费严重,不能发挥整体设备效能.本文探讨利用J2EE开发平台、Oracle数据库及IBM的Websphere和WAS等构建一个基于SOA架构的B/S模式的设备信息管理系统.

1系统需求

系统建设目标是通过对石油企业设备的台帐管理、设备变动(调度)管理、设备运转管理、设备维修保养管理、设备故障管理等规范化管理,及时判断设备的技术状况,掌握设备的动态信息,了解设备的实时分布情况,有效地发挥设备效能,提高设备特别是大型石油设备的使用效率,降低企业生产成本,提高企业生产效率.系统功能图如图1所示.

2总体设计

采用面向服务的分析和设计方法进行系统的总体设计,构建统一的框架予以实现.即以服务为中心,根据业务需求发现服务、描述服务,并设计服务的实现.

2.1总体架构设计

运用SOA(Service-OrientedArchitecture,面向服务架构)[2]关键技术SOAP、WSDL、UDDI、ESB,对现行的企业设备管理的深入研究,设计如图2所示的体系架构,实现基于SOA的企业设备管理系统.该平台系统内部各个层次有一定联系,但相互之间也需要保持高度的松散耦合.个性化工作平台用于统一用户访问入口,并集成化整合展示设备管理系统的各种信息和交互功能;流程整合支持层用于集中开发制定基于业务流程管理(BPM)的流程应用,将中石油工程技术当前以及未来开发的各种IT应用资源在该层次上进行流程化组织和编排;服务总线(ESB)层是设备管理系统实现SOA架构的核心,系统将各种资源封装为标准服务,统一注册管理到该平台,并对服务进行定位、合法性校验、服务监控、服务版本控制等服务管理.

2.2SOAP引擎设计

SOAP引擎[3]负责将用户的页面请求封装成SOAP消息发给业务处理层,再将业务处理层从数据访问层拿到的数据变成SOAP消息返回给用户.本系统按照使用Axis引擎、RPC调用方式,使用自定义Soap引擎、SoaponHttp方式,使用SOAP引擎的定型3个阶段实现.Axis从本质上说,就是一个SOAP引擎,在提供一对一的服务时能满足系统要求.然而由于系统的复杂性或需求的多样性,有时单个服务满足不了业务需求,需要提供一对二,甚至一对多的服务,如面对不同的石油钻探、勘探企业,用户可能需要钻井公司设备的基本信息的同时,还需要录井、测井公司的设备信息或者其他需要的信息,一个服务就满足不了要求,为此,系统在Axis基础上构建了一对多的服务.同时,为保证数据的完整性和一致性,系统采用了数据库对事务处理的方式,使其服务具有原子性,确保系统的可靠性和健壮性.通过从实际需求出发,SOAP引擎经过重新设计与改进,最终成为系统使用的SOAP引擎.

2.3SOA平台组件设计

系统整体SOA平台组件架构如图3所示.其中,WPS是IBM的WebsphereProcessServer,它处理服务之间数据流转.业务组件用于从MVC客户端向核心服务层发出服务请求,支持HTTP、SOAP两种可灵活配置的传输协议;业务服务接口组件采用通用的Fa-cade设计模式[4-5],目的是用通用的统一对外的业务服务接口来满足业务服务的请求与处理,与业务组件相对应.服务接口组件提供Http和Soap两种服务接口支持;核心组件主要包括页面展示组件、服务调用组件、业务服务组件、数据访问组件.核心组件设计遵从总体技术框架,采用Struts实现MVC端的页面展示功能,采用标准BLH业务逻辑来实现对应的业务服务.

2.4数据库设计

合理的数据库结构设计可以提高数据存储的效率,保证数据的完整性和一致性[6].本系统除权限管理、组织机构表外,与设备相关的数据库表见表1.

3系统实现

3.1开发平台

考虑到系统兼容性和跨平台的需要,系统采用J2EE[7-8]进行开发.开发环境为:JDK的jdk-1_5_系列版本;J2EE的集成开发工具eclipse3.2;版本控制工具为ClearCase;数据库为Oracle10g;Web服务器开发时采用Tomcat5.5.部署时采用IBMWeb-sphere服务器.为使构建的系统框架具有可移植、易扩展和易开发的特点,系统整合了SSH框架(Struts+Spring+Hibernate).整个系统开发框架严格意义上分为4层,即表现层、服务处理层(SOA)、服务层(Service层,也就是业务逻辑层BLH)、数据访问层(DAO层).

3.2系统实现

整个系统的实现是在已有框架和组件的基础上完成,各模块的具体实现过程大同小异.现以成套设备管理为例说明其实现过程.

3.2.1服务定义与注册

根据系统功能设计,成套设备管理包括成套设备溶入、拆分、查看、查询等功能.先对服务名称及相应的操作名称进行服务定义,再通过服务组件向服务总线注册.由于石油设备管理系统是石油生产运行管理系统的一部分,其服务的注册是向生产运行管理系统的服务注册系统注册的,这样有利于对服务进行统一的管理.服务注册地址为192.168.16.12:8100/CNPC_OMS/ET/SOAAdmin/querySLst,可以进行服务名注册、服务类型注册、服务操作注册、服务输入输出注册、服务注册维护等.

3.2.2流程设计

成套设备管理流程设计如下:

(1)点击页面功能菜单中的成套设备管理,url转向setDeviceQuery.do路径,调用service服务成功后,转向setDeviceQuery.jsp,并将获得数据用EcT-able组件在前台显示.

(2)点击setDeviceQuery.jsp页面点击溶入按钮,转向setDeviceSplitJoin.jsp,页面左面是个成套设备树,右边是节点设备信息.

(3)操作员点击成套设备树上的节点,setDevi-ceInfo.do调用后台服务,将返回的设备信息在右边的setDeviceInfo.jsp页面中显示.

(4)点击选择设备按钮,url转向setDevice-QueryByWin.do,调用service,弹出设备台帐窗口,选择要溶入的设备,点确定.

(5)点击溶入按钮,转向setDeviceJoin.do,调用service,执行溶入操作,返回setDeviceSplitJoin.jsp页面,在窗口中选中的设备成为成套设备树上所选节点的字节点.

(6)选中要拆分的节点,点击setDeviceSplitJoin.jsp页面的拆分按钮,url转向setDeviceSplit.do,拆分成功后进入到setDeviceSplitJoin.jsp页面,选中的节点从成套设备树中拆掉.

(7)点击setDeviceSplitJoin.jsp页面的返回按钮,url转向setDeviceQuery.do,返回setDeviceQuery.jsp页面.

(8)ActionForm组件设计.采用对Struts的改造的方法,在程序中不需要定义Formbean,程序自动读取页面form中的数据,自行生成ActionForm.

3.2.3Action设计

Action接收来自JSP页面消息,并把消息传送给SOAP.同时,接收Soap引擎回传的结果并将结果传送给JSP页面展示.Action设计包括查询成套设备信息操作SetDeviceQueryAc-tion、成套设备溶入操作SetDeviceSplitJoinUpdateAc-tion、成套设备拆分操作SetDeviceSplitJoinUpdateAc-tion、成套设备查看操作DeviceAccountViewAction.此外,还有业务处理组件(BLH)设计与实现,该组件负责接收SOAP引擎传来的消息,并返回从DAO得到的结果;数据访问组件(DAO)设计与实现,该组件主要通过Hibrate来实现对数据库的访问;前台配置信息,前台MVC必须配置Struts的配置文件,描述每一个Action的跳转结果页面以及对应的后台服务名称和操作名称;后台配置信息,定义后台服务实现类为com.cnpc.oms.service.pub.de-vice.account.blh.CommSetDeviceBLH,该类需要在WebSphere服务器中进行定义注册,保证服务管理组件能够加载和寻找该业务逻辑处理组件,在Spring的配置文件cn-applicationContext-device.xml中定义服务用到的DAOBean;页面展示,对于需要列表显示的数据,得到service返回的业务数据,采用封装的页面EcTable组件显示数据(setDe-viceQuery.jsp).

上一篇:国内电子商务发展状态及必要性 下一篇:风险投资及高额赔偿下有限时间破产概率