基于MVC模式的油田开发分析系统的设计与实现
2012-08-20朱航洲
爨 莹 ,朱航洲 ,李 媛
(1.西安石油大学 计算机学院,陕西 西安 710065;2.陕西省生产力促进中心,陕西 西安 710054)
油田开发动态分析在整个油田开发生产过程中具有重要的地位,是保证科学高效地开发油田、保持油田高产稳产、提高油田最终采收率的基础。油田开发分析系统的设计与实现可以帮助地质工作者应用静动结合的方法,分析认识油藏开发水驱规律、科学总结历史经验、高效率研究开发生产现状及动态变化特征、科学评价开发效果,为开发决策提供准确分析信息支持,从而实现油田开发生产良性循环。
1 系统分析
本文是针对安塞油田开发的分析系统,其功能模块如图1所示。系统的主要功能包括:数据采集、数据查询、报表生成、单井分析、井组分析、区块分析和系统管理。
数据采集模块包括:开发静态和动态数据、动态监测、分析化验、井下作业、储量、方案规划、采油管理、油气集输、成果等数据的采集。
数据查询模块包括:单井静态数据、单井动态日数据查询、单井动态月数据查询、单井动态年数据查询;井组动态日数据查询、井组动态月数据查询、井组动态年数据查询;区块动态日数据、区块动态月数据查询、区块动态年数据查询[1]。
报表生成模块包括:油田开发综合数据表、油田产量构成数据表。
单井分析模块包括:单井概况[2]、动态数据表、钻井数据、小层数据、射孔数据、压裂数据、修井数据、测压数据、产出剖面、吸水剖面、注水指示曲线、日动态、月动态进行分析与查询。
井组分析模块包括:井组概况、曲线分析[3]、开发现状分析、小层连通进行分析[2]。
单元分析模块包括:单元概况、综合曲线分析、油水构成分析[4]、开采现状分析、措施效果分析[5]、产量变化分析、等值图分析[6]等。
系统管理模块包括:用户权限、日志、报表系统定制、参数、密码维护等的管理。
2 系统设计
2.1 MVC模式
MVC模式(Mode-View-Controller)把应用程序分为模型、视图和控制三层。模型是应用程序使用对象的完整表示;视图是用户交互的界面;控制器用于处理用户和应用程序的交互操作。采用MVC模式具有如下优点:(1)显示与业务分离,易于程序维护[4];(2)模型可移植性好,一个模型在运行时可以建立和使用多个视图[4];(3)有利于软件工程化管理。
图1 系统功能模块
本系统的 MVC(模型/视图/控制)模式在表示层实现,如图2所示。
图2 系统架构
2.2 系统架构设计
安塞油田开发分析系统的设计本着灵活、可扩展、开放、安全的基本原则,系统的组织结构采用B/S架构,设计模型遵循MVC模式。整体体系采用分层模式设计,以提高系统的灵活性。如图2所示,系统在整个结构上分为三层,三层之间相互独立,层与层之间通过接口通信。表示层的设计基于MVC模式,依据业务逻辑层,展现系统功能、提供用户的交互界面和业务逻辑控制。业务逻辑层提供系统的基本业务逻辑管理和扩展业务逻辑管理。基本业务逻辑提供最基础和核心的系统信息,包括界面组成的信息、界面的数据信息、界面的元数据信息。扩展业务逻辑提供相关业务领域的逻辑,包括报表、分析等。数据访问引擎提供了统一的数据模型,为上层访问数据提供一致的接口,在驱动引擎方面,提供了可扩展接口,以满足不同需要。此层提供了两个层次的服务:用户数据访问服务和系统管理数据(元数据)访问服务。
2.3 系统数据库设计
系统使用Oracle数据库,系统涉及的数据表包括开发静态和动态数据、动态监测数据、分析化验数据、井下作业数据、方案规划数据、采油管理数据、油气集输数据、储量数据、成果数据等共计179张表。数据库表分类统计如表1所示。
系统数据库设计引入中间数据库。油田开发生产过程中所产生的数据(包括静态数据、动态数据、测试数据等)通过导入或手工录入的方式加载到开发分析系统数据库。为了提高系统查询性能,系统引入了中间数据库。中间数据库的数据是面向分析和业务领域的数据,它是通过对基础数据在后台进行汇总得来的数据。油田开发分析过程中所使用的数据可直接从中间数据库提取,无需从基础数据库计算得到,从而提高了系统的查询速度。
表1 数据库表分类统计
系统引入元数据模型对数据字典进行管理,以增加系统设计的灵活性。
2.4 系统接口设计
系统整体设计为框架系统,由系统组织与控制层整合每个层面,每个层面都有自己的扩展机制,以满足系统未来不同侧面的需求。数据引擎层提供了各种不同驱动类型的扩展;业务层提供了不同业务领域的业务逻辑扩展;表示层提供了不同业务领域的界面扩展。其目的是使核心层(系统框架层)与业务层隔离,保证系统良好的伸缩性。系统从整体到部分,处处都体现了这种核心设计理念。每一个层面的主要功能如下:
(1)IlayOut接口:表示层接口,负责提供核心控制器,将界面调用信息转发到业务逻辑层及其他层来处理;控制器将业务逻辑层数据显示在界面上;对系统界面提供管理和服务,为每一个组件(界面组件)注册相应的系统服务,使组件能得到正确的服务,为组件实例化提供数据。表示层设计使用MVC设计模式将数据和逻辑强制分离,以便于程序的维护。
(2)IServer接口:系统业务逻辑基础层接口,此接口提供了注册服务,获取服务的基本功能。其他扩展服务需要注册到系统中来,由系统统一管理,为上层提供服务。此外,IServer接口还包含了IInfoDispath接口和IDataConstitution接口,通过这两个接口公布系统另外层面的信息。其中,IInfoDispatch接口提供界面的构成信息,包括用户当前界面由哪些页面(或页面元素)组成,每一个页面的具体信息内容。IDataConstitution接口提供用户数据的管理信息(元数据),如表的中文名称、更新语句、字段信息(如字段的类型、大小、是否统计、是否转换、是否多值等)。
(3)IServerEx接口:系统的相关业务领域逻辑,如:报表业务逻辑、数据分析业务逻辑、数据审核业务逻辑、系统管理业务逻辑。
(4)IdataAcess接口:用户数据服务接口,提供用户数据查询、数据更新服务。
(5)ImetaData接口:系统数据服务接口,提供系统信息,如系统的组织信息、权限信息等。
3 系统实现
本系统实现基于B/S架构,采用MVC模型。其主要接口实现技术如下:
(1)表示层接口 ILayout实现
接口ILayout由LayOutManager实现,LayOutManager负责管理系统的三个方面:视图TempLate、控制器(包括核心控制器Controller和扩展控制器 ControllerEx)、模型model。例如,在数据录入界面中,所有可供选择的下拉框中的数据由model负责加载,用户录入区域由TempLate实例化。其中:
视图TempLate模板:是用户操作区的抽象,管理着各种BrowseEditor的集合和BrowseEditor之间的界面关系,类似于HTML中的FrameSet,负责分割用户操作区的界面、管理界面之间的外观次序等。
BrowseEditor浏览编辑器:抽象类TempLate中的每一个界面由BrowseEditor的派生类完成。
MiulitPage多页组件:BrowseEditor的子类,完成多页容器逻辑。如日数据录入的主录入区。
SimplePage单页组件:BrowseEditor的子类,完成单页容器逻辑。如日数据录入的副录入区。
控制器:由核心控制器Controller类和扩展控制器ControllerEx类实现。
模型:由数据引擎层实现。
(2)业务逻辑层接口 IServer实现
IServer接口由核心服务类SeverManager实现,SeverManager管理系统所有的服务,实现IServer接口、服务的注册、服务的提供。SeverManager本身只是其他服务的管理者,不提供任何具体的服务,即使是页面基础服务和用户数据模型服务都只是简单的代理,具体由类InfoDispatch和类DataConstitution来完成。
InfoDispatch:信息分发,是系统功能关于页面的信息,包含页面构成、页面类型,如单页面或多页面。
DataConstitution:数据构成信息,系统功能下表、字段及相关的信息。
(3)数据引擎层 IdataAccess和 ImetaData的接口实现
数据引擎层包括两个部分:用户数据访问和系统数据访问 (元数据访问)。把这两层统一在数据层封装起来,为上层提供一致的数据访问服务,同时把数据访问与业务逻辑分离,如图3所示。数据引擎设计的原则是用户接口简单、使用方便,因此内部使用了连接池和缓冲池,以提高效率。DataDEManager类同时实现了IdataAccess和ImetaData两个接口,为用户提供数据的访问和系统数据的访问,DataDEManager把最后组织好的结果提交给用户,使用户不必关心数据提取的整个过程。在数据引擎层,还实现了以下与数据库管理相关的类:
MetaData:通过XmlCon连接提取系统数据(元数据)。
XmlCon:XML文件连接类。
UserDataSet:对各种数据库相关组件进行封装,提供统一的访问界面。
ThreadPool:线程池。
DataThread:提取数据的具体线程。
ConnectPool:连接池。
OraCon:Oracle数据库连接封装。
AdoCon:ADO连接封装。
OleCon:OLE对象连接封装。
系统实现如图4所示。
本文介绍了MVC模式及其优点,并运用MVC模式开发了安塞油田开发分析系统。该系统能够满足广大地质工作者日常工作中数据查询和分析的要求,使他们从繁忙的数据统计分析中解脱出来。经实践证明,系统基本满足油田开发管理需求,对提高油田决策提供信息支持,为节约油田开发成本、提高油田竞争力起到重要的作用。
[1]田跃辉,李娟,李亚,等.油气田开发动态规律的分析方法研究与应用[J].内蒙古石油化工,2009(19).
[2]李继园,刘展,孟令奎.钻井柱状图可视化查询系统的设计与实现[J].地理空间信息,2009(5).
[3]江厚顺,张祎.高5块低渗油气田产量预测方法分析[J].天然气地球科学,2010(3).
[4]葛文庚,郭斐斐.基于MVC的物流管理信息系统的设计与实现[J].电脑知识与技术,2010(8).
[5]刘春林,肖伟.油田水驱开发指标系统及其结构分析[J].石油勘探与开发,2010(3).
[6]檀朝东.油气井与油气田开发动态分析技术[M].北京:中国石油大学,2010.