与中石油分享SOA成功实践

来源:互联网 发布:js 表格导出 插件 编辑:程序博客网 时间:2024/06/09 23:01
中国石油天然气集团公司的“生产运行管理系统”系统是一个地域上覆盖了中国石油十大油田,业务领域涵盖了物理勘探、钻井工程、测井、录井、试油和井下作业等专业应用的信息管理系统。在这个项目中,我们选择了SOA(service-oriented architecture)作为项目架构设计的指导思想,根据项目实际情况,在业务需求分析、宏观设计阶段和详细设计阶段,结合SOA做了一些有益的尝试。该项目是在整个企业层面实施的SOA项目,从中获得很多实践经验。在此与读者一起分享。

项目背景

    中国石油天然气集团公司在中国石油工业发展的50多年里,形成了一个为勘探开发提供技术服务的完整的服务体系,包括地球物理勘探、钻井工程、测井、录井、试油、井下作业等专业,是世界上最大的石油行业综合服务商之一。为了充分利用信息技术改善管理水平,加快进行信息化建设,明确提出利用40个月时间完成“生产运行管理系统”的建设。
    本项目的建设采取先试点、后推广策略,先在四家单位进行试点实施;试点成功后形成标准化推广模版、系统运行模式和系统运行相关管理制度,然后向其它工程技术服务业务的单位推广。

项目目标

    项目目标是,加强集团公司、地区公司对工程技术服务重点工程和总体业务的管控;增强各专业分公司的指挥调度和跨专业的协调能力;提高工程技术服务现场的管理水平,规范业务操作流程,提高作业效率,降低生产成本;实现油气田工程技术服务生产运行管理信息化,从而提高整体业务水平。
    项目试点阶段的目标是:

  • 开发具有自主知识产权的集团公司油气田工程技术服务生产运行管理系统
  •  完成系统在试点单位的实施
  • 总结系统实施的标准化流程、实施模板,积累系统日常管理维护的经验,为系统的推广做好准备

    项目推广阶段的目标是:将生产运行管理系统推广到集团公司范围内拥有工程技术服务业务的单位。

项目范围

1. 组织范围
    生产运行管理系统将在集团公司内从事物探、钻井、测井、录井、井下作业等油气田工程技术服务的企业中推广使用,将支持集团公司总部、地区公司/专业公司、专业分公司和作业队四个业务层面的生产运行管理。

2. 功能范围
    本系统以集团公司油气田工程技术服务的生产运行管理为核心,建成满足工程技术服务生产运行管理需要的应用系统。系统必须具备以下功能:
    现场管理:记录现场生产动态,监督标准工作流程能够被准确执行;汇集人员使用、设备运行、物料消耗等信息,实现作业现场/作业单元规范化、信息化管理。
    生产监控:通过现场生产管理数据收集和共享,增加基层单位生产的透明度,提高管理层/甲方的监督、指导、控制、指挥能力;支持专家远程协作。
    指挥调度:实现地区公司生产指挥调度,支持生产组织协调、物资及运输管理等工作;实现工程技术队伍的跨专业协作。
    统计分析:收集并汇总生产管理信息,满足地区公司管理生产的需求,满足集团公司总部生产数据收集和统计的需求。
    数据传输:实现作业现场生产管理数据的远程传输,提高生产管理数据的时效性。

架构思考及抉择

    在项目的开始阶段就面临了一系列问题:项目范围覆盖了多个不同的专业系统,如何进行业务需求的收集和梳理;各个业务系统因为专业性很强而需要单独构建,这些专业系统如何有效集成起来也是一个挑战;项目将在十个油田分阶段实施,这些油田现有的专业系统和业务流程有很大的相似度但也各有特色,如何最大程度的进行流程标准化的同时,又要对各个油田的IT现状进行兼容并蓄,这也是本项目的特色之一。
    目前业界流行的SOA架构设计思想虽然众说纷纭,普遍共识是以服务为核心、松耦合、高重用性和标准化是其重要架构特色。结合项目的实际情况,我们在本项目中尝试使用SOA作为项目的指导方法论。在具体实践上,我们使用IBM SOMA(Service Oriented Modeling and Architecture)作为具体实践准则。
    鉴于篇幅原因,SOMA本身不作为重点进行讲解。简单来说,引入SOMA的最终目标是构建基于SOA解决方案,它是扩充了已有的方法来解决SOA方案中相关的新要素——服务。SOMA的核心在于如何进行服务的标识和说明,为此它提供了一系列手段,以业务组件分解和分析为基础,生成所需要的服务模型和其它架构要素。在本项目中,我们使用SOMA把客户的业务需求转换成系统、应用、流程、服务,由此得到的服务模型将作为技术架构设计的基础。

