(计算机应用技术专业论文)面向多金融软件系统的综合报表系统的设计与实现.pdf_第1页
(计算机应用技术专业论文)面向多金融软件系统的综合报表系统的设计与实现.pdf_第2页
(计算机应用技术专业论文)面向多金融软件系统的综合报表系统的设计与实现.pdf_第3页
(计算机应用技术专业论文)面向多金融软件系统的综合报表系统的设计与实现.pdf_第4页
(计算机应用技术专业论文)面向多金融软件系统的综合报表系统的设计与实现.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(计算机应用技术专业论文)面向多金融软件系统的综合报表系统的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江大学硕士学位论文摘要 摘要 在一个金融公司的内部,往往会用到各种不同的金融软件系统来配合各种类 型的业务工作。这其中,有不少金融软件系统之间的数据是相互联系的,这使得 有些金融报表会同时依赖于多个金融软件系统中的数据。当这种类型的报表日益 增多时,如何方便地统一设计,制作和管理这些报表就成为一个问题。另一方面, 用户还希望一些日常报表能够被自动化生成以及发送,这些也不可能在每个金融 软件系统中都各自实现一遍。基于这些需求,作者在一家美国银行参与设计与开 发了一个跨多个金融软件系统的独立的综合报表系统。通过开发和应用这个系 统,将提高公司内部金融报表的设计效率,减少之前由不统一的报表类型和不同 的报表设计模式所引起的混乱,并大大减轻了公司职员管理、维护和打印日常报 表的工作量。 本论文主要讨论的就是该综合报表系统的设计与实现,对设计与实现过程中 的难点一一进行剖析并提出相应的解决方案。本文首先提到报表生成的一些基本 概念,然后介绍了一套为配合本系统的需求及特性而设计的基于a s p n e t 下的m v c 架构方案。接着本文在介绍了整个系统的功能模块的基础上展开讨论了该系统是 如何分别支持p u l l 模式和p u s h 模式的两种不同模式的水晶报表的处理和运行的 难题,其中包括通过自动组成页面来收集任意报表运行时参数的技术,通过创建 动态连接库文件来支持p u s h 模式的技术等。最后本文详细介绍了在实现本系统 的报表白动化生成及发送功能中碰到和解决的难点,包括利用a u t o s y s 系统来实 现按时刻表执行报表的功能,还有支持用户预设报表的运行时参数的以及设定动 态参数等。 关键词:报表技术,多数据源报表,金融软件系统,报表生成框架,自动化报 表 i i 浙江大学硕士学位论文 a b s t r a c t a b s t r a c t w i t h i nf i n a n c i a l c o r p o r a t i o n s ,t h e r e r ev a r i o u sf i n a n c i a l a p p li c a t i o n su s e dt oa c c o m p li s hd i f f e r e n tj o b s a n ds o m e t i m e sar e p o r t m a yn e e dd a t aw h i c hc o m e sf r o mm u l t i p l ef i n a n c i a la p p li c a t i o n s s oh o w t od e s i g n ,c r e a t ea n dm a n a g es u c hr e p o r t sc o n s i s t e n t l yb e c o m e sap r o b l e m w h a t sm o r e ,t h eu s e r sa l s ow o u l dl i k et oa u t o m a t i c a l l yg e n e r a t ea n ds e n d o u ts o m ed a i l yr e p o r t s ,w h i c hi sn o tp r a c t i c a lt oi m p l e m e n ti ne v e r y a p p l i c a t i o n ss e p a r a t e l y ,t o o b a s e do nt h e s er e q u i r e m e n t s ,t h ea u t h o r d e sig n e da nin t e g r a t e dr e p o r tin gs y s t e m t h ep u r p o s eist om a k er e p o r t d e s i g n i n gm o r ee f f i c i e n c y ,r e d u c et h ec h a o sb r o u g h tb yd i f f e r e n tr e p o r t t y p ea n dd e s i g nm o d e ,a n dg r e a t l yd e c r e a s et h ee f f o r tt om a n a g e ,m a i n t a i n a n dp r i n td a il yr e p o r t s t h i sp a p e rm a i n l yd i s c u s s e sa b o u tt h ed i f f i c u l t i e sa l o n gw i t ht h e s o l u t i o n sw h i l ed e s i g n i n ga n di m p l e m e n t i n gt h i sr e p o r t i n gs y s t e m f i r s t o fa l l ,w ew i l lt a l ka b o u ts o m eb a s i sc o n c e p ta b o u tr e p o r t i n g ,a n dt h e n s h o wt h a th o wt h em v cs t r u c t u r ef o rt h iss y s t e misd e sig n e d a n da f t e r i n t r o d u c i n gt h ef u n c t i o n a l i t ym o d e l s ,t h ep a p e rd i s c u s s e sh o wt h es y s t e m s u p p o r t sc r y s t a lr e p o r t si nb o t hp u l lm o d ea n dp u s hm o d e a tl a s tt h ep a p e r d i s c u s sa b o u th o wt ou s ea u t o s y ss y s t e mt oi m p l e m e n tr e p o r t i n gs c h e d u l e , a n dh o wt os u p p o r tp r e s e tr u n t i m ep a r a m e t e r sa n dd y n a m i cp a r a m e t e r sa n d s oo n k e y w o r d s :r e p o r t i n gt e c h n o l o g y ,m u l t i p l ed a t as o u r c er e p o r t s ,f i n a n c i a l a p p li c a t i o ns y s t e m ,r e p o r t i n gf r a m e w o r k ,a u t o r e p o r t i n g i i i 浙江大学硕士学位论文 图目录 图目录 图2 1 系统的体系结构图一 图3 i 数据表和外部代码的关系 图3 2 业务逻辑层的类关系图一 图3 3 业务逻辑层和其他层的关系 图3 4 用户服务层的类关系图 图3 5 数据列表页面的类关系图 图3 6 数据详细页面的类关系图 图4 1 报表管理主界面示例图 图4 2 报表管理编辑界面示例图 图4 3 报表运行界面示例图 图4 4 任务管理主界面示例图一 图4 5 任务管理编辑界面示例图一 图4 6 用户管理主界面示例图 图4 7 用户管理编辑界面示例图 图6 1a u t u s y sj o b 的类型和结构图 图6 2a u t u s y sj o b 编辑器界面 图6 3 预设报表参数功能示例图 图6 4 报表发送配置界面示例图 , 一 一 一 一 一 一 一 撕p m n 他b h博拇孔鸵拐鲳舵帖勰 一 一 一 一 一 一 |一|i|一 一 一 一 一 一 一 一 一 一 一 |一一一 浙江大学研究生学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。 除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成 果,也不包含为获得逝姿盘鲎或其他教育机构的学位或证书而使用过的材料。与我一 同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者签名:镌彳妻鲁 签字日期: 扩年否月日 i 咄r 二 j一u r 。 学位论文版权使用授权书 本学位论文作者完全了解逝姿叁堂有权保留并向国家有关部门或机构送交j 论文的复印件和磁盘,允许论文被查阅和借阅。本人授权盘姿盘鲎可以将学位论文i 全部或部分内容编入有关数据库进行检索和传播,可以采用影印、缩印或扫描等复制手# 保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:1 壤钓& 申 签字日期:知吕年月占日 签字日期:凇子年6 月多日 浙江大学硕士学位论文 致谢 致谢 感谢杨小虎老师的细心指导,在论文的写作过程中为我指出了许多不足之处 和修改意见,使我得以最终完成这份论文。 感谢道富技术中心提供给我宝贵的实习机会,使我在做学生的时候有机会接 触到国际金融软件开发项目,得到许多技术和实践经验。 还要感谢身边的各位同事和朋友,在论文写作过程中给与了我许多的帮助。 陈德宇 2 0 0 8 - 5 - 1 5 浙江大学硕士学位论文第l 章绪论 第1 章绪论 1 1 课题概要 在金融公司中,报表的制作生成是一个相当重要的环节。特别是当一些报表 的数据来源依赖于多个不同的金融软件时,报表的设计,生成以及发送更是将显 得尤为复杂。本论文的重点既是针对这一系列的问题,提出设计一个面向多金融 软件系统的综合报表系统的解决方案。 1 2 金融报表的主要元素 一份金融报表一般包括以下主要元素: 数据源 报表的主要目的就是用于显示罗列数据,所以肯定需要有数据的来源,而金 融报表的数据来源,一般存在于各个金融软件的数据库中,以及网络上的一些服 务,如w e bs e r v i c e ,s o a 服务等。 金融运算逻辑 金融报表在获得数据源中的数据后,有时还要对数据进行计算处理后才把计 算结果作为报表输出,而这部分逻辑就是该报表包含的金融运算逻辑。有部分金 融报表中的金融运算逻辑相当复杂,特别是若这个报表的数据源不只一个的时 候,情况会变得更加复杂。 报表的属性设置 这包括描述报表将以怎样的形式将数据显示给用户的。譬如纸张大小,字体, 排版,页眉页脚的设定等等。 报表的运行周期 在许多金融业务流程中,业务人员需要的多数报表实际都是每隔一个固定的 周期就要重新生成一份,如日报表,周报表,月报表等。砼1 浙江大学硕士学位论文第1 章绪论 1 3 报表的生成技术 针对生成报表的技术有许多种,以下我们先一一介绍下比较常见的基于b s 模式下的各种报表生成的解决方案: 网页形式报表 在服务器端直接为用户需要的每个报表都编制一张专门的报表页面,这些页 面按照特定的需求将不同的报表内容形成到一个网页当中,用户可以直接对该网 页进行下载,打印等操作。这种方法虽然看似很直接,但存在代码难以重用,用 户操作麻烦,动态调整困难等缺点。嘲 采用插件( p l u g - i n ) 技术 通过开发软件中的p l u g i n 功能来实现在浏览器中报表的打印,此种方法实 际并未摆脱c s 模式,需要在客户端安装相应的功能插件。 采用a c t i v e x 打印控件 即通过编写或利用现有的a c t i v e x 控件再将其嵌入到开发环境中,从而实现 复杂多变的打印功能。 使用水晶报表( c r y s t a lr e p o r t ) 技术 m i c r o s o f t 公司在应用开发平台v i s u a ls t u d i o n e t 中,充分考虑到w e b 应 用程序报表打印的难题,内嵌了水晶报表技术来用于实现报表打印,为这一问题 的解决提供了一个强有力的工具。本系统即采用了c r y s t a lr e p o r t 这一成熟的 技术作为系统内报表打印功能的基础,为系统中的报表的设计、维护、执行生成 以及报表结果导出等提供各种便利的手段。1 1 4 本系统与现有同类系统之异同 目前我们接触到的报表打印系统,不论采用的是以上提到的哪种技术,绝大 多数都是面向特定的金融软件被开发出来的,单独支持该特定的软件中所需的报 表的打印工作的系统。这些报表系统的一个特点是,报表系统中会有什么样的报 表,这些报表有什么特别的逻辑和需求,这些报表会被怎样运行,都是能够在系 2 浙江大学硕士学位论文 第l 章绪论 统的开发阶段就事先知道的,所以这些报表系统的开发人员可以事先为系统中的 每个报表编制相应的代码逻辑以支持每个报表的顺利运行。这包括为每个报表编 写特定的运行时参数收集界面,为每个报表编写特定的数据源的连接与数据的收 集和处理逻辑等。 而与此不同的是,本论文所讨论的综合报表系统是面向多金融软件系统的, 这里这个套报表,若仅是如此的话,那么本系统与上面讨论的面向特定金融软件 的报表系统则没有本质区别。这里的“多金融软件系统 ,指的是能面向任意多 的金融软件系统的这个目标。本系统本身并不依赖于任何一个金融软件系统而单 独存在,并且面向所有能够兼容水晶报表技术的金融软件系统的报表打印工作。 因此,在本系统里会存在什么样的报表,这些报表将以哪个或哪些金融软件系统 的数据作为基础,它们拥有什么样的业务逻辑和运行逻辑等,都无法在系统的开 发阶段事先知道,也就无法为每个特定的报表事先写好特定的代码。这就需要本 系统拥有非常良好的兼容性,能够有一定智能地灵活处理和运行用户制定的各式 各样的报表。因此本系统结合了水晶报表的技术特点,实现了对任意水晶报表的 制作,封装,上传与运行的功能。从而达到面向多金融软件系统的目的。 本系统的另一大特色则是强大的统一自动化运行和发送报表的功能,这也是 多数报表系统所不具备的。原本若各个金融软件系统中各自的报表需要被自动化 运行和发送,那么我们不得不在这些金融软件内部各自实现相应的逻辑。而现在 通过将各个金融软件系统的报表集合在一起进行统一管理,我们只需实现一套报 表自动化运行和发送的机制就够了,大大降低了为达到相同效果所要付出的开发 成本。 当然市面上也存在一些同样面向多金融软件系统的报表系统。然而作者和其 他几位同事在对一些此类报表系统等进行实际试用和评估之后,发现均无法完全 满足金融公司对报表打印的各项需求。譬如作者试用过的p e n t a h o 报表系统就存 在无法支持为报表加上复杂的运算逻辑,无法同时从多个数据源读取数据,系统 不稳定容易出错等缺点。而与此不同,本综合报表系统的设计则可以支持复杂的 金融报表的运行逻辑,并且也能够支持基于多个数据源的数据的报表,非常灵活, 浙江大学硕士学位论文 第1 章绪论 更能符合不同用户的各种需求。 1 5 本章小结 本章首先对本论文的课题进行了概要的说明,并介绍了金融报表的一些相关 概念,最后将本论文所介绍的综合报表系统与目前现有的其他一些同类的报表系 统进行了横向的对比。 4 浙江大学硕士学位论文第2 章综合报表系统的基本结构 第2 章综合报表系统的基本结构 2 1 系统概述 本系统的目的在于提供一个标准的报表打印平台,来减少金融公司内部人员 每天花在和报表相关的工作上的时间,并且同时提高报表的总体质量。该系统通 过对各个作为数据来源的金融软件系统的数据进行规范化整合处理,使用户能比 较方便地设计制作自己想要的报表,并提供一个友好的界面,使用户可以统一定 义报表的自动生成以及发送。 本系统完成之后,对金融公司内部的报表相关工作的改善具体体现在以下几 点: 一个报表将可以同时从多个不同的金融软件的数据源读取数据,甚至是公 司外部的网络上的数据源如r e u t e r s ( 路透社) ,b l o o m b e r g 等。 可以替换掉许多“一次性 的e x c e l 宏报表工具( 这些工具缺乏技术支持) 使用户可以更方便地统一管理和维护各种各样的报表 为用户提供为报表定制各种不同的执行时刻表,让报表能自动定时运行的 功能 为用户提供自动通过e m a i l 发送报表生成结果文件的功能 系统的基本情况: w e b 程序,用户通过i e6 0 访问程序 a s p n e t 架构,容器选择i i s6 0 使用s q ls e r v e r2 0 0 3 数据库 服务端操作系统为w i n d o w ss e r v e r2 0 0 3e n t e r p r i s ee d i t i o n 2 2 系统的体系结构 本系统的体系结构如下图所示: 浙江火学硕士学位论文第2 章综合报表系统的基本结构 图2 1 系统的体系结构图 如图,从左到右,最左边一列显示的是为各种报表提供数据的数据源,包括 一部分实时的数据源( r e a l t i m es o u r c e s ) 如路透社的实时汇率信息等,还有 一部份是公司内部金融软件的数据库中的数据( b a t c hs o u r c e s ) 。这些数据有部 分将会先经由e t l 技术进行规范化,也即是第二列的内容。之后我们将按照实际 需求,将部分实时数据和部分规范化后的数据放到本系统的数据库中,图中把这 部分称为d a t am a r t s 。最后两列实际才是本系统的最主要的工作所在,即管理各 种报表( r e p o r t s 列) ,包括实时报表,日常报表和历史报表等各种类型,控制这 些报表从d a t am a r t s 或其他数据源中读取所需数据,然后将这些报表按照不同 的需求以不同的方式进行输出交付( r e p o r td e li v e r y 列) ,如实时报表是指用户 实时在系统中选择运行的报表,一般直接显示于网页上,而r 常报表则需要每隔 一段特定的周期就自动运行并通过e m a i1 发送出去。 浙江大学硕士学位论文第2 章综合报表系统的基本结构 2 3 设计模式 本系统采用了m v c 设计模式,分离成数据访问层,业务逻辑层,和用户服务 e 兰 ,石: 数据访问层( d a l ) :主要是对原始数据( 数据库或者文本文件等存放数据的 形式) 的操作层,而不是指原始数据,也就是说,是对数据的操作,而不 是数据库,具体为业务逻辑层或表示层提供数据服务。 业务逻辑层( b l l ) :主要是针对具体的问题的操作,也可以理解成对数据 层的操作,对数据进行业务逻辑处理。如果说数据层是积木,那逻辑层就 是对这些积木的搭建。 用户服务层( u s l ) :主要是使用a s p 页面为用户提供服务界面。如果逻辑 层相当强大和完善,无论用户服务层如何定义和更改,逻辑层都能完善地 提供服务。嘲 三层结构是一种严格分层方法,即数据访问层只能被业务逻辑层访问,业务 逻辑层只能被用户服务层访问,用户通过用户服务层将请求传送给业务逻辑层, 业务逻辑层完成相关业务规则和逻辑,并通过数据访问层访问数据库获得数据, 然后按照相反的顺序依次返回将数据显示在用户服务层。 2 4 本章小结 作者所开发的综合报表系统主要使用a s p n e t 的架构,前台以w e b 形式发布 给用户,数据库使用s q ls e r v e r ,容器使用i i s ,操作系统使用w i n d o w ss e r v e r 2 0 0 3 。在软件架构层次上,系统则采用了m v c 设计模式。 7 浙江大学硕士学位论文第3 章本系统m v c 架构的实现 第3 章本系统m v c 架构的实现 3 1a s p n e t 技术简介 本系统主要采用a s p n e t 进行开发。 a s p n e t 是一个统一的w e b 开发模型,它包括使用尽可能少的代码生成企 业级w e b 应用程序所必需的各种服务。a s p n e t 作为n e tf r a m e w o r k 的一部 分提供。当编写a s p n e t 应用程序的代码时,可以访问n e tf r a m e w o r k 中的 类。我们可以使用与公共语言运行库( c l r ) 兼容的任何语言来编写应用程序的 代码,这些语言包括m i c r o s o f tv i s u a lb a s i c 、c # 、j s c r i p t n e t 和j # 。使 用这些语言,可以开发利用公共语言运行库、类型安全、继承等方面的优点的 a s p n e t 应用程序。口1 3 2 数据访问层的实现 对于数据访问层,我们主要利用a s p n e t 的强类型数据集( s t r o n g l y t y p e d d a t a s e t s ) 来实现。数据集是n e tf r a m e w o r k 提供的一类对象,用于对数据库的 数据进行抽象封装,提供一系列通用的接口供外部程序调用,以方便外部程序的 数据库的访问。而强类型数据集,即对于系统中要用到每种不同的数据集合( 譬 如数据库中用户表的记录集合,报表表的记录集合等) ,都定义与之结构严格相 对应的数据表类型。与强类型数据集相对应的是泛型数据集,其特点是其中所封 装的数据表的结构是不固定的。这里我们使用强类型数据集的好处有t 强类型数据集可以提供更多个性化的访问接口。如一个针对用户数据的强 类型数据表,可以提供插入修改删除数据库中一条用户记录的访问接 口,这是泛型数据集所做不到的。 使用强类型数据集时,它其中的数据表的数据结构都是事先定好的,所以 如果你在代码中访问了不存在的域或错误的域,则在编译时即可发现这些 e r r o r 。而如果使用泛型数据集,这类e r r o r 到运行时才会被发现。那就 8 浙江人学硕士学位论文第3 章本系统m v c 架构的实现 变成一个b u g 了。 v i s u a ls t u d i o2 0 0 5 提供了强大的图形界面的向导来帮助程序员配置新 的强类型数据集。并自动生成数据集的x s d ( ) ( m ls c h e m ad e f i n i t i o n ) 文 件以及类代码文件。这大大减少了程序员架设数据访问层的工作量。碡3 在建立强类型数据集的整个过程中,实际不需程序员编写任何c # 代码,所有 代码都会在完成向导要求的各项配置后由v s 自动生成。通过建立这么一个强类 型数据集,业务逻辑层对数据库的访问就转化为对数据集中的数据表的各种接口 的调用,这大大提高了代码可读性和可维护性,提高了写代码的效率。以下是一 个数据表和外部代码之间的关系: 图3 i 数据表和外部代码的关系 3 3 业务逻辑层的实现 业务逻辑层本身的结构相对简单,在本系统中我们的实现是,首先针对多数 数据类型都有逻辑操作,抽象出一个业务逻辑抽象类a b s t r a t b l l ,然后对于每一 种数据类型,都以a b s t r a t b l l 为基础,建立具体的业务逻辑层类。以下是基于 这个结构的类关系的简化范例图: 浙江大学硕士学位论文第3 章本系统m v c 架构的实现 :u 翻饭i c k l qa b i t e h i r 坤v 醵d 乩e 一话一一 。i 一。 c a _ i t j d 啊止 a _ “ 删r t 自u 甍f i e d ,c 剞“妇阻 jh e 小口出 图3 2 业务逻辑层的类关系图 f _ d c b l l 冶 d 吐 _ b 呐r 耐b u 如上图,a b s t r a t b l l 类定义了u p d a t e0 ,d e l e t e0 ,g e t b y i d0 等通用的对 外接口,用于对数据进行更新( 包括添加) ,删除和按i d 查找。同时a b s t r a t b l , 类也定义了v a l i d a t e0 ,d o u p d a t e0 ,d o d e l e t e0 等虚函数,需要实体子类来实 现具体的数据校验,更新和删除的逻辑。然后实体子类若有自己特别的逻辑,则 可以自行增加,如u s e r b l l 中的g e t b y l a n l d0 既是只针对用户数据的逻辑,用以 实现通过l a ni d 查询返回用户数据。 通过建立业务逻辑层,我们把系统的数据处理逻辑部分单独抽离出来,作为 数据访问层和用户服务层的一个中介,从而使得前端界面需要改动时不需牵涉到 业务逻辑部分的代码,同时也方便了相同或类似业务逻辑的代码的重用。以下是 业务逻辑层和其他层的关系: 1 0 釜誊憾肇一一,_ 嗍一一,一 一 鲰舳o:一 一一恤 一一一一,、,一 一一一 v 肇审q q 耕 出一懈一 触删- _ v v_w, 浙江大学硕上学位论文 第3 章本系统m v c 架构的实现 图3 3 业务逻辑层和其他层的关系 3 4 用户服务层的实现 用户服务层是比较复杂的一层,主要由一个数据页面抽象类,一个数据列表 页面抽象类,一个数据详细页面抽象类,以及各种数据具体的列表页面和详细页 面组成。类关系的简化范例图如下: 浙江大学硕士学位论文第3 章奉系统m v c 架构的实现 扣曲呻d 霄d 褂胁“ 奄壮 h 打j c td a 牡 聿 h ”x 瞳k 神钾 童,f l e 出 ,霉t o 。,畔a 曲r 订y p e 每h e 小。出 坤c 6 n c e dc i c k 。vf ,c k h 醴 。峰f 蜘r 矗均n l k 肚o n ; 。vl 龙膏茸o 口p 一醴 。vl o a , :l l r f o ? ,l o a j d t 曲l e vp a g el e a d vr e t l t o l 随p 硼e ,v 甜坩酗 ,r 审w r t e 8 | 亡1 :【睛o _ 缸押嘲癣e a 州p 自筘 a b 由- dc - b s t 斗嘛 :亓树d 摹 一,捕 一c d c 懈采e 廿r e 甜d n m j pr 钟州巾僻 渖t e l e t y p e j ,廿蒯醴啊 ih 商h 口由 矿髓峨咖 ,砷网k ;沫n r r 自b o n 目t t o m vh 对赶眄_ m 睇5 爿筘 t qp a g e j d 图3 4 用户服务层的类关系图 1 2 柚嘲睁螂“删谴廿坍_ 聱 扣;i r dd 啦 啼 b 咖x 咀h w d p 。钾 誊鲥 ,一d 。c a 二一啊w l 口砖w i a b l e 。,t o t 出叼e 怕m 。,妒t o i j r e c a 吲n 咖 胃m 峨 va d d ,虫 ,p 雠n 6 。t 。陌c b 噍 ,qb 采嘏o w 峰出l i e 协c k * 坤嘲扭c h i c k 审f l 配k k t ,翻 - vf 雨) d 盯碱妇i b 谴t o 啭 0 v 舟e _ d e 叫6 e t d 越a 一6 拽啸栅 叼 ,件# 耐目r m f 黼 自峋神阿 j k 咿e 口吐 ,l d t 曲k ;n e x b h g e _ ( 3 i c k 。m o r e c o r 求忡 ,o 辨r 耻妇忙e i 砷p a g et ,0 6 d p r e w 睁柳e h t 坤r e ,岜b c e l o ,r e 铸护e 怕- n b e r 一加由蟹d 霄鲫磕彝掣:奄紫 a 嘲r dc i 裤l 啼黼硪皂e 钟d p 均, j 毒f - m k j 5 d a t a i m 姆a t o r 。一t a b l e 尹,t o t 静a 口e 拙m 二t 髓椒e c o r d 舯 童眦眦 j va d d 徘 i :加f - _ _ , o t o p a g e c l i c k - vd a t e i r o w vd i 酏e ( 削c 。叫e d i td i c k ? 坤同i c l i c h r 捌 o vf 敷) p 啊斌妇、救散o r 珏 “肇藉舯a 口e 弹 vg 瞅d 幽 j v6 e t f 羹e r 蟹r i n 口 h e a d e r r o w 矗肇豫劓鲋i 。a t o r p 陆t p a 。e 曲呔 。,l o a d t a b l e n e x t p a q e _ ( 3 k k 。0 妒瞳贰就甜d f t o 神 t 嘴c l c 艘+ a t 妇胡 一;qp a n el o a d 护p r e v i o u 妒a o ec i c k j vr 翎撇d 建审r e 护硼虾 l m b e r :u 螂i 敞 - c b 空 啼 蜥群墩懿o r 蝴呻e 。:搠e t 姚 j vg 哪a t a g e t e l t e 棚r o qu s e r l 磺 m “一 。一 c o m k e m ( t 1 i 雠 叠 d b 墨 峰黼d r 鲁c d r a 柚p 叼t 一晨m e t 憾 攀c o n l a c t l j 蛀 坤c - 唐l o 采a ;叩囊;铲囊吖s h 川 u _ _ 。_ 。_ _ 。- _ _ - - _ _ _ _ j _ “ - “。 h 。h “。_ “u 。q 1 一, ,一一 一 :, :r e p o r t j 耋t 一d 搽 啼 b 破r c i r 何倒赢艚柏e :阳e i 如o d s 一留c , e t o a t a ,v 瘫妤- 壕珂s 埘n 口 j qo p 啊。t 蜘c e | vr e p o r l l 薛t 。v 酣脚 图3 5 数据列表页面的类关系图 浙江人学硕士学位论文 第3 章本系统m v c 架构的实现 j 6 舳d f 膏量“n :d b 由硪( k 啼越 出x 慷- r 由钟 舞厅龇 ,怖 o p 啊采动n t 弭姥 。善h e i 抽。d s ; 峰伯n c e l 赴k ! ? f 敷篮k t r 翻: 却f | l 。口桃t 阶豳肚3 叫l 舶埘o r 侥曲 伸1 1 i 碰 ,肇l 鼬砌i r 艴 潮l o a d t 甜e 肇p 奇妒j 鼬i d ;婶r e t u m t o l i 嗣:p a g e u 甜憾棚 奢 d # 呻黼耐h c 油“扣叼 一m e t h o d s j 钳l 妇o p d 钟州皱 i 审l o a d 甜。 白如蝴捌 。中撕轴毋缸l n f o 一 n “一“ 二:4 ;c o n t a ( t c 瞄a l l 臻 d 姑 呻a b 由c t 史轼甜曲t a 扣婶 兰m 酞 辩d 5 锚亡攫也础d 瞳捌 。- 攀l o a d 甜唾o , ;vw r 畦西姐蝴时o ? 蓍:! :j i i i ! 当n f 。 ! ,i 一j r e p o ”r t 1 ) e t 撵”l 、一j 篓一; j :坤精建咖哟晡。 jc 虹; i 啼魁m r x 拣k o r 椰甙诮。g 鼍; :葶n 砖t h o d s 。 j 肇l o k 睫暗o 昏r 何彤| t o e 嘲; ,肇w r 静e 培e k 王一o 图3 6 数据详细页面的类关系图 以下将介绍这些页面各自的功用: 3 4 1a b s t r a c t r e c o r d p a g e 类 从上面3 张图中可以看出,所有的数据显示页面都继承自 a b s t r a c t r e c o r d p a g e 类。该类抽象了所有数据显示页面共有的逻辑。这包括用户 权限验证逻辑,数据校验逻辑,错误信息显示模块,页面导航模块等等。这些逻 辑都统一在a b s t r a c t r e c o r d p a g e 类中实现,而无需在每个具体的数据显示页面 中都实现一次。 1 4 浙江大学硕士学位论文 第3 章本系统m v c 架构的实现 3 4 2a b s t r a c t r e c o r d l i s t p a g e 乡蹩 a b s t r a c t r e c o r d l i s t p a g e 类继承了a b s t r a c t r e c o r d p a g e 类,用于抽象出数 据列表页面( 如用户列表页面,报表列表页面等) 共有的部分。其中包括目标数 据集的读取以及过滤,数据的分页显示以及分页导航,单条数据的添加修改删 除按钮等等。所有具体的数据列表页面都将继承该类。由于该类实现了普通的数 据列表页面中的绝大部分逻辑,当需要新建具体的数据列表页面时,若无特别个 性化的需求,实际上只需进行简单的常量配置,包括指定具体要显示的数据类型, 数据列表的列名,对应的数据域,以及该页面所对应的b l l 类( 业务逻辑层的类) 等,即可直接使用。而当有个性化需求时,也可以很方便通过重载父类的函数或 添加新的函数来实现。例如图3 - 5 中,u s e r l i s t 和c o n t a c t l i s t 就是属于没 特别需求的列表类,它们通过继承a b s t r a c t r e c o r d l i s t p a g e 类已经获得了足够 的功能,自身的代码量非常小。而对于报表列表:r e p o r t l i s t 类,我们不仅要能 添加删除修改,还需要能直接点击运行该报表。这就需要自行添加运行报表的 新逻辑,由图中可看出该类重载了父类的o p e r a t i o n c e l l0 函数( 用于添加运行 报表的v i e w 按钮) ,以及添加了一个v i e w _ c l i c k 0 函数来处理运行报表的逻辑。 3 4 3a b s t r a c t r e c o r d d e t a i1 p a g e 类 a b s t r a c t r e c o r d d e t a i l p a g e 类同样继承自a b s t r a c t r e c o r d p a g e 类,用于抽 象出数据详细页面的共有逻辑。数据详细页面是用户浏览和修改单条数据的详细 信息的地方。该类页面主要的共有逻辑有读取并显示数据,保存数据,取消修改 等。所有具体的数据详细页面都将继承a b s t r a c t r e c o r d d e t a i l p a g e 类,并具体 实现读取数据保存数据的逻辑( 此时会调用到业务逻辑层来简化该部分的代 码) 。当有某些域是以下拉菜单的形式来表现时,则还需要重载父类的 l o a d d r o p d o w n l is t ( ) 函数预先填好下拉菜单的内容。 浙江大学硕士学位论文第3 章本系统m v c 架构的实现 3 4 4m a s t e r 页面 m a s t e r 类型页面是a s p n e t 中一个很有用的功能,它相当于是一个页面模 板,由它来定义页面的风格和布局,具体的页面只需套用一个它,并往其中的 p l a c eh o l d e r 块填充个性化的内容即可。在本系统中,我们就定义了这么一个 m a s t e r 页面,在该页面上我们定义了页眉( 即b a n n e r 和导航条) ,页脚( 即页脚 导航条以及版本信息) ,以及中间正文内容在页面上的相对布局( 包括添a n 保存 取消等按钮,过滤数据域,错误信息,数据列表,数据详细域等内容的布局) 。 这样,通过在每个页面上都套用该m a s t e r 页,即实现了整个系统页面风格布局 的统一,而且以后若需修改系统页面风格布局也只需要改单个m a s t e r 即可,大 大方便了系统维护工作。 3 5 本章小结 本系统采用了a s p n e t 技术来进行开发。作者遵循m v c 设计模式的设计理念, 结合a s p n e t 本身的技术特点以及本系统的具体需求,自行设计实现了一套m v c 架构。 其中数据访问层我们主要是利用a s p n e t 自带的强类型数据集来辅助实现。 业务逻辑层则是先写了一个业务逻辑抽象类a b s t r a t b l l ,并基于该类继承出各种 数据各自的实体业务逻辑类。对于用户服务层,其主要的逻辑也被抽象出来放到 三个抽象类中,各种数据类型的具体交互页面都会去继承这三个类中的某一个, 并且所有页面都会套用同一个m a s t e r 页面。通过这种方式,我们提高了用户服 务层的编码效率,同时也使得整个系统界面的风格以及操作流程都很统一。 1 6 浙江大学硕士学位论文 第4 章主要功能模块概述 第4 章主要功能模块概述 本系统的主要功能模块包括报表管理模块,任务管理模块,用户管理模块, 客户管理模块以及公司管理模块,下面将逐一介绍各功能模块的设计及其作用: 4 1 报表管理模块 报表管理模块是系统中最核心的两个模块之一。报表管理模块为用户提供了 一个上传,维护,运行报表的交互界面,让用户可以管理本系统中的所有报表。 以下先看看报表管理主界面及编辑界面的示例图: 图4 1 报表管理主界面示例图 浙江大学硕士学位论文第4 章主要功能模块概述 图4 2 报表管理编辑界面示例图 从图中我们可以看到本系统中的一个报表将有以下信息:报表名称,描述, 指示,以及一个最重要的报表文件。这个文件既可以是一个水晶报表文件格式的 r p t 文件,也可以是一个动态链接库( d 1 1 ) 文件。关于这两种报表文件类型我们 将在本文第4 和第5 章详细提到。这里我们提供的功能就是让用户能够通过上传 一个报表文件( r p t 文件或d 1 1 文件) ,并填入相关信息,在本系统中建立起一条 相应的报表记录,从而方便用户管理这些报表并供本系统中的任务( t a s k s ) 调 用。 同时本系统自然也支持直接运行用户上传的报表,报表运行界面的示例图如 下图所示: 浙江大学硕士学位论文第4 章主要功能模块概述 图4 3 报表运行界面示例图 由上图中可看到,当运行一个报表时,系统会显示该报表的报表名称,描述, 指示等信息,并且提示要求用户输入报表的运行时参数。当运行一个报表时,系 统有能力自动判断报表需要什么样的运行时参数,并提示用户输入相关参数,同 时在用户提交参数后对所填内容进行校验。如上例所示,本系统自动识别了报表 需要的参数是一个t r a d ed a t e 和一个c u s t o m e r ,然后提供了相应的控件( 一个 日期选择控件和一个文本输入框) 让用户输入需要的参数。 4 2 任务管理模块 和报表管理模块一样,任务管理模块也是系统中最核心的模块之一。本系统 中的任务就是将一个或几个报表包装起来,并且提供报表参数的预设功能( 第7 章会详细说到) 的一个概念。任务实际上才是本系统中的标准可执行单位。本系 统中的报表虽本身也可被执行,但无法提供如自动生成发送的功能,所以实际用 1 9 浙江大学硕士学位论文 第4 章主要功能模块概述 户直接运行报表并不常见,多数还是以任务为单位来运行。以下是任务管理主界 面及编辑界面的示例图: a d dt a s k s e a r d l l b z a r dd & r e p o r bl a z a r da s s e tm a r i a g e r r , e n td a i l yr e p 0 ) s f x r d a t a s e t r e p o r t r o wr e p o r t r o w = d t r o w s 0 a s s f x r d a t a s e t r e p o r t r o w : if ( ( r e p o r t t y p e ) r e p o r t r o w r e p o r t _ t y p e r e p o r t t y p e c r y s t a l r e p o r t ) r e p o r t = n e wr e p o r t d o c u m e n t0 : r e p o r t p a t h = s e r v e r m a p p a t h ( r e p o r t r o w r e p o r t _ p a t h ) : r e p o r t l o a d ( r e p o r t p a t h ) : i f ( r e p o r t = = n u l l ) r e t u r n t o p r e v i o u s p a g e0 : r e t u r n : c o n t r o lp a r a m e t e r h o l d e r = c o n t r o l s 0 f i n d c o n t r o l ( ”p a r a m e t e r ”) : s y s t e m w e b u i w e b c o n t r o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论