作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。
标题 | 基于.NET平台的复杂报表管理系统的结构设计 | ||||||||||||||||||
技术领域 | |||||||||||||||||||
行业 | |||||||||||||||||||
简介 | 对于可实现完全自定义、多维结构,基于工作流的,操作上可以一级提交多级审批的一类复杂报表管理系统,提出了在.NET平台下采用面向对象的开发模式,以及运用ASP.NET、C#等实现技术,并且给出了系统核心的数据结构设计和程序结构设计。 | ||||||||||||||||||
内容 |
1. 引言
2. 系统需求分析及解决方案
2.1 需求分析
表1 技术方案
提供用户登录界面,并识别用户类型、权限等信息。 主要完成报表的增加、自定义、修改、删除、授权等功能。 l 报表定义子模块――完成新增报表的完全定义,定义报表的基本属性、提交模式、审批级数等。 l 报表编辑子模块――对既有报表进行修改、删除等工作。 l 报表授权子模块――对用户、对象(包括报表名称和隶属)和操作类型三者关系进行关联,完成报表授权。 完成报表的查看、录入提交和多级审批功能。 l 报表录入子模块――对新报表进行数据录入和提交,并存储到数据库。 l 报表审批子模块――对已提交数据进行第一级审批,对上一级审批通过数据进行次级审批。 l 报表查看子模块――对自己提交的数据,自己审批的数据进行时候查看;相应权限用户对多级审批通过完成的数据进行查看。 主要完成已审批完成的数据进行自动汇总、生成图表等工作,另外提供数据的导入导出、打印等功能。 完成系统用户的增删管理工作,以及系统权限的授予,提供用户可修改密码等。 3. 系统数据结构设计
1) 数据结构图 由于本系统要求报表定义和操作的高度灵活性和报表复杂性(报表需具有2~4维结构,能够自定义每类报表的工作流程,实现报表的一级提交,多级审批),而且报表能够进行灵活的授权……这些需求都决定了系统数据结构设计的极端重要性,数据结构的是否合理,直接影响了系统的开发和最终实现。 下面提供了围绕用户、报表定义、报表隶属、数据存储、数据操作和报表授权这几个核心模块的数据结构,见图1。
2) 部分表和字段说明 l 多个表中的Valid字段:用于标识该记录的有效性,对于一些比较重要且与其他表主外键关联的记录,直接删除是不妥的,比较好的做法是执行删除操作时将该记录的Valid置0(假设1为有效,0为无效); l 表ReportTable中的TableType字段:标识报表类型,一般为日报表、周报表、月报表、季度报表和年报表等; l 表ReportTable中的SubmitType字段:标识提交类型,本系统分为两种:在线填报提交和离线编辑并上传文件提交; l 表ReportTable中的DutyNum字段:标识审批级数; l 表TableRow中的RowOrder字段和表TableColumn中的ColumnOrder字段:分别标识表中的行名称和列名称的排序号,以保证动态生成的表格能;按照定义时的行列顺序一致。通过改变这两个字段的值即可调整行列顺序; l 表SubmitData和SubmitFile:分别存储两种提交模式下的数据; l 表ReportSubmit中的NowDealState字段:标识目前此记录的操作状态,区分是暂存数据、提交数据、某一级审批中数据、完成数据还是被退回数据; l 表DataDeal:记录用户的操作记录,暂存、提交和审批; l 表ReportImpower中的DutyCode字段:标识用户对某个隶属的某个表格的操作权限,是提交、1级审批还是n级审批; 4. 系统程序结构设计
本系统采用面向对象的开发技术,在.NET框架下,可以实现真正的用户界面与程序代码分离(即“代码隐藏”CodeBehind技术)。利用此特性,我们可以把每一功能模块进行逻辑划分成程序块,再把这个程序块封装成类(.cs文件),然后再把所有的类文件编译成一个动态链接库(.dll文件)。当系统操作需要某个功能时,只要调用动态链接库中的相应类即可。 本系统的程序块较多,限于篇幅,下面介绍两个核心的程序块结构。 1) 动态生成报表程序
这是一个系统基本程序,因为系统在很多操作场景下都需要动态生成报表。 本程序的输入为所选报表的名称(TableCode)、报表隶属(BelongCode)和报表时间(TableTime,日报表为某天日期,周月季年报表为起始日期到结束日期)。程序输出为所生成报表的HTML代码,有三种状态:报表不正确、报表正确但无数据、报表正确且有数据。 2) 操作报表程序 当完成上述动态生成报表后,即进入报表待操作模式。 报表操作分为三个状态:查看、录入和审批(多级审批中具体是哪级审批由报表授权表中的DutyCode字段标识)。 此程序判断环节较多,主要是判断报表状态、用户的操作状态、用户对于此报表的有效权限。根据每一个判断的不同,程序走向也将不同。另外本程序过程中涉及用户录入数据这一环节,当然,录入数据分为填写数据和上传文件两种情况。
图3 操作报表程序流程图 除了这两个核心程序块以外,还有报表定义程序块、报表授权程序块、报表数据汇总计算程序块、报表数据导入导出程序块等等。在此就不一一介绍了。 5. 结束语
基于.NET平台的复杂报表管理系统,实现了对一类复杂报表的最大限度的灵活自定义、报表网上工作流转、报表数据综合处理等。它的面向对象的开发模式和最前沿的开发工具ASP.NET,保证了其良好的可扩展性、移植性和操作性。更加适应当今网络化办公及数据管理的趋势和大型企事业单位的需求。 参考文献
[1] 黄忠成 编著,深入剖析ASP.NET组建设计,北京,电子工业出版社,2004.5; [2] 嘉木工作室 编著,C#编程思想,北京,机械工业出版社,2003.3; [3] 杨正洪 等编著,SQL Server 2000关系数据库系统管理和开发指南,北京,机械工业出版社,2001.9; |