SOA/SOMA在本项目中的实践

    下面简单介绍一下如何通过SOMA进行业务需求的分解和服务识别。
    在需求分析阶段,首先借助CBM, 达成对业务分类的共识, 使用IBM的业务组件模型(CBM)方法论,对需求进行组件划分,并作为需求分析的起点。


图1


    其次根据CBM模型,采用SOMA方法进行需求分析和挖掘,在这里我们主要使用的是自顶向下的方法进行逐级分解以达到细化的目的。如下图所示。


图2


    通过上述方式,获得了服务/功能的层次关系和列表,详见下图。


图3

  • 在完成功能分解后,使用功能树整理所有相关功能点,形成统一的视图;并以表格的方式就每个功能分析其特征,看能否继续分解。
  • 通过对每个功能点的进一步分析,明确其是否能够被系统支持、优先级等要素。

    完成了上述三个步骤后,我们基本完成了将业务需求转换成服务/组件的工作,得到的服务模型将作为宏观设计的输入。
    在宏观设计阶段,围绕人、信息、服务及流程完成从需求到设计的转换,并生成各种宏观设计文档,包括总体规划、界面设计、流程设计和数据设计等。具体关联如下图所示。


图4


    下面图示描述了SOMA使用过程中的一些关注领域和项目工作文档的关联性。 我们对方法论的使用上做了一定的裁减以适合项目现状。


图5

描述

    根据生产运行管理系统建设总体规划、建设目标和主要功能,系统选用SOA技术架构作为系统实现的模式。参考架构如图所示。


图6

  
    该平台功能展现层、流程支持层、服务总线层、数据访问/系统连接层、数据模型及数据存储层以及报表系统构成。
    系统平台内部各个层次有一定联系,但相互之间也需要保持高度的松散耦合关系。不同层次可以独立进行建设和更新,层次之间可以支持跨层的调用方式。任一层次的更新修改都需要尽量降低对系统内其他层次的影响,同时所做的更新建设工作必须要能够快速进行重用,以支持其他不同层次对它的使用。
    下面对各个层次逐一进行简单介绍。
  
1. 功能展现层
    功能展现层用于统一用户访问入口,并集成化整合展示生产运行系统的各种信息和交互功能。功能展现层需要实现包括任务管理以及各岗位所需功能的展示和灵活定制,能够适应岗位或组织结构变化。此外需要考虑日后和企业门户系统的集成。
    主要功能:
    界面框架
    界面框架用于展示生产运行系统的各种信息。各类信息分组形成不同的内容组合,以一些独立的小窗口排列在门户页面上,方便用户对内容和应用的访问。门户界面表达元素应当有多种内容构成(如图形、表格、主动的内容推送等),用于定义用户访问门户时的直观体验。此外需遵循统一的页面风格、颜色、字体等视觉效果设计规划。
    多渠道接入服务
    多渠道服务可以在Web上、通过电子邮件或通过无线设备提供特定格式内容,使之通过选定的渠道到达客户端。利用信息/功能展现平台提供的内容管理和格式转换功能,将特定信息加以转换,使之能够适应客户端设备。
    离线访问和处理
    移动设备以及不具备通讯连接的作业现场,用户并不能保证总可以连接到网络中进行联机的处理。这样,在本系统必须考虑离线访问和离线的表单提交。
    信息推送,并进行方便的处理
    移动设备“移动”的特点,使传统的“拉”方式,即由使用者频繁的连接服务器,并检查有无需要办理的事务的方式不能完全满足用户的需求。本系统除了实现传统的“拉”的方式以外,必须实现“推送”功能,即待办事务产生后,系统应能够通过消息方式(如及时消息)通知用户。
    提供基础平台的生命周期管理
    对展现平台的生命周期管理主要目的在于通过缩短构建、部署和管理门户的时间,来加速本项目的实施速度。它应当基于J2EE技术之上,提供扩展的开发框架,使之能够支持服务开放标准的各类组件,并使本项目能够按时完成开发。同时,在系统平台层面提供更高的可用性和安全性。
    集成化设计开发环境
    集成化设计环境为构建本系统提供一种可共享的编程模型。利用这个设计环境,开发人员可以使用相同的、简化的方法来构建Web服务、业务流程和集成项目,并将其部署在J2EE标准的应用服务器之上。
  
