可定制报表系统的设计与应用

2015-01-26 15:54潘永才刘海龙
物联网技术 2015年1期
关键词:逻辑设计报表管理系统

潘永才+刘海龙

摘 要:针对信息管理系统中报表系统设计灵活性差、维护困难的问题,提出一种可定制报表系统的设计方法。该方法将报表设计抽象为报表结构和报表逻辑设计,以数据的形式描述报表结构和逻辑,客户端通过对报表结构和逻辑数据的解析实现报表功能。通过将报表设计数据化,可实现更加灵活高效的报表设计,提高了系统开发维护效率,能够更好地适应报表的多样性和变化性。

关键词:可定制;报表;管理系统;逻辑设计

中图分类号:TP316                     文献标识码:A       文章编号:2095-1302(2015)01-00-03

0  引  言

目前,企业信息化建设已是大势所趋,而报表系统是信息管理系统中的重要组成部分。在传统的报表系统中,报表的结构、查询条件、用户交互、展示细节等信息都是以静态的方式固化在系统代码中,因此在系统开发测试到实施部署的整个阶段,因应用环境变化等因素而必须调整报表设计时,必须修改系统源代码。这种报表设计方式灵活性差,开发维护困难且不具备通用性和可移植性。

近年来,针对如何灵活设计报表系统的问题,涌现了很多研究和开发成果。李广等提出一种基于Silverlight技术的柔性生产报表系统的设计方法,给出了柔性生产报表系统架构与实现方法,并在.NET平台下设计由报表柔性编辑模块、报表生成模块和报表显示模块等组成的柔性生产报表系统,较好地实现了报表的灵活设计[1]。卢笑天等着眼于查询报表的可定制,设计了基于XML的可定制查询报表系统,并提供了与管理系统集成的生产报表的配置接口及解析报表的解析接口,较好地实现面向二次开发人员的可配置查询报表系统设计[2]。

上述研究成果的思想很好地解决了报表生成与展示的问题,但局限于对查询报表系统的研究和开发,不能很好地解决录入系统中与用户交互的复杂业务逻辑的设计,因此迫切需要研究一种灵活的录入报表系统的设计方法。

本文提出一种可定制报表系统的设计方法;给出了可定制报表系统架构与实现方法,在.NET平台下设计了由报表定制模块、报表解析模块等组成的可定制报表系统。

1  报表结构与逻辑抽象

油田采油厂的生产管理报表系统包含大量生产投入和产出要素等基础数据录入和各类管理指标查询报表,大部分数据经手工录入系统。录入报表系统的作用在于将手工录入操作规范化、自动化,提高手工录入效率,减少录入数据出错率。

基础数据录入分为自动生成、手工选择和手工填写三种情况。通过自动生成和手工选择的方式可将录入系统的基础数据规范化,方便对数据进行进一步汇总处理;对于数字量数据通过手工录入加一定的限定方法实现数据的有效性控制;备注等非汇总数据通过手工填写。对自动生成和手工选择的操作的规范称为报表的业务逻辑。

可定制报表系统的设计方法将报表拆分为报表结构、报表数据、报表逻辑,报表设计则包含报表结构设计和报表逻辑设计。报表结构与逻辑均以数据的形式描述并保存于数据库对应数据表中,报表结构数据与逻辑数据相互对立又相互关联,共同决定了报表的显示形式和可执行的操作。

1.1  报表结构描述

报表结构包括构成报表的所有数据列的数据源字段名、列标题文本、数据列格式、宽度、对齐方式等基本信息。数据列的字段名与该报表在数据库中存储的数据表对应字段一致;列标题文本具有一定的可扩展性以适应报表多级列标题的需要。

对完整的报表结构数据进行解析并绑定报表数据内容即可显示完整的查询报表,而完成录入报表设计则需要在此基础上增加业务逻辑的设计与解析。

1.2  报表业务逻辑抽象

在一般条件下,报表数据之间的业务逻辑可描述为一个方法:

y = function (x)

其中,x、y为报表数据元素,x为源数据元素,y为目标数据元素,function为根据源数据元素x生成目标数据元素值并处理用户交互的过程。

根据实际情况,业务逻辑有一下几种形式:

y = text(x)。根据源数据元素x的值获取唯一目标数据元素y的值并绑定该值。

y = list(x)。根据源数据元素x的值获取目标数据元素y的取值列表,绑定该取值列表,用户选择后确定数据值。

x = query(x)。源数据元素与目标数据元素相同,用于模糊查询元素值,根据用户输入的部分内容查询其可能的元素值。

x = round(x)。源数据元素与目标数据元素相同,用于格式化数字类型数据,限制数字小数位数。

x = limit(x)。源数据元素与目标数据元素相同,用于格式化数字类型数据,限制数字大小。

含有两个及以上源数据元素的业务逻辑y = text (x1, x2,…)、y = list (x1, x2,…)等与处理方式与上述类似。源数据元素也可以是报表的基础数据(用来唯一确定报表类型)或某一确定值。

1.3  报表业务逻辑的数据描述形式

报表业务逻辑可用类似结构化查询语言(SQL:Structured Query Language)的形式描述,利用其数据查询语言(DQL:Data Query Language)的查询功能处理报表数据间的逻辑关系。

常用的数据查询语言语句如下:

SELECT resultField FROM table WHERE field = conditionValue;

将特定的SQL语句中的conditionValue以源数据元素x的值代替,其返回为目标数据元素(y)的值或其列表。在业务逻辑SQL语句中,源数据元素x为自变量,将其以花括号环绕以方便解析。业务逻辑描述如下:

SELECT resultField [as y] FROM table WHERE field = {x};

其中,方括号部分为可选项,将返回结果的字段名转换为报表目标数据元素的字段名。

