《金文软件平台》word版.doc_第1页
《金文软件平台》word版.doc_第2页
《金文软件平台》word版.doc_第3页
《金文软件平台》word版.doc_第4页
《金文软件平台》word版.doc_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

金文软件开发平台简介 金文软件开发平台简介北京金文天地科技有限公司现今,通过互联网进行业务工作和交流,已成为企业不可或缺的重要方式。随着社会的发展和企业自身的需要,使得原有的需求不断变化,新的需求不断出现,做到更快更好的服务于企业客户是非常重要的。 目前在大部分项目开发中,常存在着如下问题:1. 响应客户需求的变化,非常慢。主要原因是需求不明确所带来的大改动,这不仅增加了软件企业的成本,同时也导致了客户系统不能如期完成。2. 开发人员一半的时间用在了界面设计等重复性工作内容上,难以将主要精力放在最主要的业务逻辑上。3. 不同的项目组对各自的项目采用不同的开发框架,导致各个项目的成果难以融合到一起,缺乏可积累性。4. 采用不同的开发框架同时会带来一个更头疼的问题:难以维护。人员的流动会使得软件企业一段时期内难以与客户交流和保证项目的进度。本文针对以上情况,通过建立一个实现MVC理念的快速开发平台来解决开发缓慢、难以维护、难以积累等问题,尽力做到大量减少重复性工作,将主要精力放在业务逻辑上,达到快速开发、易于扩展、易于维护、易于积累。本文的开发平台组成分为四大部分:组织机构管理、权限管理、模块管理、表单管理。与当前大多web应用框架(如:struts)相比,本文的平台具有如下特点:1. 使用者不局限于技术人员,可视化配置界面使得非技术人员可以进行四个部分的基础性开发工作。2. 组织和权限的管理纳入到了平台当中,开发人员可以快速地对企业机构部门和权限进行分配。3. 用户界面采用自动生成的方式,使得开发时间和工作量大幅缩短,并且易于保证界面风格外观的一致性。4. 基本的增删改查操作通用化,从而减少了重复性工作提高工作效率。通过报关系统、固定资产系统等多个项目的实践,证明了本文的开发平台可以迅速地搭建企业级的web应用系统,有着良好的应用前景。从开发的角度讲,达到了平台的目标:快速、易扩展、易维护和可积累;从客户的角度讲,能及时的响应客户的需求变更和新功能的迅速嵌入,得到了客户良好的回应。关键词 快速开发平台,XML,标签库,界面自动生成 目 录第一章 引言11.1建立快速开发平台的益处11.2国内外现状21.3开发平台简介31.4系统设计方法41.5主要工作与内容安排41.5.1 本文主要工作41.5.2 本文内容安排41.6本章小结5第二章 开发平台的建立背景及其设计思想62.1建立开发平台的背景62.1.1 需求变化62.1.2 界面开发72.1.3 项目积累82.1.4 项目维护92.2设计思想102.2.1 遵循MVC思想102.2.2 模块权限配置化122.2.3 界面开发快速化142.2.4 基本操作通用化162.2.5 模式思想的运用172.3 本章小结19第三章 开发平台的设计203.1 总体结构设计203.2 表单管理设计233.2.1 概要设计233.2.2 详细设计253.3 资源管理设计283.3.1 概要设计293.3.2 详细设计303.3 用户管理设计323.3.1 概要设计323.3.2 详细设计333.5 授权管理设计353.5.1 概要设计353.5.2 详细设计373.6 关键设计实现点373.6.1 MVC模式思想383.6.2 HTML与XML的结合403.6.3 基础操作的通用化423.6.4 自定义标签库443.6.5 界面自动生成473.7 本章小结48第四章 开发平台的实现494.1 表单管理494.1.1 字段类型494.1.2 报元定义504.1.3 表单定义514.1.4 表单报元524.1.5 表单关联表534.2 资源管理534.2.1 系统定义544.2.2 模块定义554.2.3 操作定义564.2.4 模块操作574.3 用户管理574.3.1 机构管理584.3.2 岗位管理594.3.3 用户管理604.3.4 部门岗位614.3.5 用户部门614.3.6 用户岗位624.4 授权管理624.4.1 用户授权634.4.2 机构部门授权634.4.3 岗位授权644.5 本章小结64第五章 结束语665.1 本文的工作665.2 开发平台的特点665.3 开发平台的应用成果67图例索引68参考文献7071第一章 引言1.1建立快速开发平台的益处随着电脑的普及、互联网技术的日渐成熟,越来越多的企业从以前的仅运用互联网做为企业宣传工具的单一理念转变成运用互联网实现企业内部的生产经营活动,这一转变使得企业生产经营信息的获取变得快捷、企业管理者能迅速地了解企业现状,并且也降低了企业的生产经营成本。这些明显的益处使得企业渴望把其自身所涵盖的业务通过互联网的方式去实现,但是由于许多非政府机关直接管理的行业在国内并没有统一标准的流程,尤其在私人企业,这种情况更突出。需求的较大差异常常造成软件企业为其开发出来的应用系统都存在较大的差异,难以做到通过产品的方式来涵盖,再加上软件企业进行项目开发时,经常存在项目负责人擅长哪套技术框架就会选用哪套技术框架进行项目开发的情况, 结果通常是各自的项目大都顺利完成,不过项目之间难以将各自好的成果进行共享和积累。另一方面,竞争的激烈、最大化服务和利润的目标使得软件企业经常加班加点地压缩工期,一个项目下来,参与人员都觉得疲惫。本人所在公司通过许多项目的实践和相互间的交流,发现在一个项目的整个开发过程中,用户界面的开发和调试至少用去了40%的时间,伴随而来的是重要的业务流程设计和实现的时间被大幅压缩了。这种时间上的分配不符合将主要的精力和时间放在业务逻辑这一思想。再一方面,前面提到的各个项目使用不同的技术开发框架容易造成项目维护困难。当一个项目的负责人或者参与大部分开发的人员离开时,这种情况就会出现,而新加入的同事在接手过去项目的开始,必定会去了解业务及实现的代码,这需要花费比较长的时间,会造成给用户响应时间缓慢的局面。因此有必要在软件企业里建立一个面向互联网应用系统的快速统一的开发平台来快速实现和满足客户需求的变化和差异、积累项目的成果、降低项目维护的难度和时间、减少界面开发所占用的时间,本文介绍的快速开发平台通过可视化界面的配置来达到这些目标。本平台用于开发互联网方式的企业应用系统,通过模块、模块操作及数据库表、字段的快速配置来满足客户需求;通过遵循平台的开发规范来达到尽可能轻松容易地积累项目的成果;项目的开发都通过该平台来完成,达到各项目组之间需要交流的是业务流程而不是代码框架,使易于项目维护;通过界面的快速开发及自动生成来减少开发人员在页面上所花费的时间,将主要的精力和时间放在业务逻辑上,合理分配时间。1.2国内外现状时至今日,网络办公系统、网络应用系统等这些互联网方式的工作系统已经被人们所普遍接受,一个企业或单位是否有自己的互联网系统甚至成为了衡量其是否迈向信息化的重要标准1。软件行业为了满足和适应如此大的一个市场需求,在开发技术方面经历了两个重要的过程:servlet/jsp的结合及web框架。第一种实现技术,能够满足简单且不需大改动大维护的网络应用,这种情况大都出现在网络应用普及化的初期。随着网络应用在人们观念上发生了深入的转变,越来越多的企业都希望在网络上扩大应用的范围,于是复杂的应用需求便出现了,而servlet/jsp相结合的技术已经无法满足复杂的应用需求,此时的市场需求促使第二种技术web框架在这个时候诞生了,它简单地讲是一群抽象化的可重用的类或组件,这些类或组件在一起协同工作解决问题2。在国外,有一些优秀的技术框架不断的涌现和被开发人员所采纳,诸如Struts,这些优秀的技术框架给开发人员提供了快捷的开发途径,并且开源的模式使得世界各地的开发人员和参与者提供了交流的基础,部分开源项目的管理者甚至在国内建立其中文网站让中国的开发人员参考和推广。目前国外的优秀web开发框架都普遍地遵循MVC模式来搭建,每个web框架都有其自身的开发规范供开发人员在进行一个项目开发时参考3。在国内,这些优秀的web开发框架受到许多软件企业的重视重用,在项目开发时使用它们,招聘面试时通常也会将它们当做一个话题或考核。从国内的开发人员使用现有优秀框架进行项目开发的现状看,这些优秀的web框架大都能完成项目工作。虽然这些优秀开源web框架能顺利完成大部分的项目工作,但是对于项目管理人员和开发人员来说,它们有其不便之处和不足的地方4。不便之处1. 当开源框架抛出源码级别的异常时,没法及时的解决。2. 当有一些个性化的功能想加入或扩展时,得先去读懂框架的源码。3. 开源框架的技术文档大多是英文并且内容不够详细,即使提供论坛这类交流的地方也未必能及时得到想要的资料。4. 当需要新的功能时,往往只能等待框架编写者对框架底层进行升级。不足的地方1. 开源框架面向的使用者大都是专业性强的技术人员,所以绝大部分开发工作都得由技术人员来完成,非技术人员难以参与其中。对于一些规模不大资金实力不够雄厚的公司来说,这是个用人的瓶颈。2. 很少有开源框架将组织和权限作为其自身的一部分,而几乎所有应用系统都会有组织管理和权限管理这两大功能,从综合性完整性上讲,开源框架缺少了这两个重要功能的实现。3. 用户界面对后台的频繁访问,是大多数开源框架普遍存在的现象,也是传统的界面层做法,因为传统的界面操作是针对表单提交的。Sun公司最近推出的JavaServerFaces规范采用针对事件提交方式,它取代了针对表单提交的传统方式5 6。4. 在界面的开发上,开源框架提供的实现没能有效地减少界面开发上的工作量,大部分的页面还得由开发人员从头写起,没能给出通用化自动化生成界面的功能。 5. 不包含业务逻辑的基础增删改查操作在绝大多数开源框架中没有提供实现,目前流行的框架中,只有Jdom框架是提供了这方面的实现7。从上面的不便之处和不足的地方可以看出,对于重视客户、重视产品领先的软件企业来说存在着制约。总之,开源web框架在目前大多时候仍处于单纯地使用其来完成企业项目阶段。随着业务实现方式的创新发展,直接使用开源web框架的方式将束缚领先产品的研发。因此,建立一个拥有优秀开源框架思想、能改善上述不足的互联网应用开发平台是一个迫切的实际需求。1.3开发平台简介本快速开发平台的使用者是面向开发人员,编写本开发平台的目的,主要是为了能快速地满足客户日益复杂多变的需求、减少开发人员的在用户界面上所花费得时间、降低重复性工作量、能简易实现各个项目成果的融合积累、降低项目维护的难度等。本快速开发平台提供的开发功能简介:人事机构(机构人员部门)管理:该部分提供对客户企业内部的部门、岗位和人员进行信息的描述定义,并且提供三者之间从属关系的定义配置。表单管理:该部分提供对项目需要的表、字段、表之间关联关系的可视化定义和配置;资源管理:该部分用于定义和配置客户使用的业务模块、业务操作、及模块操作。 授权管理:该部分提供部门、岗位、人员对业务模块的访问权限配置。开发人员通过上述这四个功能模块进行项目的开发工作。1.4系统设计方法以开发快速、具备移植扩展重用性为中心原则,在分析和探讨了优秀开源框架思想的基础上,归纳出该平台的实现点和流程。按照优秀框架的架构设计出底层的基础包和服务组件,再依据平台的实现点进行功能上的实现和扩展,并注重在界面上给开发人员提供较强的可操作性。通过概要设计、总体设计,再按各功能需求进行详细设计使之达到建立平台目标。在编写本平台时的开发工具选用了Jbuilder、Eclipse、EditPlus、VSS、Oracle、Websphere等Web应用所需要组件。1.5主要工作与内容安排1.5.1 本文主要工作本文以所在单位的项目实践总结为依据、在借鉴优秀开源web框架优点的基础上设计并实现了一个快速统一的开发平台。在设计的过程中,将MVC思想、界面快速开发自动生成、基础操作通用化等理念运用到该平台上,实现快速满足客户需求变化、提高开发工作效率、项目的积累和维护的目标。本平台已在多个大型企业项目中使用,并收到客户方良好回应和效果。1.5.2 本文内容安排第一章 引言通过对客户需求、软件项目存在的一些问题的简要分析及当前优秀开源web框架的现状及其约束性的描述,说明需要设计一个快速统一的开发平台。第二章 开发平台的建立背景及其设计思想首先通过需求变化、界面开发、项目积累、项目维护四个方面详细说明建立该平台的缘由背景。然后介绍平台的五个主要设计思想,遵循MVC模式、模块权限配置化、界面开发快速化、基本操作通用化、模式思想。第三章 开发平台的设计首先介绍本平台总体结构设计,然后对表单管理、资源管理、用户管理、授权管理四个功能模块的设计逐个予以详细说明,并重点说明平台的五个设计思想的具体设计实现。第四章 开发平台的实现通过真实图片界面的方式将表单管理、资源管理、用户管理、授权管理四个功能模块里实现的效果进行展现。第五章 结束语第二章 开发平台的建立背景及其设计思想本章讨论该快速开发平台的建立背景及设计思想。2.1节说明建立快速开发平台的建立背景,分别从需求变化、界面开发、项目积累、项目维护四个方面来进行说明。2.2节介绍快速开发平台的设计思想,阐述了平台的设计思想以及部分预期效果。2.1建立开发平台的背景计算机的出现,使得人们从大量简单固定重复的工作中脱离出来;互联网的出现,使得人们之间的交流变得快捷,方便地对信息进行共享。B/S结构软件的出现,使得人们不出门进行复杂的业务工作成为现实。但是,由于信息时代的快速发展和激烈竞争,出现了B/S结构软件追随时代步伐时感到吃力的现象,尤其象规模不大资金实力不雄厚的公司,更是苦于支撑。本人作为一位开发人员和项目管理人员,思考了这种现象出现的原因,总结出存在如下几点:1客户原有需求变化得非常快,新业务扩展得非常迅速;2开发人员的工作大量精力放在了界面的设计上。3各项目组开发时选用的开发框架大都不同,基本是哪个负责人擅长那套开发框架就用那套,难以融合积累各项目组的成果。4开发框架选用的不同,当开发人员出现流动时就出现难以维护的问题。2.1.1 需求变化这一小节从客户需求变化和新业务功能增加的角度进行分析。通过多个项目的开发及同行的共同讨论,意识和总结出两个现实的问题:一是,在项目初期,客户的需求经常变动,跟签订合同时所描述的需求大相径庭,导致经常性地进行大改动;二是,新业务的增加不容易非常快的嵌入到系统里,导致双方一些可以进一步合作的地方没能很快就确定下来。对于客户常变动需求的问题,属于一个正常的问题。刚开始谈一个项目时,客户提出的想法和需求一般都是些原则性的内容,针对其企业逻辑性个性化较强的东西,有时甚至可以说,连客户自己都不知道想做成什么程度,客户只知道要在开发出来的系统里轻松地完成所关心的工作。在没有一个模型给客户进行参照,给双方都站在一个“平面”前交流时,不容易去准确理解客户的需求,更难以去把握准客户的需求边界,所以,出现客户经常需要改动这种情况是非常正常的。当做出了一个初步的模型后,客户才可以明确地说出,哪里需要改动和调整,哪里需要加内容,此时要做的开发才是最重要和准确的。对于新业务的出现不容易很快嵌入的问题,大都是到升级时出现。出现该问题,从自身的角度讲,很主要的两点是软件开发的过于僵硬和需求开发人员对行业的熟悉度不够以致于相关的扩展点没能前瞻到,这些扩展点往往是进一步合作和完善产品的地方。从以上两个项目开发中出现的现实问题,可以看出,需要有一种快速的开发方式,使得在短时间内可以拿出一个模型与客户交流,避免模拟两可地开发,做到准确理解和开发客户需求;需要一种开发规范框架来减少软件的过于僵硬难以修改问题,提高灵活性,易扩展性。快速开发平台通过界面的快速开发和业务类的文件配置化解决以上两个问题。详细的论述在系统设计描述和体现。2.1.2 界面开发在许多B/S结构的项目开发案例中,开发人员用于开发界面工作量的比例几乎占到了整个项目开发工作量的30以上。这一数据说明了开发人员没能将主要的精力放在开发业给定的业务逻辑和架构前瞻性的业务逻辑上,而是放在了重复工作性高的界面开发上,这样的重心开发出来的软件产品,业务逻辑的改动带来大的工作量似乎是必然。目前普遍使用的开发用户界面方式有8:1JSP页面里手动写HTML代码和JAVA代码;2JSTL标准标签库或不同开源框架相应的标签库,在JSP页面里手动写标签代码。第一种开发方式,对于简单的单表界面还可以接受,但是一旦涉及到需要显示和操作多表关联的界面时,就开始异常的复杂,单写界面就需要花费大量的时间,最占用时间的还不是写界面而是测试界面及界面上的业务数据是否都是正确的。过去,在本人和同事的开发过程中,遇到由于少了一个标点符号或页面引用错了对象名称,调试半天甚至一天的情况。在界面端直接写大量的JAVA代码,本身就不是推崇的方式,虽然这么写看起来非常直观,但是一旦稍微做点改动,就是大范围。尽量做到不在界面写JAVA代码是MVC模式的思想之一。第二种开发方式,使用了标签库进行JSP的编写。使用标签类来开发JSP界面是非常好的发展方向,因为标签类封装了必要的东西,将普遍重复性的工作提炼到了抽象层的级别,使得开发人员将精力转移到了业务逻辑上,减少了界面的JAVA代码量9。标签库的运用的确大幅度减少了开发人员在界面上的工作量,但是运用标签库仍然存在着大量逻辑简单而重复性高的工作,逻辑简单和重复性都体现在界面主要表达的是各表的数据和操作各表的数据。通过上述两种分析,可以预期到这么一种需要:建立一种具备标签库思想方式的开发途径,其不仅可以大量减少开发人员在界面上写代码的工作量又能减少逻辑简单重复性高的工作。另外,对于客户来说,一套软件系统,界面上应该做到视觉、操作上的一致,即一体化。本快速开发平台在界面开发上,使用了标签库的思想和自动生成页面的快速方式来达到:大量减少重复性工作和界面一体化。2.1.3 项目积累在一个公司开发团队里,经常会有,不同项目组的人员使用不同的开发框架进行项目开发。选择用什么框架进行开发,选择的重要依据一般是项目负责人其擅长的开发框架。发挥长处本是应该的,而且其中一些开源开发框架非常优秀,比如Struts、Ofbiz等,选用它们确实可以胜任项目的开发工作。这些优秀开源框架的设计基本遵循MVC思想,但是它们的具体实现及用它们去开发项目所写的代码可以说大不一样,这样一来,要把各项目的成果直接地融合到一起进行重用和积累就会变得困难和费力。不断积累是一个产品要走向完善所必须做的。从实际的角度分析,复杂的或移植时需要大量重写代码的方式是不切实际的,而以简便、能大范围重用的方式才能更快的进行积累。由于本人所在公司的发展方向是开发产品,所以对各个项目成果的积累非常的重视,故提出了需要建立一个统一、能快速进行可重用和移植项目成果的开发平台。本文的快速开发平台实现了该目标,在设计时,充分考虑了灵活性和重用性。详细的论述在设计思想一节。在评估是否建立快速开发平台时,曾经有这样的疑问:重新建立一个开发平台没有必要,会浪费时间和人力,还不如选择一个优秀的开源框架,统一使用。最后经过探讨,得出的共识是:虽然从头完整地开发一个平台的确比直接选择一个已有的平台所花的时间和人力要多得多,但是,开源框架对开发者来说存在着一些重要的限制:1当运用这些开源框架出现异常错误,而且抛出的是框架源码级别的异常和错误时,就会非常的棘手,寻求开源组织的技术支持响应时间慢,一时半会难以解决,耽误项目进度。2想对一些功能进行框架源码级别的扩展,会费力的。因为必须先读懂框架的源码。3框架的文档不是很完整和详细,实用性的文档大多是从项目中积累出来的,网上搜索出来的资料也是零零散散的,缺乏连贯性。4当需要用到更高级的框架功能时,得等开源组织进行升级版本的发布。得出上面四个共识后,决定重新建立一个开发平台,开发思路是:吸取优秀开源框架的设计思想,新平台的实现则由开发团队亲自编写。2.1.4 项目维护软件系统的维护是软件生命周期及甲乙双方合同的一个重要部分。设计良好的软件系统,维护时不仅改动方便,而且能有效地降低成本和缩短时间。从过去一些项目的完整周期来看,其维护时间至少是开发时间的2倍左右,维护成本至少是开发成本的2倍。可见,对于一个项目来说,维护最可能占用大量人力资源和成本的。维护占整个项目的时间量和成本量的比例如此高,其中两个重要的原因:1. 项目在设计时,没能考虑充分,这点在前面的建立背景中都提到过。2. IT行业是个发展迅速的行业,迅速的发展提供了许多实现个人理想的机会,出现了IT行业跳槽频繁的现象。实现个人理想,不断提高自身能力本是好事,但是,这种跳槽很容易给软件企业造成大的影响,尤其对一些规模不大的公司影响就更大了。一个人在项目上负责了一大块的内容,倘若其走了,再找个人进行交接,是件非常费力的事情,需要较长的时间。各个项目组使用不同的开发框架导致公司难以从内部人员里进行选择。通过建立一个统一开发平台,各个项目组在开发时引用的资源都是公用的,这样使得各个项目组的开发在代码级别上做到:其他项目组的开发人员只要稍微了解业务流程就可以进行维护的目标,来大幅降低由于人员的流动对项目和公司造成的影响。这是建立本快速开发平台的重要缘由之一。通过多个项目的实践检验,平台已经基本达到了只要了解业务就可以迅速进行项目交接这一目标,相比起过去来说,项目交接时间缩短了许多,降低了企业因人员流动带来的风险。2.2设计思想本节说明快速开发平台的主要设计思想。基于以上四个背景,促使本公司的软件部门决定建立一个快速开发平台,尽力改善上述问题,提高竞争力和降低风险。2.2.1 遵循MVC思想首先,简单地说明一下MVC模式。 MVC模式图2.1 MVC 模式MVC是一个设计模式,它使系统将客户端请求、业务处理和输出显示分开。使用MVC模式的系统被分成三个核心部件:模型(Model)、视图(View)、控制器(Controller)。它们各自处理自己的任务。模型(Model)模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务,负责处理业务和业务数据。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据10。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。视图(View)视图是用户看到并与之交互操作的界面。对Web应用程序来说,视图就是由HTML元素组成的界面,也就是浏览器。MVC一个大的好处之一是它能为你的应用程序处理很多不同的视图。作为视图来讲,它是作为一种输出数据并允许用户操纵的方式。控制器(Controller)控制器接受客户端的请求输入并负责指定调用的业务模型和视图去完成客户端的请求。例如当客户端在Web页面中提交FORM表单时,控制器本身不输出任何东西和做任何业务方面的处理。它只是接收请求并决定调用哪个业务模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。总结一下MVC的工作过程,首先控制器接收客户端的请求,并决定应该调用哪个业务模型来进行处理,然后业务模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给客户端。平台的MVC设计快速开发平台在设计时, 参照和遵循了MVC模式思想。平台也分为三层:模型层、视图层、控制层。下图是本平台的模式图: 图2.2 平台MVC式设计图平台模型层(Model)平台模型层同MVC模式的模型层一样,只负责处理业务逻辑和操作业务数据。同时,该层对MVC模式中的模型层做了进一步的扩展,将模型层设计成可以单一实现业务也可以再次分散成间接调用业务代理(Business Delegate)的方式11,这种设计方案,参考了J2EE的 Business Delegate 模式。好处在于:使得常规通用业务形成组件化,提高重用性。平台视图层(View)平台视图层同MVC模式的视图层思想一样,做到模型返回的数据可以进行多个界面的不同显示。与大多数实现MVC模式的开源框架不同的是:开源框架在实现视图层时一般是在配置文件里配置返回的视图层,而平台视图层并不在配置文件里直接指定,是通过客户指定的参数来进行选择客户希望见到的界面。 平台控制器层(Controller)平台控制器层也同MVC模式的控制层一样,不进行任何业务逻辑的处理和任何的输出,它仅仅是负责对客户端请求的响应及确定客户端的请求应该由哪个业务模型去处理12。总结一下平台的MVC工作过程,首先控制器接收客户端的请求,并决定应该调用哪个业务模型来进行处理,如果是简单的业务处理或者不具备常规性重用性的业务处理,就仅经过BusinessCommand进行处理,如果是具有常规性重用性的业务处理,就形成对BusinessDelegate的调有,然后业务模型用业务逻辑来处理用户的请求并返回数据及选择确定的视图,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给客户端。2.2.2 模块权限配置化本小节讲述平台在模块和权限两部分的设计思想,及将模块和权限设计成可配置化的目的。模块可视化配置软件系统里的模块,广义地说,是一系列在一起交互协作的单元群,设计到真实的软件系统里,往往以功能的原则进行划分,并且这种划分的方式也是用户普遍认同的方式,因为用户更直接更关心的是能在里边做些什么事情。本平台最首要的目标就是明确地针对用户的想法,解决现实问题,所以对模块的定义也按照普遍用户的认同方式来进行最小划分,即按功能进行最小划分。 本平台对模块进行三个层次的定义:一级模块、二级模块、三级模块。这三个模块之间的关系属于树形关系(如图2.3)。 图 2.3 三个层次模块的树形结构一级模块用于定义一系列相互协作的功能群的最外层。二级模块用于定义一级模块功能定义下的组成部分,三级模块具体定义到实际要进行业务操作的功能单位。这样,客户需要新加入一个功能单元时,只要将其添加到对应含义的三级模块上即可。由于模块大都是对表数据的操作,所以平台将模块和表建立起关联,所以采取不编写代码而是通过可视化界面配置的方式达到快速的定义和生成模块,及其基本操作(新增、修改、删除,查看)的目的。以界面可视化配置的快速方式来做到:快速给用户提供初期模型以便更好明确需求和方便将来新业务新功能扩展的需要。权限可视化配置权限管理是任何一个软件项目实施初期必然遇到的问题(将来在使用过程中也会出现),经常出现更改的地方,更苛刻的是:到了客户现场,当客户修改权限原则或提出新的权限原则,就需要快速地实现分配,如果完全以手动编码的方式进行权限管理的话,必然会缓慢。平台在权限管理这方面,同样采用界面可视化配置的方式来对权限进行管理。应用系统权限的普遍管理是:针对功能哪些人可以访问哪些人不能访问,哪些人只能查看而哪些还能修改删除,这些都可以归结为对模块和模块操作权限上的控制。平台在权限管理的设计思路上,划分其为两个概念来进行管理:组织机构人员岗位的设置及对应的模块操作的设置。权限管理可由两个流程来实现:某机构的某个人可以对某模块进行什么操作;某机构的某个岗位可以对某模块进行什么操作。组织机构人员岗位,用于设置人和机构部门的关系,及人和岗位的管理。模块操作,用于设置岗位或人与模块具体操作的对应关系。界面可视化配置给客户和开发人员都带来了一目了然,易于管理的效果。2.2.3 界面开发快速化本小节讲述界面快速开发的设计思想,及平台具备界面快速开发功能的必要性。界面快速开发的设计思路分成两个部分:自动生成和使用自定义标签库。自动生成界面从前面的讨论中知道,界面制作的工作量非常大,在该处的设计就需要做到大量节省时间并且不失良好的扩展性。由于标签库具有扩展性高的优点,所以平台继承这一优点,并且从客户的使用需求上总结出:界面需要保持一体化。界面一体化,意味着存在大量重复性的工作,而且若通过各开发人员一个个去实现,不仅浪费大量的时间而且难以一步到位地做到界面的统一,所以,平台在界面设计上采用自动生成界面的方式,来大幅减少工作量,轻松地实现界面一体化。界面显示的内容一般大都是表数据的内容。所以,平台是基于表来自动生成页面的,每个页面可能是一个表的数据展现也可能是多个表的数据展现。下图是界面自动化设计后预期达到的流程: 图2.4 预期生成界面的大体流程从上图中可以,平台预期将生成界面的流程分为两步:选择表和点击进行生成界面。此处主要的工作是实现和封装生成界面的逻辑。考虑到当遇到界面需要改动时也可以轻易地完成,再次提出了一个中间控制层XML配置文件。该XML文件也是自动生成的,其描述的是表属性、字段属性,及在多表情况下各表之间的关系。产生这一中间控制层的好处是:如果自动化难以或没法达到复杂的需求,可以给开发人员提供一个不需要编码,仅对文件进行手动调整的途径。使用自定义标签库目前,许多优秀的开源框架,大都配备针对自己的标签库,本平台同样拥有针对自己的标签库。标签类封装的是大量重复不变的显示级别代码,也就是HTML的标记13。平台对标签库的设计思路是:对常用的HTML标签进行标签化;为了能给用户操作界面时提供方便,编写一些特殊的功能性标签类。基本的HTML标签,同其他一些开源框架的标签思想大同小异。为了给用户在界面的使用上提供更大的方便,需要开发一些特殊的标签。目前平台提供一种界面操作方式:在一个界面上,同时显示单条记录的信息和列表信息,并且可以对记录进行新增、修改、删除;显示的列表可以进行查询和翻页。 (新增)(修改)单条记录详细内容 多条记录列表 (查询)(上一页)(下一页) 图2.5 预期的界面图图2.5是预期达到的界面图。界面的上半部分显示的是单条记录的详细信息内容,下半部分显示的是多条记录的简明信息内容。将界面设计成这样,是由于过去开发的系统,用户在使用一段时间后反应:当对多条记录进行新增查看修改操作时,界面经常需要来回切换,希望在一个界面上完成。平台在实现这种界面方式时,要求将生成的逻辑都编写入到标签类里,以提高重用性灵活性。在界面快速开发这一设计上,预期平台具备自动生成用户界面功能,以达到大量减少开发工作量,一步到位地保证界面一体化;同时页面尽可能地不写JAVA代码,以标签的方式去实现。2.2.4 基本操作通用化本小节讲述基本操作(新增、修改、删除、查看)通用化的设计思想,及其目的。在过去开发的项目里,实现每一个界面上的新增、修改、删除、查看操作,大多是针对每一个页面的每一个这类操作去编写既包含了后台数据的通常维护代码同时还包含了业务流程处理代码的文件,这样造成大量重复性的代码散落在许多的文件里,维护时,需要同时对多个地方进行修改才能保证数据的正确性。另外,将具有公用性的代码和变化的业务代码混合在一块,易使代码逻辑混乱。平台对一问题提出解决和设计方案,将操作分成两大类:基本操作和业务操作。(这里所说的两个操作是针对代码功能的区分,对用户来说并不区分)。力求通过将基本操作和业务操作进行分离化,把基本操作提炼到通用层次的思想和方式来达到高重用性、减少开发时间、责任分明的目的。基本操作,平台将其定义为:不包含业务流程的数据处理,仅是单纯地将客户端提交过来的数据进行表数据维护的操作。新增、修改、查看、删除,属于定义内的基本操作。业务操作,平台将其定义为:专门处理业务流程数据的操作,比如对业务流程状态的控制。从模块权限配置化一节可知,三级模块实际对应于一张数据表。可以说,一个模块的新增、修改、删除、查看操作,实际就是对表进行新增、修改、删除、查看操作。不同的地方就是对不同的表进行这四个操作,相同的地方都是对这四个操作进行处理。所以,平台在这一部分的设计思路是:通过对表名进行参数化传递的方式、对应一个以表名命名的界面,来动态地决定对那些表进行维护及显示哪一个页面,将固定的代码提炼到通用层次,使这四个基本操作通用化。 图 2.6 基本操作通用化流程图图2.6 展示了基本操作通用化的设计思路。可以看出四个基本操作都对应着一个通用类,并且新增、修改和查看都对应着同一个页面,由于删除操作完成后不需要显示界面,所以与界面之间没有连线。总结平台在基本操作上的设计思路:先通过用户当前操作的模块来确定其所对应的表名,接着根据表名或一些传来的参数,调用通用的基本操作类,进行数据的处理和返回,最后找到相应的页面,呈现数据。2.2.5 模式思想的运用 本小节讲述在平台中运用的一些设计模式,以及使用它们解决的问题。软件设计模式的提出,其目标是为了提高软件系统的维护性扩展性和重用性,总结出实现这一目标的思想套路。本平台建立的目标也是尽量去提高软件系统的可维护性扩展性重用性,及快速开发(平台的快速开发建立在高重用性的基础上)。平台将选择前人总结出来的优秀成果,从中选择出适合自身的设计模式,对维护性扩展性重用性进行更好的提高。平台的设计主要使用以下设计模式的思想:FrontController Pattern(前端控制器)、 Flyweight Pattern(享元模式)、Command Pattern(命令模式)。 FrontController Pattern (前端控制器模式) 图2.7 前端控制器模式图前端控制器模式用于集中管理来自客户端的请求,负责从客户端参数中确定分配给哪个业务逻辑14。平台在处理用户请求时,采用前端控制器的方式,实现控制逻辑和显示逻辑的分离,对客户端请求的做到集中管理,实现了MVC的控制层和显示层分开的思想。Flyweight Pattern(享元模式) 图 2.8 享元模式图单纯的享元模式用于将全局不变的内容存储到一个库中,供其他类的反复调用15。平台在创建MVC中Model层的类时,将使用单纯享元模式进行动态地选择所要创建的实例。设计思想:将所有全局不变的变量保存到名值的映射对象中,并通过工厂方法动态地通过传递过来的参数进行Model类的创建。平台选用该思想来实现的目的是:避免以硬编码的方式创建Model类,实现通过外部配置来扩展Model层的灵活性;平台在Model层的引用上通过配置文件来实现的,所以使用此模式思想可以大幅度减少对文件的反复读取和对象的创建。Command Pattern(命令模式) 图 2.9 命令模式图命令模式用于将发起命令的一方和接受命令的一方进行职责上的分离,Inteface Command只负责发起execute()命令,而接受方式只负责执行命令15。平台在对Model层次的类进行调用时,使用该模式思想。通过接口的方式对业务实现类进行调用;当业务实现类可能具备重用通用性时,产生ConcreteCommand和Receiver类;当业务实现类仅是一次性时,将上图的ConcreteCommand 和Receiver类合并成一个类,减少没必要的多余类。这种方式很好地实现了易维护、易于扩展和重用的目的。这一小节,说明了平台设计过程中所使用的一些设计模式,在使用这些优秀成果时,更注重的是模式的思想。2.3 本章小结本章,首先分析了快速开发平台建立的建立背景,通过需求变化、界面开发、项目积累、项目维护四个方面进行了说明;在这些背景的基础上,提出了建立该快速开发平台的需要,接着,描述了平台的主要设计思想及一些预期效果,从设计思想的描述,可以了解到,平台尽力将不变的和变化的内容进行分离化,将通用的内容往抽象层公共层提炼,以此来达到易维护易扩展高重用。第三章 开发平台的设计在第二章已经讨论过,快速开发平台的建立背景及其设计思想,本章介绍快速开发平台的总体结构设计及各个模块的概要和详细设计,着重从数据库表的设计结构和平台运行组件的结构来进行讲述,并重点介绍表单管理和资源管理两个关键模块的详细设计和一些关键性的实现方法。3.1节介绍平台的总体结构设计,陈述用户管理、表单管理、资源管理、授权管理四个概念性模块。3.2节介绍用户管理的具体设计。3.3节介绍平台的关键模块表单管理的详细设计。 3.4节介绍平台的另一个关键模块资源管理的详细设计。3.5节介绍授权管理的详细设计。3.1 总体结构设计当快速开发平台被确定需要建立后,接下来的就是总体的设计。建立平台的目标是实现快速开发、提高维护性扩展性重用性。设计是否良好,直接影响着目标的实现程度。经过项目开发人员对过去项目设计的总结,提出实现可视化配置的开发方式,及四个设计原则:1表、字段、表字段、表关联进行单独管理。2模块,模块操作等也是单独的进行定义和管理。3机构岗位人员等这类基础信息单独管理。4权限单独分成一块来进行管理。将平台设计成可视化配置,能够使开发人员通过界面操作的方式来创建表字段、表关联、模块定义等开发工作,大幅减少代码量,并且可视化能带来直观的条理。比如表字段,可视化的界面可以一目了然地清楚表字段的中文含义,如果是以前的开发方式,那么开发人员就必须随时翻阅设计文档。上述四个设计的划分基于将不同职责的内容进行分离的思想。按照这四个设计原则,将各自基本的信息搭建起来,再通过其中的模块进行关联绑定。比如,建立了字段的基本信息,那么它和表的关联就通过表关联操作来完成。下面详细描述平台的总体结构设计。机构管理岗位管理用户管理用户管理部门岗位用户部门用户岗位字段类型表单管理报元定义表单定义快速开发配置表单报元 表单关联自定义XML_JSP资源管理系统定义模块定义操作定义模块操作授权管理用户授权机构部门授权岗位授权 图 3.1 平台总体设计结构图图3.1 显示了快速开发平台的总体结构设计。由该图可知,平台是按开发功能来划分,共分为四大概念性模块:用户管理、表单管理、资源管理、授权管理。四大概念性模块分别负责不同开发要素的定义配置,下面是它们各自所负责的内容:用户管理模块,用于定义和管理机构、部门、岗位及人员之间的关系。表单管理模块,用于定义和管理表、字段、表与字段、表与表之间的关系以及界面的生成。资源管理模块,用于定义和管理模块、操作、模块与操作之间的关系。授权管理模块,用于定义和管理机构部门、人员、岗位与模块操作之间的关系。将平台设计成表单、资源、用户、授权进行单独的划分管理,是基于对直接关联的职责进行拆分,减弱相互影响,降低耦合度,提高重用性的思想。当运用该平台进行配置化开发时,使用四大模块的流程:资源管理用户管理授权管理表单管理 图 3.2 开发模块流程图图 3.2 展示了使用平台进行开发的工作流程,通过对四大模块的相互操作来完成开发。在项目开发时,如果客户一开始不明确说明其权限的管理原则,往往只用表单管理和资源管理模块来实现业务功能,当到了客户现场时,客户明确提出权限分配方案时,才通过用户管理和授权管理两个模块进行权限的配置。上面的四大模块是平台结构概念上的设计,真正实际性的操作由各自的小模块实现。如图3.1 所示,最右边的单位格就是实际操作的模块。用户管理,由机构管理、岗位管理、用户管理、部门岗位、用户部门、用户岗位六个模块组成。表单管理:由字段类型、字段定义、报元定义、表单定义、表单报元、表单关联、自定义XML_JSP七各模块组成资源管理:由系统定义、模块定义、模块定义、模块操作四个部分组成。授权管理:由用户授权、机构部门授权、岗位授权三个模块组成3.2 表单管理设计从总体结构设计一节可知,表单管理这一概念性模块通过字段类型、报元定义、表单定义、表单报元、表关联、自定义XML_JSP六个模块去实现对表、字段、表字段、表关联、及界面生成的管理。这六个模块是实现平台目标的关键点,下面将这六个模块的概要设计和详细设计进行描述。3.2.1 概要设计字段类型模块这一模块用于定义数据库里的基本数据类型(char、varchar、number等),当利用平台进行开发时第一步的配置工作在这里进行。建立这一模块的目的是为下面的报元定义中的数据类型提供选择。模块提供对当前流行的数据库数据类型进行定义配置。由于公司的产品将来主要针对大中型企业,所以平台使用Oracle做为标准的数据库环境,对Oracle里的数据类型进行定义;如果需要用到SQL Server开发,只要在该模块里定义SQL Server的数据类型就可以。字段类型需要定义的内容包括:数据库类型、中文名称、英文名称等。当定义完这些信息后,再对报元进行定义配置时,最后在生成表时系统会根据选择的数据类型的数据库类型和英文名来决定保存在数据库里的数据类型。 此模块的定义为报元所服务,下面就是报元定义模块的叙述。报元定义模块设计里提出需要这一模块,是过去项目中创建表字段总结出

温馨提示

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

最新文档

评论

0/150

提交评论