基于PCMS和Oracle数据库项目图表开发
2022-12-08刘加伟陈文娅宋亚楠
沈 彬,刘加伟,陈文娅,宋亚楠
(海洋石油工程股份有限公司数字化中心,青岛 266520)
0 引言
工程项目建造管理信息系统(Engineering Project Construction Management System,PCMS),是海洋石油工程股份公司与海克斯康PPM基于Smart Plant系列产品(Smart Foundation、Smart Material、Smart Construction、Smart Weld Quality Manage System、Smart Completion和可视化图表网站),结合海油工程公司个性化的工程项目管理需求,通过配置与二次开发打造完成的一套工程项目建造全过程管理(包括设计数据和文档管理、材料管理、施工管理、质量管理、机械完工管理和调试管理)信息集成系统。
1 开发需求
每一个项目的管理者对项目的工作量统计和进度统计等都可能提出一些特定的需求,一方面管理者可能会频繁提出新的报表统计需求,另一方面项目管理过程中可能急需使用这些报表,因此留给开发人员的开发时间就会很短。基于项目报表开发的上述需求和开发特点,本文提出了直接使用Oracle函数和视图快速开发报表,最后使用报表定时同步技术和网站图表可视化大屏显示技术将生产进度详表和图表呈现给用户。
2 Smart Foundation数据库
在Smart Plant系列软件产品中与项目建造进度直接相关的施工管理软件(Smart Construction)和质量管理软件(Smart Weld Quality Manage System)都是基于Smart Foundation开发的,它们的后台数据库都是Smart Foundation的数据库。Smart Foundation数据库可以是Oracle或者SQL Server数据库,本文选择了Oracle作为它的数据库管理平台。下面两小节介绍Smart Foundation数据库中相关数据表存储信息的类别以及每一个字段的作用,这是进行数据库函数开发的基础。
2.1 Schema数据表
Smart Foundation数据库是一种非常独特的数据库,在Object对象数据之上定义了Schema(Schema指的是类、接口、属性、关系等定义信息),它是对象信息存储规范的定义,与Schema对象相关的数据表主要是四个表:SchemaObj、SchemaObjPr、SchemaObjIf、SchemaObjRel。通过上述四个数据表可以获得所有Schema对象的定义信息。
2.2 Object数据表
Smart Foundation数据库中与Object数据对象相关的数据表主要是四个表:DataObj(用于存储所有对象的基本信息,包括UID、所属类、所属工厂、创建日期等字段);DataObjPr(用于存储所有对象所包含的每一个属性的信息,包括属性UID、属性值等字段);DataObjIf(用于存储所有对象所包含的接口的信息,包括接口UID、创建时间等字段);DataObjRel(用于存储所有对象之间的关联关系信息,包括关联关系UID、UID1、UID2、创建时间等字段)。通过上述四个表可以获得每个Object对象所实现的类、接口、属性和关系信息。
3 Oracle数据库开发
3.1 Oracle函数开发
由于Smart Foundation数据库表数据存储的独特性,决定了它不是常规的关系型数据库,常规的关系型数据库对象属性作为独立的数据列存在,可以称之为纵向列属性数据,而它采用了横向行属性数据存储方式,这种数据存储方式更加具有扩展性,即每一个属性数据是单独的一行。因此需要通过创建Oracle函数来获得某一个对象的某一个属性的实际值。对于非枚举类型属性值的获取,本文定义该函数名称为:SPC_GET_PROPERTY_VALUE,具体函数定义如图1所示。
该函数有两个参数:objectOBID(即对象的OBID)和propUID(即要返回的属性的UID)。函数的执行过程如下:第一步,先从DATAOBJPR表中返回该对象的属性值和UOM(该属性值是否带单位);第二步,再判断如果该属性值是带单位的,那么它的单位名称是什么;第三步,将该属性的完整内容(即值和单位)作为函数的结果返回给调用者。另外,当某属性是枚举类型时,如果使用SPC_GET_PROPERTY_VALUE函数返回的是枚举项的UID,需要通过枚举项的UID转化成枚举项的DisplayName属性,本文定义该函数名称为:SPC_GET_PROPERTY_DISPLAY_VALUE,具体函数定义如图2所示。
3.2 Oracle视图开发
在完成Oracle函数的开发后,就可以使用Select语句,基于DataObj表获得纵向列属性数据表。以SPC_ComponentWorkTypeStep类的实例数据表为例,Oracle视图的SQL语句如图3所示。
执行上述Select语句返回的SPC_Component-WorkTypeStep类的实例数据表如图4所示。
4 可视化图表网站配置
海克斯康PPM开发了一个可视化图表网站产品(可视化图表网站),该网站采用前后端分离开发技术(前端用Angule,后端用.Net Core跨平台Web API)。该产品有三方面的优势:该网站产品可以通过管理员配置实现报表定时同步任务,可以通过配置将平铺的进度汇总统计报表,用图表的形式展现在网站上;网站实现Windows操作系统、安卓操作系统、苹果操作系统等多操作系统浏览器访问兼容;手机、Pad、电脑、大屏显示器等多种尺寸访问终端页面显示自适应。网站的这三大优势彻底解决了建造进度统计报表分发显示的困难。既减少了系统管理员开发的工作量,又解决了各种显示终端兼容的问题。
4.1 报表定时同步
当项目的数据量达到百万行这个级别后,按照3.2节开发的视图,视图每次运行时间可能要几分钟,如果数据列的数量很多,如果视图和视图之间还有嵌套、合并等操作,复杂视图的运行时间还要更长。另外,当项目的数据量达到千万行这个级别后,视图运行的时间也会增加到原先的十倍左右。因此,夜间报表定时同步功能就非常有必要。可视化图表网站已经完成该功能的开发。管理员通过简单的定时任务配置和SQL语句设计即可完成此项任务。
4.2 报表数据汇总
按照3.2节开发的视图数据表是数据详表,项目管理者需要的可能是经过数据分类汇总后的图表,因此报表数据的汇总工作不可避免。首先可以选择使用Oracle数据库中的统计函数和汇总SQL语句完成此项任务,报表数据分析汇总后形成新的视图,再通过报表定时同步计划任务将汇总数据表下载到网站本地数据库,最终用图表的形式分发给项目管理者。另外,在可视化图表网站中开发数据分析汇总模块,将数据分析汇总工作交给可视化图表网站服务器来完成,这样也可以减少数据库服务器的工作量。
4.3 可视化图表
可视化图表网站中提供了丰富的可视化图表控件,常用的柱状图、饼图、折线图,甚至立体三维图表也在其中,可视化图表显示效果如图5所示。
5 结语
结合海油工程项目建造管理者的汇总报表需求,基于PCMS系统中各软件产品的已有功能,使用Oracle数据库函数、视图和汇总报表开发是一条非常灵活和高效的报表开发解决方案,最后通过可视化图表网站显示和分发给用户。该解决方案的显著优势如下:一方面,大大缩短了报表开发周期,而且在面对频繁地报表开发需求升版时,可以从容应对快速修改;另一方面,它成功地实现了可视化图表在主流操作系统和主流显示终端上自适应兼容显示目标。