2. 流程支持层
    流程支持层用于集中开发制定基于业务流程管理(BPM)的流程应用。将中石油工程技术当前以及未来开发的各种IT应用资源在该层次上进行流程化组织和编排,可以支持生产及管理相关流程、复杂应用逻辑的部署和管理。利用J2EE所提供的底层基础设施服务,保障应用系统的高可用性。
    主要功能:
    BPM用来提供应对业务变化的能力。借助BPM,用户可以自动编排构成业务流程的各步骤顺序,从而提高业务运作效率。
    通过成熟完善的流程建模工具,建立跨越多个内部系统、外部资源以及人工工作流的业务流程模型,并执行这些业务流程,使得系统具有直观清晰的用户界面,用于创建、测试、诊断和部署特定的业务流程。
    通过动态集成服务,充分利用J2EE提供的稳定高效平台,用于支持消息、Web服务、集群、安全等多种支撑功能。
  
3. 服务总线层
    服务总线层是生产运行管理系统实现SOA架构的核心中枢系统。利用该层次,生产运行管理系统可以将目前已有的各种异构IT资源以标准化的服务形式统一注册管理在服务总线层。基于服务的元数据管理(Metadata),对服务进行定位、合法性校验、服务版本控制和注册管理等多种服务。
    安全服务和服务管理功能将在系统内建立多种安全策略,实现信息安全的控制和管理内容,以保障服务的访问安全以及服务运行质量。
    主要功能:
    服务注册
    服务注册用于实现分布式访问和浏览的集中式服务注册中心,存储了完整的服务、模式、变换、服务接口和Web Service策略信息。
    服务管理
    管理能力对于服务总线而言是至关重要的,不仅能满足服务集成需求,还需要在公共层提供智能化的可管理基础架构。
    通过在运行时汇总关键的统计信息并在管理员定制的范围内实现实时管理信息的可视化,服务总线能够支持系统运行状况的全面监控。
    除此之外,还要提供错误报警功能,用于监控系统性能和触发报警。报警可以通过灵活的机制自动启动必要的响应,这些机制包括电子邮件通知、触发的业务过程或管理控制台报警等多种方式。
  
4. 数据访问/系统连接
    数据访问层将针对目前中石油生产运行系统数据形式多样、内容格式不同、物理存储位置分散等特点,通过统一的方式实现数据的存取。对于外部系统提供的数据使用标准的系统连接方式加以实现。
    为了支持多种系统连接能力,需要支持多种传输协议,用于保障生产运行管理系统与外部系统或者内部各层次的连接,确保未来系统的扩展不受技术和底层通讯协议的限制。
  
5. 数据存储/数据模型
    针对油气田工程技术服务的特点,结合国内、国际行业相关规范建立适合中国石油的数据模型,并在此基础上完成数据库表的设计部署。
    数据存储能够支持大数据量的处理和存储、与外部系统的批量数据交换(导入/导出)、合理的数据备份方案、数据存储访问的优化,提供数据维护策略。

6. 报表系统
    提供报表处理功能,以满足系统对各类报表的需求,如报表模版定制、报表自动生成、生成多种形式的输出格式(如PDF/EXCEL)、图表显示等。由于本系统包含报表种类繁多,且随着业务的发展会逐渐产生新的报表需求,要求本系统提供报表定制工具能够满足用户自行定制的需求。

应用架构

    从系统应用架构角度来看,生产运行管理系统分为:用户界面层、应用层、数据层和系统接口,如下图所示。


图7

  
    用户界面层分为内部用户和外部用户。在内部用户层面分成集团公司用户、地区公司用户、专业分公司用户、作业队四个层次的用户;外部用户包括甲方/油公司和非本地区公司作业队。用户可以通过灵活的方式接入系统进行生产管理和监控。

经验总结

  •  本项目是一个典型的应用开发项目。通过在一个地区的试点建设,然后在多个区域进行推广。而不同地区之间具有一定的差异性,需要通过SOA的灵活性,达到对多变化的支持。并可进一步实现功能快速定制和部署。
  • 本系统在需求、设计阶段通过对上述方法的采用,系统地分析了业务功能,为基础功能及基础数据的标准化做好了准备。
  • 开发阶段可以实现人机交互与业务逻辑的并行开发,通过以上讲述的方法,在保证质量的前提下可以有效提高系统开发的速度。
  • 为与其他系统地集成打下了良好的基础。本系统建设了通用的工作流平台和ESB。
  • 完成了中石油自主知识产权的先进平台建设。本方案基于J2EE平台建设完成了人机交互和核心服务系统,可广泛用于其它项目的建设。
原创粉丝点击