配合SQL Aggregate、Scalar函数,该数据描述形式可实现较丰富的业务逻辑。

2  可定制报表系统设计

本文在.NET平台下用C#语言设计可定制报表系统。

如图1所示为可定制报表系统架构。其核心为报表解析模块和报表定制模块,而对报表进行结构与逻辑抽象则是报表定制和解析的核心。数据交互模块完成客户端与数据库之间数据交互。报表解析模块通过数据交互模块获取报表结构与逻辑数据对报表进行功能解析,完成报表系统与用户交互的底层功能,为报表系统提供支持。报表定制模块根据报表结构与逻辑的描述方法完成报表的定制功能。

2.1  报表解析模块

报表解析流程框图如图2所示。报表解析模块从数据库中的报表结构表和报表逻辑表中读取指定报表的结构数据和逻辑数据,进行结构解析和逻辑解析,生成报表结构,完成逻辑解析的初始化,等待响应用户交互。

图1  可定制报表系统架构

图2  报表解析流程框图

结构解析过程为:根据结构数据生成报表的数据列,设置列标题、列字段、列宽、可读属性等信息,对于有多级列标题的报表,自动检测合并相应的标题单元格。

逻辑解析流程框图如图3所示,其具体过程为:对报表逻辑数据作简单处理后生成数据关系字典(逻辑字典),尝试对报表逻辑数据进行SQL生成与查询,对于初始化过程中可以确定的报表数据保存在基础数据字典中。对于用户交互过程中的请求,处理程序首先搜索基础数据字典,若存在其需要的数据,则直接以该数据响应用户请求;若不存在,则从逻辑字典中读取对应逻辑数据,生成SQL并以查询结果响应用户请求。

图3  逻辑解析流程框图

SQL生成与查询是将逻辑数据中的变量赋值为当前操作数据记录中的对应数据元素的值或用户基本信息的值,从而将逻辑数据转换为标准SQL语句,执行该语句并获取查询结果。

报表解析模块对DataGridView控件进行自定义,使其能够根据报表结构数据自动生成报表结构,支持多级行列标题,支持报表行列转换;通过对CellEnter、CellLeave、CellValueChanged、CellEndEdit、KeyPreview、Scroll等事件的处理对用户操作做出适当响应;增加对报表增、删、改、查的自动执行过程。

2.2  报表定制模块

报表定制模块的作用是以图形界面的形式灵活方便的对报表结构和逻辑进行定制。报表系统开发者可以从一张空白报表模板表上完整的定制报表结构和逻辑细节,也可以将Excel报表框架或数据库中已定制的类似报表导入空白模板表,进行报表结构和逻辑细节完善。报表结构和逻辑设计完成后,生成的结构和逻辑数据将分别保存至数据库的报表结构表和报表逻辑表中。

对报表结构和逻辑抽象成数据形式描述后,可以灵活地对报表进行个性化的定制。例如:对于同一报表不同类型的用户可以独立定制,使其显示形式和业务逻辑更符合用户个性化的需求,而对于其中相同的部分,不用重复设计。

2.3  报表系统设计

报表系统分为录入系统和查询系统,通过报表导航模块和报表解析模块等模块实现系统功能。用户通过报表导航模块选取某报表后,系统调用报表解析模块并初始化用户基础数据,通过报表解析模块实现用户交互操作。

根据报表解析模块中的报表结构等相关信息,可实现录入报表Excel导入与纠错的功能和各类报表数据导出至Excel、PDF等文件的功能,并支持报表批量导出。

2.4  报表定制系统设计

报表定制系统通过报表定制模块定制报表并通过报表解析模块测试定制报表的实现效果。设计者可循环对报表设计进行修改和测试,直到定制报表满足设计要求。整个报表系统设计完成投入使用后,若因使用单位组织调整、应用环境变化等情况必须对报表系统做出调整时,更新数据库中的结构和逻辑模板表即可实现,无须对已安装的客户端程序进行更新,因而系统的开发维护更新更为灵活高效。

3  结  语

本文提出的可定制录入报表系统的设计方法,将报表设计抽象为报表结构与逻辑设计,将报表的结构数据和逻辑数据保存在数据库对应的数据表中,可实现更加简单高效的录入报表设计,更加灵活精细的报表定制,增强了数据的复用性,提高了系统开发维护的效率,能够更好地适应生产过程中报表系统的多样性和变化性。应用该方法设计的报表系统已成功应用于国内某石化企业的生产管理信息系统中,取得了良好的应用效果。

参考文献

[1]李广,王建林,赵利强,等.基于Silverlight的柔性生产报表系统的设计[J].计算机工程与设计,2013(7):2595-2598.

[2]卢笑天,唐慧佳.基于XML的可定制查询报表系统的设计与应用[J].计算机工程与设计,2014(5):1847-1852.

[3]许南山,孙风平.基于XML的可复用报表生成系统的设计与实现[J].计算机工程与设计, 2006,27(3):463-465..

[4]巫乔顺,彭海波,李杰.一种自定义动态报表系统的设计与应用[J].机械设计与制造工程,2013(1):80-82.

[5]宋晓宇,刘蔚然,刘天波.基于组件的自定义报表系统的设计与实现[J].计算机工程与设计, 2008(11):2963-2966.

[6]霍志华,王建林,薛尧予.基于工作流和XML的生产报表系统设计与实现[J].计算机工程与设计,2008,29(16):4249-4251.

猜你喜欢
逻辑设计报表管理系统
基于James的院内邮件管理系统的实现
LabWindows/CVI中Excel报表技术研究
基于LED联动显示的违停管理系统
火电机组公用电泵系统介绍及逻辑设计
从三大报表读懂养猪人的成绩单
海盾压载水管理系统
基于RFID的仓储管理系统实现
月度报表
月度报表