APP下载

基于J2EE平台电量计量报表系统的设计与应用

2010-07-03陶晓峰彭钊轶

电力工程技术 2010年1期
关键词:电量报表计量

陶晓峰 ,彭钊轶 ,陈 琪

(1.东南大学软件学院 江苏 南京 210096;2.国电南瑞科技股份有限公司 江苏 南京 210061)

随着电力体制改革的不断深入,各电力部门对生产数据要求也越来越高,尤其是电量数据,因为直接关系到用户结算等方面的需求,所以如何从大量的数据中快速、高效、准确地提取用户需要的数据,形成特定格式的报表,成为了用户的基本需求。同时报表还担负着信息发布和交互数据的功能[1,2]。

由于现在的报表产品大部分是基于商业目的,其通用性比较强、相对独立,但是对于具体的业务系统来说还是有很大的局限性,不能基于现有的应用平台。本报表系统针对电量计量生产系统的特点,基于已有系统的平台采用面向用户的设计器,把业务数据抽象化、图形化,使用户能灵活、方便地设计出各种形式的电子表格。

1 报表系统的总体设计

现在电量计量系统采用的硬件平台大都是基于UNIX/Windows的混合平台,相应就要求报表系统也能跨平台运行,本文设计的报表系统是基于J2EE平台上采用Java语言编写的,实现了跨平台运行的要求[3]。

本报表系统采用了基于J2EE架构的三层技术,分为数据服务层、应用服务层、客户层,如图1所示。报表设计器(客户层)提供良好的人机交互界面,采用的是类Excel的设计风格;应用服务层封装系统业务逻辑数据,提供数据引擎,这样既使服务逻辑和业务逻辑分离,又可以提高获取数据的效率,实现系统业务的组件化,有效提高程序的复用性;数据服务层一般采用商用数据库,封装一些数据对象接口给应用服务层。系统通过J2EE平台的Web容器对外发布报表,用户直接在客户机上通过IE等浏览器就可以查看和下载报表[1,4]。

图1 报表系统架构

2 报表设计器

2.1 报表格式和数据内容定义

由于本报表设计器采用Java Swing编写的类Excel的设计风格[5],使得用户对报表设计器的使用不是那么陌生,增加了亲和力,报表支持导入/导出Excel文件,设计器能完全兼容Excel包括Cell格式、公式、图表等在内的大部分内容,并能支持多Sheet方式,包括Sheet间的互相引用等功能。最重要的是设计器本身针对电量计量系统的业务进行了抽象和概括,首先利用电力系统CIM模型把电网模型树形化,这样能使用户能快速定位到需要定义的设备上。其次对每种数据业务进行了分析归纳,根据数据的时间属性分成历史数据、统计数据、区间统计数据等几个大类,用户可根据自己的需求定义不同的数据属性,采用这种图形化和用户能理解的描述语言相结合的方式,使报表工具能真正做到面向用户,在用户不需要了解具体的数据结构的前提下也能轻松定义出自己需要的数据。报表设计器还支持按单元格定义的方式能让用户最大程度的灵活组织自己的报表形式,提高了报表系统的灵活性和实用性。

2.2 报表模版的设计流程

该报表系统与传统报表最大的不同是实现了报表真正的模版化,因为电量计量系统的数据不是实时的,而是带时标采集的,采集的数据有可能是前几天的历史数据,用传统的报表预先生成好报表并不能满足要求。本文设计的报表是定义完模版后,预先并不生成好报表,而是用户需要时系统根据用户输入的条件实时地去数据库中抽取数据形成报表。为了实现这种动态灵活的模版技术,如何描述数据属性定义是报表设计器的关键技术之一,本报表系统采用了面向对象的技术,把每个Cell里定义的数据属性封装成一个对象,这个对象描述了要查询数据的类型、查询的相对时间、显示格式等所有信息,在保存报表的时候把对象转化成文本描述存到对应的Cell里,当打开报表时根据每个Cell里的文本描述去逆向生成一个个对象[6]。这些对象结合用户输入的查询条件通过后台服务从数据库中读取数据。取完数据后根据各个对象中的一些格式属性把数据回填到报表中。采用这种面向对象技术后,对以后增加数据种类非常方便,体现了良好的扩展性。报表模版可以保存在本地硬盘,也可以发布到数据库中,发布后在其他客户机或者其他浏览器上就可以浏览模版,如图2所示。

