软件架构设计实践- 基于SSM框架 课件 第13章 数字化社区管理系统_第1页
软件架构设计实践- 基于SSM框架 课件 第13章 数字化社区管理系统_第2页
软件架构设计实践- 基于SSM框架 课件 第13章 数字化社区管理系统_第3页
软件架构设计实践- 基于SSM框架 课件 第13章 数字化社区管理系统_第4页
软件架构设计实践- 基于SSM框架 课件 第13章 数字化社区管理系统_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

软件架构设计实战——基于SSM框架Software

Architecture

Design

Practice

Based

on

SSM

Framework第13章数字化社区管理系统123项目需求概述项目数据库设计项目整体架构设计4项目主要功能的实现5本案例的启发项目需求概述社区管理是政府公共管理的基础,是和谐社区建设的重要保障。我国现行社区管理体系主要有三级行政组织(市政府、区政府和街道办事处)构成,在此基础上,形成了包括市政府、区政府、街道办事处和居民委员会的四级公共服务体系,如图所示。1项目需求概述街道办事处是市政府或区政府下辖的组织,负责卫生、户口登记、地方治安和社会调解等工作。居民委员会是最低一级的行政机构,根据1982年宪法和1989年的《城市居民委员会组织法》,居民委员会是“自我管理的基层群众组织”。但实践中的居民委员会基本上都是区政府的附属机构。居民委员会负责宣传政府法律和政策,保护居民的合法权益,调解居民纠纷,维护社会秩序和安全,以及将居民的意见和要求传达给政府,在政府与居民之间一个很好地沟通桥梁的作用。1项目需求概述由于社区的居民委员会一般会在居民小区中设立办事处,非常贴近居民的生活日常,因此,在老百姓的日常生活中许多基本的问题都会有社区居民委员会代为办理,例如:低保申请、困难补助申请、五保老人认定、重点人群看护等。社区居民委员会对于辖区的居民也是最为了解的,因此街道办或者区政府也会把很多基本申请的审核工作下放到居民委员会,由居民委员会进行审查。1项目需求概述数字化社区信息管理系统就是为方便市政府、区政府、街道办和社区居民委员会管理与社区居民息息相关的日常基本事务的综合管理系统,其功能模块结构如图所示。1项目需求概述前后端分离是现在B/S结构软件开发的一种常见方式,在本系统的开发中前端采用VUE的方式,通过Ajax调用后端提供的API,以Json的方式进行数据交互。采用前后段分离的技术能够进一步的降低系统之间的耦合性,提高系统的可移植性和可维护性,便于系统的单元测试和以后的升级维护。1项目数据库设计为了进一步降低系统之间的耦合性,提高系统架构的可扩展性,方便今后功能的扩展升级,本系统的业务需要数据库的设计主要分为三个部分:用户权限管理部分、流程管理部分和具体业务部分。22.1权限管理数据表设计本系统采用基于角色的权限管理,系统中所有操作均需要进行权限的判断,在数据库中设定权限表,用于管理系统中的所有权限。角色是根据系统应用的业务环境需要,抽象出的参与者,代表某一类用户,例如:信息录入员、信息审核员等。然后把权限赋予角色,让角色拥有某一操作的权限,角色和权限之间是多对多的对应关系。最后创建系统的真实用户,并赋予相应角色,这样用户就可以根据角色的权限进行对应操作。2.2流程管理数据表设计考虑到数字化社区管理系统中审批业务的多变性,本系统设计了一个通用的申请和审批的管理流程,一个申请可能需要经由多级的审批操作以后才能被通过,即申请和审批是一对多的对应关系。而一种类型的申请需要有多少级的审批也由中间表来定义,可以实现更灵活的审批流程的修改。为了让流程管理模块更加通用,将申请的内容存入通用的payload字段,payload的数据格式可以根据不同的具体业务去做不同的实现。2.3具体业务管理数据表设计在社区日常管理中,经常需要涉及到两劳人员、重点人群、五保人员的申请、审核、核销等工作,而且这些工作只能在本辖区发起,因此在数字化社区管理系统中,需要使用到居民信息的数据表,这些特殊人群是由工作人员从居民表中选取出来,发起申请以后单独列出来的特殊居民,居民和这些表是一对一的对应关系。申请的多级审批全部被同意以后,从application表的payload中取出重点人群、两劳人员、五保人员的信息,添加到对应的数据表中。项目整体架构设计代码整体结构设计前后端分离设计实体关系映射设计系统可扩展性设计33.1代码整体结构设计本项目开发还是采用IntelliJIDEA集成化开发环境,应用服务器采用Tomcat9.0.65,数据库采用MySQL5.5,前端页面设计采用VUE技术,开发工具为WebStorm集成化环境,前端服务器为node.js。3.2前后端分离设计项目前端在WebStorm中的目录结构如图所示,node_modules是外部库,类似于maven里导入的依赖,public文件夹用于存放图片、html等静态资源。src是项目的源代码目录,其中,assets存放的也是一些静态文件,components存放的是封装好的vue组件,router里面就是路由,router/index.js里存放的路由就是我们在浏览器中看到的主页面左侧的菜单。views文件夹保存的就是页面跳转时用到的vue页面。3.2前后端分离设计3.2前后端分离设计request文件夹是一个封装的axios,用于发送http请求的工具库,想要向后端发送请求的时候可以从api.js里调用相应的方法,当后端地址变动的时候,也可以直接从这里修改后端接口的地址,防止大幅改动代码,主要有两个文件api.js和request.js,其中,api.js是设置整个前端项目连接服务端的IP地址、端口以及token信息,代码如下所示。3.2前后端分离设计3.2前后端分离设计服务器端在收到前端发送的请求以后,会以此被过滤器、拦截器处理之后,再进入到SpringMVC的控制器层,调用相应的接口(API),进行业务逻辑的处理,然后把处理结果包装成Result对象返回给前端,被VUE页面定义的GetAPI中的then函数处理,进行前端数据的展示。3.3实体关系映射设计本项目在开发中首先根据数字化社区管理系统的业务需求,在MySQL数据库建立数据表,确定数据表之间的关联关系,然后利用MyBatis框架的逆向工程生成Java实体类、映射接口、映射实现类和映射文件,这里以角色表为例,通过逆向工程生成的实体类Role代码如下所示。3.3实体关系映射设计MyBatis框架还会自动生成RoleMapper.xml映射文件,包括了最基础的数据表的增加、删除、修改、查询操作的基本语句,代码如下所示。见项目源代码3.3实体关系映射设计MyBatis框架还会自动生成RoleExample.java类,用户辅助创建动态的SQL语句,能够根据业务环境的应用需求动态添加查询条件,而且不用在java代码中掺杂任何的SQL代码。对于简单的业务需求,可以在业务实现的时候直接调用RoleExample的对象添加查询条件。见项目源代码3.3实体关系映射设计对于一些需要添加复杂的业务逻辑时,通过RoleExample的对象添加查询条件会比较麻烦,此时可以直接在RoleMapper.xml映射文件中,编写SQL语句,一起达到更好的查询效果。例如在ApproverMapper.xml映射文件中添加了selectUnhandledByUserId查询方法,目的是查询一个用户还没有处理的审批。见项目源代码3.4系统可扩展性设计数字化社区管理系统在应用当中,会随着经济社会的发展以及业务环境的变化,对低保申请、重点人群管理等业务进行升级或者流程再造等,在软件系统的设计中,需要对这样的应用点进行系统的可扩展性设计,以期在今后的项目应用中花费最小的代价完成项目的升级改造。在本项目中设计了流程管理模块,主要就是为了更好了适应用户的申请流程变更。3.4系统可扩展性设计(1)流程管理的设计在流程管理中主要涉及到的实体类有申请Application.java,申请的审批层级ApprovalLevel.java,以及逐级的审批过程Approver.java,以ApprovalLevel.java为例,其关键代码如下所示。见项目源代码3.4系统可扩展性设计(2)权限控制的设计在系统的应用中需要精确的来控制用户的每一步操作,避免越权,需要在方法的调用之前判断用户是否具备相应的权限,在本系统的设计中采用注解的方式来灵活配置。首先定义了接口HasPermission,来判断用户是否具有权限,代码如下所示。见项目源代码项目主要功能的实现居民信息管理的实现重点人群管理实现44.1居民信息管理的实现数字化社区信息管理系统的基础是居民信息管理,也是重点人群管理、低保管理、两劳人员管理等的信息基础,是系统的最基础功能。见项目源代码4.2重点人群管理实现重点人群管理是数字化社区管理的一项基本工作,旨在管理突出重点,例如:革命英烈、军人家属等,对重点人群更好的体现出人文关怀、维护社会的和谐稳定。这里以重点人群的申请为例介绍代码的具体实现,重点人群的申请参数包括居民ID、分类ID、负责人ID、所在街道ID、申请理由等。在前后端进行数据传递的时候,使用Dto来进行参数的接收而非实体类,是因为项目不需要对重点人群的申请参数进行保存,只需要对申请进行保存,使用Dto可以更好的解耦前端和后端的数据模型。代码中使用了工具类lombok中的@Data进行简化开发,从而避免了getter、setter、toString方法的编写。4.2重点人群管理实现在前端打开重点人群申请页面,填写完整信息之后,点击“添加”按钮,就会发出“api/target-group/add”请求,然后调用服务端控制器TargetGroupController的add方法,然后调用服务层方法,实现重点人群申请信息的保存。见项目源代码本案例的启发以SSM框架为代表的软件开发架构在大型软件项目中具有广泛的应用,几乎成为企业级J2EE开发的标配。在本项目中,针对申请流程的管理,并没有去深究具体每个业务流程的细节,例如:低保申请应该如何处理、重点人群管理又应该如何走流程等,而是抓住问题的本质,即需要按照某一既定规则进行逐级审批,因此,在本项目中就设计了一个通用的流程审批模块,这样在项目今后的扩展中,不管是更改既有的业务逻辑,例如:变更低保申请的审批步骤,还是增加新的业务功能,例如:增加五保老人的申请管理等,都可以基于既有的通用流程审批模块进行功能升级和改进。5本案例的启发另外本项目中也针对系统的权限管理问题进行的深入设计,确保在今后的应用中能够很好地进行代码复用和功能升级。首先系统采用了基于角色的权限管理,把系统的权限、角色和用户解耦合,让角色在用户和权限之间起到中间桥梁的作用。通过为角色赋权限,为用户赋角色的方式,让用户灵活的拥有不同的权限。然后在系统请求中,用户想要调用任何方法都需要进行权限判断,本系统采用权限注解的方式,能够灵活的进行方法级别的权限控制,既提高了系统的安全性,也增强了系统今后权限维护升级的灵活性。5本案例的启发本案例中,仅仅针对两个功能点进行了可扩展性设计,并进行了代码演示和分析,在这里希望读者能够认真的阅读项目案例的源代码,体会软件架构设计在软件项目开发中能够带来的好处。5课程思政现在多数大型复杂软件系统都是国外的软件企业开发的,这些大型复杂软件在开发中首先要考虑的是软件产品的迭代,如何设计一个可扩展、易维护的软件架构就是一个至关重要的问题。这也是为什么很多先进的软件设计理念、软件设计模式、软件体系结构等都源自于西方国家。近年来,由于国际关系的风云变幻,我国一直在推进软件产业的自主可控,国家也在不断的实施国产替代,极大的促进了我国软件产业的发展,在诸多领域实

温馨提示

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

最新文档

评论

0/150

提交评论