图2 报表模版流程示意图

2.3 报表模版的查询

报表系统的查询是基于J2EE平台,中间层采用sessionBean技术,抽取数据采用DAO+EJB方式,通过后台已经封装好的数据接口提取数据,由于一些不同类型的数据可以通过一次封装取出,报表在查询数据时采用全局优化的归纳算法,对一些对象采取合并查询,提高了查询效率。查询出的数据回填到对应的Cell中,若有的Cell中定义了公式,由报表设计器根据回填的相关数据自动进行相应的公式计算,显示计算后的数据;并能提供各种图形显示,提供比较直观的变化趋势,便于决策者提供分析。

3 报表系统的应用

3.1 报表模版的Web发布

由于现在系统大都是基于B/S结构的,用户都习惯于直接通过浏览器查看报表,报表系统的Web发布采用是JSP+Servlet方式,由用户通过输入查询的时间,由后台实时地生成报表,并能生成HTML、Excel等多种格式,同时还支持报表缓存方式,加快了用户浏览的速度。由于电量计量的数据是比较敏感的,报表系统有严格的权限控制,报表在发布的时候可以选择那些用户有权限查看报表[7]。

3.2 报表的定时生成和打印

报表系统也实现了一些自动化功能,报表系统会根据用户需求按月、天、小时自动生成指定的报表,也可以按预先设计好的分页线自动打印出来,或者按照自适应纸张来打印,比如一些每天要出的一些汇总报表就可以定时在用户上班前打印好,用户上班就能看到自己需要的报表。

3.3 智能报表的实现

一般报表只能提供相对固定的报表,而由于用户需求的不断变化,加上大量的报表模版,对报表模版的修改也会变得很频繁,造成后期的维护非常困难,所以报表系统针对特殊业务提供了智能模版的设计功能,智能模版功能预先定义好一些典型的模版格式,系统就可以根据用户输入的参数自动套用不同的模版动态生成报表,需求变了只需要修改模版就行了,这样大大减少了用户的工作量。

4 结束语

本文设计并实现了基于J2EE平台的报表系统,充分结合了电量计量生产系统的特点,设计了能让用户自己定义数据的图形化界面,并能将做好的报表模版方便地在Web上发布,这个报表系统已经成为了计量系统中不可或缺的模块,已经在多个现场系统中得到了充分运用[8]。

[1] 路 广,王永福,张伯明,等.基于UNIX/Linux的电力市场综合报表系统[J].电力系统自动化,2002,26(14):31-33.

[2]石光亮,王 拓,戈长青,等.电力生产信息统计报表生成器的设计与实现 [J].电力系统自动化,2003,27(21):86-88.

[3] 涂翔云.J2EE权威指南[M].北京:中国电力出版社,2002.

[4]闵 涛,严小文,李 捷,等.基于J2EE架构的新一代电能量计量系统[J].电力系统自动化, 2003,27(22):85-87.

[5]王 鹏,何昀峰.Java Swing图形界面开发与案例详解[M].北京:清华大学出版社,2008.

[6]孙卫琴.Java面向对象编程[M].北京:电子工业出版社,2006.

[7]张洪斌.WebLogic Server系统管理和程序开发指南[M].北京:机械工业出版社,2005.

[8] (美)Marty Hall,Larry Brown.Servlet与 JSP 核心编程[M].赵学良,译.北京:清华大学出版社,2004.

猜你喜欢

电量报表计量
储存聊天记录用掉两个半三峡水电站电量
《化学分析计量》2020年第6期目次
LabWindows/CVI中Excel报表技术研究
关注日常 计量幸福
四川2018年7月转让交易结果:申报转让电量11.515 63亿千瓦时
计量自动化在线损异常中的应用
从三大报表读懂养猪人的成绩单
电量隔离传感器测试仪的研制
基于因子分析的人力资本计量研究
北斗通信在小型水电厂电量采集中的应用