流程系统的设计与实现

流程系统的设计与实现

The Design and Implementation of Process system

详细论文

摘要
在计算机还没有普及的时候,很多工作流程都是手工传递纸质表格,逐级审批和签名,工作效率很低。对于数据统计和报表生成等功能,需要大量的人工操作才能实现。随着计算机的普及,这些工作的参与者只需将自己的工作输入到计算机系统中,系统就会按照预定义的流程自动运行,各级审批者获取工作信息即可创建相应的审批管理操作。数据统计、报表生成等均由系统完成。这不仅大大提高了工作效率,也加快了各部门之间的信息交流。工作流为我们提供更大的系统灵活性、适应业务流程变化、控制我们的业务流程并降低系统开发和维护成本。
使用工作流最常见的地方是银行客户排队处理业务电话、餐厅点餐和在线购物。作为一个程序员,你可能会问我可以不用工作流解决这些地方,但是当需求发生变化时,你如何维护你的工作流部分。如果直接修改代码,维护成本特别高。 如果使用工作流进行开发,维护成本相对较低。因此,本课题设计的流程管理系统是一款基于若依框架,扩展的activiti工作流平台,实现了动态外挂表单、零代码创建流程。通过在流程模板管理页面对流程进行配置,自行定制出执行审批的部门和审批的规则,可应用于各行各业。通过在流程模板管理页面对流程进行配置,自行定制出执行审批的部门和审批的规则可应用于各行各业。
本课题设计的流程系统主要利用若依框架 ,mybatis-plus,activiti6 ,bpmnjs等技术进行开发,使用MySQL可视化管理工具SQLyog管理数据库,java编程语言,通过主要功能模块、业务流程、界面设计、接口设计完成系统,最终实现系统。该流程管理系统是一个以流程发起、审批以及流程模板管理为主,用户权限管理为辅的信息化流程系统。根据功能分为流程管理和系统管理两部分。流程管理包括三个功能模块:已经执行的流程管理、要执行的流程管理以及我的流程管理。系统管理主要是有用户管理、角色管理和日志管理等需求。为了安全有效地运行系统,模块需要协同工作。
通过测试和运行,此系统具备良好的实用性和一定的可靠性。但是该系统仍然具有很多不完善的地方需要之后不断进行修复和更新。
关键词:工作流; activiti6;流程管理

ABSTRACT
The most common places where workflow is used are bank customers queuing up to handle business calls, restaurants ordering food, and online shopping. As a programmer, you may ask that I can solve these places without workflow, but when the requirements change, how do you maintain your workflow part. If you modify the code directly, the maintenance cost is particularly high. If you use workflow for development, the maintenance cost is relatively low. Therefore, the process management system designed in this subject is an extended activiti workflow platform based on the Ruoyi framework, which realizes the dynamic plug-in form and zero-code creation process. By configuring the process on the process template management page, you can customize the approval department and approval rules, which can be applied to all walks of life. By configuring the process on the process template management page, you can customize the approval department and approval rules, which can be applied to all walks of life.
When computers were not yet popular, many workflows were hand-delivered paper forms, approvals and signatures step by step, and the work efficiency was very low. For functions such as data statistics and report generation, a lot of manual operations are required to implement them. With the popularization of computers, participants in these jobs only need to input their own work into the computer system, and the system will automatically run according to a predefined process, and approvers at all levels can create corresponding approval management operations by obtaining work information. Data statistics, report generation, etc. are all done by the system. This not only greatly improves work efficiency, but also speeds up the exchange of information between various departments. Workflow provides us with greater system flexibility, adapts to business process changes, controls our business processes and reduces system development and maintenance costs.
The most common places where workflows are used are bank customers queuing for business calls, restaurant ordering, and online shopping. As a programmer, you might ask me these places can be solved without a workflow, but how do you maintain parts of your workflow when requirements change. If the code is modified directly, the maintenance cost is particularly high. If you use workflows for development, maintenance costs are relatively low. Therefore, the process management system designed in this subject is an extended activiti workflow platform based on the Ruoyi framework, which realizes dynamic plug-in forms and zero-code creation process. By configuring the process on the process template management page, you can customize the approval department and approval rules, which can be applied to all walks of life. By configuring the process on the process template management page, you can customize the approval department and approval rules, which can be applied to all walks of life.
The process system designed in this subject is mainly developed by using ruoyi framework, mybatis-plus, activiti6, bpmnjs and other technologies, using MySQL visual management tool SQLyog to manage database, java programming language, through main functional modules, business processes, interface design, interface design Complete the system and finally realize the system. The process management system is an information-based process system mainly focusing on process initiation, approval and process template management, supplemented by user rights management. According to the function, it is divided into two parts: process management and system management. Process management includes three functional modules: Process management that has been performed, Process management to be performed, and My Process Management. System management mainly includes user management, role management and log management requirements. To run a system safely and efficiently, modules need to work together.
Through testing and operation, this system has good practicability and certain reliability. But the system still has many imperfections that need to be repaired and updated continuously.
Keywords: Workflow; activiti6; Process management

目 录

第一章 引言 1
第一节 研究背景和研究意义 1
第二节 研究现状 1
第三节 论文研究内容 2
第四节 论文组织结构 3
第二章 系统相关技术介绍 5
第一节 Activiti概述 5
第二节 BPMN2.0 简介 5
第三节 bpmnjs 简介 5
第四节 RuYi框架介绍 5
第五节 数据库相关知识 5
第三章 系统总体设计 7
第一节 需求分析 7
第二节 可行性分析 8
第三节 系统功能模块设计 9
第四节 系统数据库设计 12
第四章 系统具体实现 22
第一节 登陆界面 22
第二节 系统管理页面 23
第三节 工作流管理模块 26
第四节 系统数据储存 27
第五章 系统测试 32
结论和展望 40
参考文献 41
致谢 42

第一章 引言
引言部分将首先阐述工作流的历史背景和它的探究意义,主要介绍工作流的相关概念,说明工作流在企业日常工作中流程管理的需求和重要意义。介绍了工作流的基础研究发展现状,就本文所需要完成的工作和目标做出了简要的说明。最后对本文最终的实现效果进行了阐述。
第一节 研究背景和研究意义
本部分论述工作流的研究背景,并且重点分析了其在各方面各领域的社会和学术价值以及对经济的影响意义。
工作流(WorkFlow)就是工作流程的计算模型,即将工作流中的工作前后组织的逻辑和规则,用适当的模型在计算机中表示并计算出来。工作流要解决的主要问题是:按照一定的给定规则在多个参与者之间自动发送,以便使用计算机来实现特定的业务目标。工作流是计算机支持的合作工作 (CSCW) 的一部分。后者通常是研究一个小组如何在计算机的帮助下一起工作。许多公司在第使用纸质表格,手动传输,审批签字,工作效率很低,无法实现统计报表功能。使用工作流软件,用户只需要在电脑上填写相关表格,它就会按照定义的流程自动运行下来。 下一级审批人收到相关信息,可进行修改、跟踪、管理、查询、统计、打印等,大大提高效率,实现知识化管理,提升公司核心竞争力。
工作流技术起源于1970年代中期对办公自动化的研究,那时计算机还没有普及,网络技术水平还很低,缺乏理论基础,所以这种新技术并未成功。简而言之,工作流是一组相互关联的自动化业务活动或任务。工作流包含一组任务(或活动)及其间的关系、流程和任务(或活动)的开始和结束条件,以及每个任务(或活动)的描述。
现如今,我们已经进入网络时代,工作流已经深入到我们生活的每个角落,生活的方方面面已经离不了,如消费品行业、制造业、电信服务业等金融服务业、物流服务业、房地产服务业、政府机构、研究机构、和教育服务行业等。尤其是大型跨国公司和集团公司。具体应用有:关键业务流程:订单、报价处理、采购处理、合同审核、客户电话处理、供应链管理等。行政管理:出差申请、加班申请、休假申请、用车申请、各类办公用品申请、采购申请、日报、周报等 人事管理:安排员工培训、绩效考核、工作变动处理、员工档案信息管理等 财务相关类:付款申请、应收账款处理、日常退款处理、差旅退款、预算及计划申请等因此,一个定制化的计算机应用系统不仅让人们处理事务更加方便快捷,同时也很大程度降低了工作上的压力。越来越多的行业更加青睐于运用信息化的管理工具来取代传统的手工操作,从而达到高效便捷的目的,所以,工作流管理系统的开发对于企业的管理而言具有较大的需求。
第二节 研究现状
工作流管理技术是近年来计算机领域发展特别迅速的几种新技术之一,目前是IT领域的研究热点。工作流随着可操作的应用程序不断深化,包括贷款审批流程、担保业务流程、访问控制流程、计费和支付流程、项目监督流程、预算流程、人力资源管理流程等。我们使用工作流将与流程集成的操作和维护流程合并到流程工作事务中。工作流的未来发展趋势应该是开发人员和业务分析经理会喜欢的简单灵活的工作流系统。
工作流,说白了就是无纸化办公,需要实现工作流的方案有很多种。俗话说条条大路通罗马,我们需要根据实际的业务需要去选择适合项目的方案,比如项目只是简单的审批,例如新闻发布系统,编辑发布后主编审核,我们就可以使用枚举或者if判断来实现工作流。如果项目的流程稍微复杂一些,我们也可以用自己去建关系表的形式去做流程定义表,流程实例表去实现工作流。可是现实业务远比想象中的要复杂 为了尽量少自己造轮子站在巨人的肩膀上,使用已有的工作流。
为什么要使用工作流,我们知道github上有一个很著名的项目 叫996icu。那我们为什么要996加班呢?这里给大家讲一个段子,研发绑架了客户,客户问你想干什么?研发不语,边打他,客户求饶说:别打别打,你要钱吗?10万够不够,又是一鞭,100万够不够?研发又是一鞭,客户崩溃的说:你到底要啥? 研发说:我帮你做项目写代码的时候我也很想知道你到底要啥?俗话说杀死一个程序员不需要枪,只需要改三次需求就够了,虽然上面是一个段子 但实际的情况是国内的公司与客户素质良莠不齐,对问题的边界定义不清楚,提需求的人没有成本,无至尽的提不靠谱的需求。我们如果使用了工作流引擎 可以在业务流程为核心的系统中做到动态配置流程,动态渲染表单。大大减少了需求变更带来的工作量,剩下的时间就可以去做一些自己喜欢的事。所以activity真可谓是镇殿之宝,屠龙神器。可视化的流程设计也是我们使用工作流引擎的亮点。无论是对于开发和客户,如果流程修改后直接操作数据库去修改流程,这是反人性的,可视化的配置操作是友好的,是体贴的。第三个要使用工作流的原因是大数据时代,我们对数据的挖掘是可以提炼出它的价值的。沙子里可以淘金子 据工业化的工作流系统可以统计分析出管理者想要的数据,提升对企业的管理水平。
第三节 论文研究内容
在本系统完成的过程中,我们实现代码采用的程序语言是面向对象的,使MySQL可视化管理工具SQLyog管理数据库并实现数据库表,来储存该流程管理系统所需的各项数据。使用了若依体系框架结构,对整个界面的排版和装饰采用了CSS样式表进行设计,以让整个流程管理系统的画面更加美观舒服。在整个设计的过程中,首先,全方位的考虑分析系统各个方面的各种可能的需求,还有对能否实现该系统的运作做了细致的考察;然后,对流程管理系统的大致框架进行了详细的划分和规划,让整个系统的各个功能模块都能清楚的展现给用户。有了之前设计和分析的基础,根据功能分为流程管理和系统管理两部分。流程管理包括三个功能模块:已经执行的流程管理、要执行的流程管理以及我的流程管理。系统管理主要是有用户管理、角色管理和日志管理等需求。为了安全有效地运行系统,模块需要协同工作。
本论文主要研究内容如下:
(1)流程审批模块设计:流程审批模块是本系统的核心模块。用户需要通过这个模块实现流程的发起和审批操作。其应具备发起流程、审批流程、判断流程是否结束等功能。在应用过程中,该模块一般需要多种角色共同参与,其中包括流程发起人角色、流程审批人角色两种。流程发起人角色主要用于创建和发起流程,其可通过查看自己发起的流程来获取到流程当前审批所到的阶段以及流程审批的状态信息。发起人在创建流程时需根据申请审批的内容填写相应表单,填写完毕并点击提交后该表单将会被提交到该流程的第一阶段进行相应的审批工作。该角色可以对自己创建的、且已经结束的流程进行删除操作。流程审批角色是负责对已经发起的流程进行审批的工作。为了保证流程审批的公平和公正性,流程审批人无法自己选择审批哪个流程,而是根据模板规则指定给特定的审批人进行审批。在审批人的用户操作界面中,是由待办和已办两个列表构成,待办列表中用于显示提交给该用户且还未办理的流程,当流程被办理后,该流程将会出现在已办的列表当中。用户可根据已办列表中的审批记录了解并跟踪已处理的流程。每个流程都会经历一个完整的生命周期,可划分为4个阶段,分别是流程发起、流程审批、流程结束和流程销毁,如图所示:

(2)流程模板设计:流程模板是审批流程的重要依据,它的作用是定义流程发起、流程审批的规则。在流程发起时选择了相应的模板后,流程的审批周期将会严格根据该模板执行,由于它对流程的影响十分巨大,因此模板创建成功后不宜频繁改动,一般需要由专人进行维护。在模板的创建和修改过程中,该系统均采用表单的形式进行添加或更改,用户只需对表单的相应内容填写后保存,即可实现增改操作。为了更加合理有效的记录模板的信息,根据表单信息结构的特点,系统采用主子表的结构进行设计,即:由主表和子表共同构成。其中主表主要包括流程的名称以及流程的相应解释,根据这两项记录的信息,流程发起者可对各个流程有较为清晰的了解,同时也能更加方便的选择出自己需要提交的流程。子表用来设置流程阶段、当前阶段的签收类型以及当前阶段的签收部门等信息,一张主表中可添加任意个子表,每一个子表代表流程的一个阶段,用户可根据自己的实际需求对子表进行增减操作,实现定制化的流程审批功能。
模板设计结构如下所示:
流程A(主表):阶段1、阶段2、阶段3...阶段n(子表)
流程B(主表):阶段1、阶段2、阶段3...阶段n(子表)
流程C(主表):阶段1、阶段2、阶段3...阶段n(子表)
(3)用户权限管理设计:用户权限管理是系统权限分配功能的重要组成部分。该功能的作用是对用户的操作做出限定,避免用户在系统中查看或执行了与自己的工作范围不相关的操作。每一个用户的操作界面都经过系统的严格控制,具有不同权限的人在系统中可访问的页面范围是不同的,从而保证系统的安全运行。在整个系统中用户权限管理这一个模块里,为了方便系统管理人员的管理,该系统引入了角色的概念,将用户和权限紧密的联系在了一起,用户、角色与权限之间的逻辑关系主要体现在用户与角色之间的绑定,角色与权限之间的绑定。其中用户与角色的关系主要体现在一个用户可以具有多个权限,而一个权限也可以分配给多个用户;角色与权限的关系是指一个角色可具有多个权限,且一个权限可被多个角色所拥有。系统管理员可根据以上规则实现对用户的权限分配。一般情况下,权限是根据系统的功能数量固定存在的,而用户和角色可根据实际的使用情况自行添加或更改。用户、角色、权限之间相互依赖,具有着紧密的联系

(4)最后对流程管理系统进行了相关的测试工作,通过测试表明,流程管理系统运作稳定,性能优良,通过流程管理系统能够提高工作效率,适应业务流程的变化. 这使我们可以更好地控制业务流程并降低系统开发和维护成本,但是还有一些功能和模块需要在实践中不断去完善和更改。

第四节 论文组织结构
本论文的组织结构如下:
第一章,引言
在第一章节讲述了关于工作流的历史背景、设计的意义、工作流近况、本论文研究的内容和本论文的章节的布局。
第二章,系统相关技术介绍
本章节开始讲述工作流引擎Activiti及相关技术概述。详细说明解释工作流的概念和其运用,并对工作流引擎Activiti的结构和实现原理进行全面的阐述。同时对BPMN2.0,bpmnjs,RuYi框架,数据库相关知识进行了相关介绍。
第三章,系统总体设计
本章首先提出了系统的各个方面的必要的需求。系统功能性需求为对每个类型的用户可能需要的功能的实现。系统的非功能性需求分为性能、可靠、可用、实用、安全、易于维护性的需求等几个方面。可行性方面分别从运行、技术、经济的可行性三个方面流程管理系统系统的计划实行了详细的可行性分析。
第四章,系统具体实现
介绍了该体系的具体内容,并且分析了每个模块具体所用的技术手段和某些控件的使用。
第五章,系统测试
本章在本系统研究、设计、开发与实现完成后,对某些页面可能出现的各种情况做了详细的测试并且展示了每个测试的测试结果。

第二章 系统相关技术介绍
第一节 Activiti的介绍
Activiti项目是基于Apache License许可的开源项目。在尊重作者和开源的前提下,允许使用开源代码进行二次开发,重新发布。Activiti项目的前主管叫Tom Baeyens。2010年立项。Activiti一共有三个版本,5,6,7。因为Activiti前身是JBPMN,这个工作流引擎基于JBPMN5开发出来的引伸产品,所以Activiti的初始版本号就是5而不是1。为啥要这么搞呢,简单的说,就是兄弟分家了,分出了两个产品,Activiti项目支持BPMN标准,,我们听说过各个行业都有行业协会和行业标准,列如汽车行业。国内的方向盘都在左边,都是四个轮子,排量也有一定的范围要求。在工作流领域比较权威的行业标准是BPMN2.0规范,基于这个规范的出现,广大开发者就可以做通用的工作流引擎,工作流解析页面。各家的工作流引擎在很大程度上可以通用,节省社会资源,学习成本,流程转化的成本。
工作流常见业务场景:
(1) 线性审批

(2) 会签审批

(3) 条件流程

第二节 BPMN2.0简介
BPMN(Business Process Model and Notation)业务流程建模标注。BPMN的出现弥补了从业务流程设计到流程开发的间隙。BPMN是OMG国际标准组织于2011年推出的BPMN2.0标准。OMG的定位是对象管理组织,成立于1989年,是一个国际性开放式会员制的非盈利技术联盟。OMG由企业,学术机构和政府组成,BPMN2.0支持强大的可视化设计,执行和维护流程。BPMN2.0标制定统一了业务流程描述文件与业务流程符号,使不同企业能够在相同的标准下进行交互开发,极大的推进了行业进步。
我们可能都经历过不同的手机充电口差别是很大的,不同的手机生产商都有自己的充电口标准,导致的结果是什么呢?首先不方便,充电器不能通用,其次消耗大,充电设备不能复用,造成资源的浪费。现在我们买的手机大家都知道是什么充电口吗?安卓的基本是tpc,新出的笔记本电脑也都是这个接口。苹果从2012年开始使用的是Lightning接口。同理,作为流程系统实现的方案有很多。简单的做法,我们可以使用枚举字段来表示流程的任务节点,并在代码逻辑判断下一个执行的环节。我们也可以设计一些流程定义表,流程执行表,历史流程表实现业务流的流转,那问题是什么呢?就和早期的手机接口一样,哪个需要工作流的公司,都需要自己开发一套标准。学习成本高,不通用。工作流不只是业务的流转,完善的工作流还需要可绘制页面的支持。由于工作流描述文件不一样,很难出现高复用,又好用的工作流绘制页面,所以工作流一直是业务系统,公司开发的痛点与难点,BPMN2.0规范的出现解决了这个问题,BPMN是独立于企业的标准。实际上,BPMN主要包括的两部分:对绘制业务流程图标的定义,说明流程的含义。更重要的是,对业务流程描述的定义,在BPMN2.0中,业务描述实际上是xml文件,里面描述了流程的内容,包括流程的图标,类型,描述,流程等等,基于统一标准的BPMN2.0规范,各大厂商开发了很多好用的插件,在统一的标准下实现业务流程的绘制,部署,发布,流转,统计等功能。
BPMN2.0常用的工具。下面的图我们可以看到,这个页面是我们在idea里装了bpmn插件之后显示的内容和我们在线的bpmnjs绘制的内容是一样的。但是我们在实际的工作中不会让客户和我们的项目顾问打开idea去绘制流程,所以在开发的过程。我们可以使用idea里的插件,在实际项目部署和运维的过程中,我们肯定是使用可视化的web端的bpmnjs去进行流程绘制。
首先,第一个图标叫StarEvent,是整个流程的开始节点,EndEvent是整个流程的结束节点。一个流程尤且只有一个开始节点,但是可能会有多个结束节点。UserTask这是任务,我们每一个流程会有多个任务,当然除了用户任务,还是其他的任务,比如说ServiceTask,ManualTask。其他的任务一般来说是执行指定需要功能的时候使用的。ParamlleGateway:网关分四大类,包括并行网关,排它网关、包含网关和事件网关。流程。SubProcess:子流程一般使用在两个环节,对于主流程过于复杂,我们可以在某一个节点上使用子流程,待子流程里头的任务都流转完了之后再回到主流程里来流转。还有一个典型的使用场景是不同的流程里头有相同的子流程,这样我们就可以把相同的子流程提炼出来,而不用每一次都重复画子流程,节省绘制流程图的时间,提高效率。Pool:甬道,我们可以将不同的角色放在不同的甬道里,明确每一个角色所在的位置以及流程的流转内容。BoundaryEvent:边界事件,activity支持丰富的各种事件,以满足我们实际工作中不同的业务需要。我们可以使用idea将标准的bpm2.0业务图发布为实际的业务工作流,支持业务的流转。完整的业务过程有定义流程,发布实例,执行任务,监控报警,统计优化等几个环节。我们在开发阶段,idea中安装了bpmn2.0插件后就可以绘制以保存bpm2.0图。对于我们bpmnjs图是可以通用的,使用activiti引擎可以将bpmn业务图解析出来,自动创建对应的业务流程表,并使用封装好的代码方便的对业务流程进行流转。

第三节 BPMN-JS简介
bpmn-js 是 BPMN 2.0 的查看和编辑工具。它是用 JavaScript 编写的,将 BPMN 2.0 图表嵌入到现代浏览器中,并且不需要服务器后端。bpmnjs是基于webpack的,需要使用npm安装和运行。安装:npm install,运行:npm run dev。项目中bpmnjs放在resource/static/bpmnjs下,如果需要修改bpmnjs内容则要重新运行编译。 编译好的文件在public目录下,正式项目中不需要使用npm,直接启动项目即可。
第四节 RuoYi框架介绍
RuoYi是一款基于SpringBoot+Bootstrap的极速后台开发框架,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf、Bootstrap),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、通知公告等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务。
必要配置:修改数据库连接,编辑resources目录下的application-druid.yml。

修改服务器配置,编辑resources目录下的application.yml

核心技术
(1) SpringBoot框架
什么是SpringBoot呢,就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置,能迅速的开发web应用,几行代码开发一个http接口。
所有的技术框架的发展似乎都遵循了一条主线规律:从一个复杂应用场景衍生一种规范框架,人们只需要进行各种配置而不需要自己去实现它,这时候强大的配置功能成了优点;发展到一定程度之后,人们根据实际生产应用情况,选取其中实用功能和设计精华,重构出一些轻量级的框架;之后为了提高开发效率,嫌弃原先的各类配置过于麻烦,于是开始提倡“约定大于配置”,进而衍生出一些一站式的解决方案。
这就是Java企业级应用->J2EE-> spring-> springboot的过程。
随着Spring 不断的发展,涉及的领域越来越多,项目整合开发需要配合各种各样的文件,慢慢变得不那么易用简单,违背了最初的理念,甚至人称配置地狱。Spring Boot 正是在这样的一个背景下被抽象出来的开发框架,目的为了让大家更容易的使用Spring、更容易的集成各种常用的中间件、开源软件; Spring Boot基于Spring 开发,Spirng Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring 的解决方案,而是和 Spring 框架紧密结合用于提升Spring 开发者体验的工具。SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多设置,多数Spring Boot应用只需要很少的Spring 配置。同时它集成了大量常用的第三方库配置(例如Redis、MongoDB、Jpa、RabbitMQ、Quartz等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用,
简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包, spring boot整合了所有的框架。
Spring Boot出生名门,从一开始就站在一个比较高的起点,又经过这几年的发展,生态足够完善,Spring Boot已经当之无愧成为Java领域最热门的技术。
(2)Shiro安全控制
Apache Shiro是Java的一个安全框架。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。其不仅可以用在 JavaSE环境,也可以用在 JavaEE 环境。
(3)Thymeleaf模板
Thymeleaf是一个用于Web和独立Java环境的模板引擎,模板引擎的作用就是我们来写一个页面模板,比如有些值呢,是动态的,我们写一些表达式。而这些值,从哪来呢,我们来组装一些数据,我们把这些数据找到。然后把这个模板和这个数据交给我们模板引擎,模板引擎按照我们这个数据帮你把这表达式解析、填充到我们指定的位置,然后把这个数据最终生成一个我们想要的内容给我们写出去,这就是我们这个模板引擎,这模板引擎呢,是一个高级语言的模板引擎,他的这个语法更简单。而且呢,功能更强大。能够处理HTML、XML、JavaScript、CSS甚至纯文本。能轻易的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。
第五节 数据库相关知识
1、数据库概念介绍
数据库(DB,DataBase)概念,说白了它是一个数据仓库,数据仓库是干嘛的?存储数据用的。数据库它是一个软件,安装在操作系统之上的。既然是安装在操作系统之上的,操作系统不只有windows,还有linux,mac等等。Java在每个地方的安装包是不一样的,它在操作系统上不是跨平台的,但它是安装在操作系统上的一个软件,那么Java就可以实现跨平台。同样所有的数据库只要装了mysql,所有的mysql都一样了。sql就是操作数据库的语句,可以存储大量的数据,就是五百万一条以上。500万以下的数据都可以往里面存,没有任何问题。500万以上的话就要去做一些索引的优化,不然的话查询出来会比较慢一点。核心的话就是存数据,安装在操作系统上,它是一个软件。
作用是存储数据,管理数据。我们可以这样想,数据库和excel是没啥去区别的,只是我们需要用sql去操作他们。比如我们建一个excel表,打开表后会发现很多行和列,每一列它所对应的就是一个子段。而每一行对应的是一个具体的对象,在excel表里需要记录,同样在数据库里也需要记录。我们同样可以保存这张表,如果是数据库的话,我们可以保存在数据库里面了。如果我们打开也可以读取出来。
当今世界就是充满数据的网络世界,换句话说,互联网的世界就是数据的世界,现在的世界,得数据者得天下。数据库是所有软件体系中最核心的存在。
2、MySQL介绍
MySQL是一个关系型数据库管理系统,前世是由瑞典MySQL AB 公司开发,如今属于 Oracle 旗下产品。MySQL是最好的关系数据库管理系统应用软件之一。
MySQL是开源的数据库软件,体积小、速度快、总体拥有成本低,招人成本低。适用于中小型网站,或者大型网站。
MySQL目前是Oracle产品的一部分,操作它的时候用的是的sql语言,通过表与表之间,行和列之间的关系进行数据的存储。

本章对本次系统涉及到的部分关键性技术进行了原理的讲解,非常深入的介绍各个技术的工作流程,运行逻辑以及开发过程中的运用,为后续的系统开发奠定了非常好的基础。

第三章 系统总体设计
本章在完成基于对前后端技术的研究之后,设计出了流程管理系统,完成项目的真正的落地与部署。本课题研究的流程管理系统是一个以流程发起、审批以及流程模板管理为主,用户权限管理为辅的信息化流程系统。根据功能分为流程管理和系统管理两部分。流程管理包括三个功能模块:已经执行的流程管理、要执行的流程管理以及我的流程管理。系统管理主要是有用户管理、角色管理和日志管理等需求。为了安全有效地运行系统,模块需要协同工作。该系统可以节省企业的运营成本,提高企业办公效率。采用B/S架构,通过浏览器去访问放在服务器上的服务系统,浏览器上的前端页面对来自后端的数据进行渲染和展示,用户可以在浏览器上进行对后台数据的操作与查询。采用B/S架构的各种应用系统特别方便的一点就是不用在本地安装,只需要打开我们的浏览器就行了。实际上,这是前端现在正在做的一些事情,大多数逻辑已移交给后端来实现,而我们的大多数前端只需要做一些数据渲染,请求我们后台的接口和其他操作起来想对简单的逻辑。与传统的C/S系统架构相比不同的是,现在流行的B/S架构总共有三层,如下:
第一层,前端数据展示,即表现层:主要是实现了用户对系统进行操作后,对其操作结果进行展示和输出功能。
第二层,后端对用户的操作逻辑的处理,即逻辑层:通过后端项目完成处理来自前端用户的操作请求。
第三层,对持久化数据的操作,即数据层:完成来自用户操作后的逻辑对于持久化数据的修改、新增、删除等。

第一节 需求分析
一个成熟并且稳定的流程管理系统,应该以实际为出发点,依据相关的理念以及实践操作来达到简化用户的工作量,根据名字都可以看出来,最重要的就是管理流程。但是现在的办公流程管理系统已经不单单是自动化办公了,而是需要让公司里的各个部门的不同员工能够共同协作办公。
功能需求:
系统首先需要确定用户身份,通过特定的账号密码登录,判断权限。这一步要考虑到信息安全问题,最好要做数据加密处理。普通用户的权限有限,系统中除了普通用户,还需要系统管理员来进行整体用户角色的把控。系统管理员的权限应该是最高的,能够处理流程,分配流程内容的权限,以及给其他人分配权限。一个用户可以是多个角色组成,不同的角色去处理不同的事情,有着不同的权限,参与不同的流程。用户数据也需要进行整合处理,能够进行检索。
从管理方面考虑,为了便于管理,应该有设置管理员模块对不同角色进行集中统一的管理,管理员要能够对其他角色的所有信息实行管理。
从审批角色方面考虑,最核心的设计是对普通角色进行管理,因此审批者必须可以发起流程,审批普通角色的请求,查看自己的待办。这样可以方便审批者对普通用户的请求情况进行清晰的查看和管理。
从普通角色方面考虑,作为学生,员工,必须有自己的发起流程,查看审批者批改的情况,也能够查看审批者对自己提交请求的留言,这样普通角色可以更加清楚的了解自己的状况。
第二节 可行性分析
确认某个可能出现的问题能否在尽可能短的时间里面得到有效解决是研究可行性的目的。也就是说,对这方面的研究不是为了解决某一些错误,而是确定这些错误是不是值得我们去处理。本课题设计的流程管理系统通过在流程模板管理页面对流程进行配置,自行定制出执行审批的部门和审批的规则,可应用于各行各业,如:杂志社的论文发表审批流程、企业的财务审批流程、学校的项目申报审批流程等。真正意义上地实现了一个系统多处运行的效果。除流程管理功能外,该系统还具有用户的添加与起停用、角色的添加与起停用、角色与权限之间的绑定等功能,通过将这些功能与流程管理功能有机地结合在一起,从而保证系统安全且正常的运行。
(1)经济可行性分析。在计算机网络盛行的今天,各个领域都已经离不开与计算机相关的技术的运用。尤其是像数据流量大,事务繁杂的流程管理系统中,如果管理水平还停靠手工管理水平上,就会被时代的发展所抛弃,只有通过将作业管理与有关的网络技术联合起来才能够满足时代的要求、满足了现代化技术管理的需求。
(2)技术可行性分析。在核心技术的选择上使用了SQL server, 在数据库系统设计中对于各个数据结构(包括表字段,以及各个数据表与目标系统之间的相互关联)进行设计,是否能够符合我们所需要的数据库系统设计标准,直接影响到目标系统的可扩展性,特别重要的是针对将来一些可能会面临的大量数据挖掘问题,数据库的系统设计需要预先考虑到其相关的数据特点,便于实现可持续性的应用。选择本系统开发时间用不了很长的时间,该软件基本上是开源的,易于理解。并且它对电脑配置的要求也很低,在进行在设计和完成的过程中遇到的技术问题,我们通过网络上的搜索以及书本上都可以查得到并得以解决。以是,基于此,本项内容在技术上是可以行的通的。另外,本管理系统对计算机硬件的配置的要求也不是很高,是比较顺畅的执行速度,对管理者和用户来说是很方便的。
(3)操作可行性分析。该系统功能模块的划分更加贴切用户的实际需求,设计的操作更加简单,更符合使用习惯,能够操作该系统的用户只要掌握了基本的计算机技术就可以,系统的操作步骤大部分都很简单,这对普通使用者来说能够很容易理解,管理人员也非常容易熟练对系统的操作。

第三节 系统总体框架设计
本章设计的流程管理系统从流程建模到流程的部署、流程的自动化、流程的运行控制以及流程的管理监控,形成完整的流程管理体系.它包括了表单设计器(FormDesigner)、流程编辑器(Process Editor)、控制台(Consol)、业务流程协作门户(Portal)等几大部分。其中控制台、协作门户是BPM提供的终端用户应用。流程管理系统的框架图设计如图所示:
项目整体结构采用的是SpringBoot项目的分层结构,如图所示
(1)Config
所有的配置,用于存放SpringBoot相关的配置类,包括启动类。
(2)Controller
请求入口,所有请求的入口,前后端交互的入口。
(3)Service
逻辑层,负责所有的业务逻辑。
(4)Mapper层
持久层Dao,负责java和数据库交互。包括interface和xml两类文件.(5)
前端框架是一种封装了各种基础功能,可以使代码操作变得更加简单并且易读的架构。前端UI框架还提供了很多简单漂亮的如按钮、表单、提示弹框等控件,代码不仅简洁,还能够快速的构建出一个风格统一的网站。前端开发的基础,一定要掌握的是html、css和javascript,其中html和css根据UI图用来构建绘制页面,javascript主要用来处理页面的各种交互逻辑。现在各大公司常用的前端javascript框架有Jquery,react.js,vuejs等。
UI框架有layui、bootstrap、elementui等,具体使用哪一个,我们要根据实际的业务需求,判断哪些是复杂的功能模块,用哪一种技术能够更好的实现,以及个人的习惯喜好、熟悉程度来进行分析然后选择。本文在实现流程管理系统过程中的前端技术的研究和选型,我选择了比较经典的Jquery+bootstrap作为流程管理系统的前端架构。
第四节 系统功能模块设计
此流程管理系统一共设置用户模块和管理员模块两个功能模块。
第一,管理员模块。主要实现了下面这些基本功能:用户个人信息管理、管理员个人信息管理,增添用户等等。
第二,用户管理模块。主要实现了下面的这些基本功能:登录用户系统、自己的信息管理、请求审批、查看我的代办等等。
这些功能模块的实现使得流程管理体系的过程更加机器化,优化了整个流程管理的过程。通过降低管理时间的成本,提高管理效率,管理员和用户可以快速了解相关信息,从而降低人工对管理成本和时间成本,对同样的操作增强其处理能力,并充分全面展示其优势所在。
基于上述系统分析的结果,系统总体结构流程设计如下:

图3-2 系统流程图

在界面层上用户可以通过文本框输入数据并且通过与数据库以及业务逻辑层的一系列交互看到页面所显示的数据。在界面层,我们主要设置了三个模块提供给不同的用户,并且三个模块都实现了相对应的功能。为了让界面显示更舒服,使用了样式表来对界面的颜色和结构润色。
业务逻辑层的主要功能是处理上下两层的相关事务。例如用户名为111密码为111的教师要登录自己的系统,当111教师输入自己的账号和密码时,界面层将数据111传输给业务逻辑层,然后业务逻辑层经过核对,将用户的请求数据传输给下层,数据访问层就会从Teacher表中查看是否有账号和密码为111的教师,并且将查看结果返回给业务逻辑层,业务逻辑层做出一系列的处理后再将查询结果告知给界面层。这时候教师111就可以进行下一步登录自己的系统进行其他功能操作。
数据访问层用来在我们所设计的数据库表中读取和访问相关数据。在数据层,提供了一系列的表以供访问和读取。
(2)系统用户登录
系统的稳定和安全性,是设计系统是必须需要保证的,因此,用户想要正常使用本系统必须先通过登录界面验证,不论是管理人员还是用户都必须使用相应的账号和密码才能够顺利的登录到自己的模块。为了使登录过程更容易理解,用下图以流程图的方式解释了用户登录的过程。首先是系统用户登录管理界面,在登录界面上用户通过文本框把需要的数据写入,加入文本框的数据正确的话,页面会自动跳转到相应用户系统界面。如果文本框中的数据不存在于数据库中,系统就会弹出灰色的提示页面给出与数据有误相关的提示,并提示用户点击按钮在登录界面再次输入数据库表中存在的数据登录系统。

(3)系统添加信息流程:
管理员的职责就是管理用户有关的各种信息,下图是管理员添加信息,首先输入需要添加的各项数据,然后看各项数据的输入是否符合输入要求,如果输入的格式内容都没有错误,出现红字提示添加成功跳转到继续添加界面。如果输入的内容与规则不符合时,页面会返回让用户再次输入正确的数据。

第五节 系统数据库设计
一、系统数据流程图
为了实现数据的概念模型,我们需要做好数据采集与处理的控制、数据之间关系分析的逻辑模型、数据采集与处理过程中不易理解的细节的实现、数据在系统中的状态处理等工作。

图3-9 系统数据流程图

二、数据库表设计
数据库的写入是系统体系的核心内容。各个数据库表都是根据每个功能模块的需要进行行和列的设计,最终完成了对每个表主键和各个字段类型的选择。数据库的功能主要是存储系统需要的所有的数据。
下面是为数据库设计的表:
gen-table:gen_table_column
自动生成代码的两张表,读取mysql中需要生成代码的表,加载到这两个模板表中
一个是生成代码后的包配置,一个是列配置。

sys-config: 系统参数表,系统常用的一些参数,包括密码,皮肤,主题之类的。

sys_dept: 部门表,部门id,父id,祖级id必须保持一致。方便通过一个部门,找到该部门属于哪个分公司和总公司。

sys_dict_data:字典数据表,通过dict_type字段和字典类型表进行关联。
sys_dict_type:字典类型表

sys_job:计时任务表

sys_job_log:计时任务日志表

sys_logininfo:用户登录日志表

sys_menu:菜单表

sys_notice:系统通知表,用来进行一些系统通知,比如版本更新之类的

sys_oper_log:系统操作日志表

sys_post:岗位表

sys_role:角色表用来控制用户的权限。role_key这个字段不能重复,必须是英文。

sys_user:用户表

sys_role_dept:角色部门关联表,用来进行解耦

sys_role_menu:角色菜单关联表,每个角色拥有不同的菜单操作权限。

sys_user_post:用户岗位关联表,该用户属于哪个岗位

sys_user_role:用户角色关联表
表关系
RBAC(基于角色的访问控制)在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

第四章 系统具体实现
系统实现是最整个系统的最关键步骤,必须将核心的功能都展现在用户的眼前。系统的具体实现必须依赖于现实的需要,在贴切现实的基础上完成所需功能才能使系统在现实中展现作用。在第四章中将着重介绍此流程管理系统几个关键界面和实现界面所用到的核心技术和所需控件。
第一节 登陆界面
进入系统的一个登录页如图所示,登录页面一般都会有记住密码的功能,将需要记住的账号密码保存在本地,设置一个时效,那在该时效内,用户在登录时就不用每次都手动去输密码了,方便又快捷。
第二节 系统管理模块
用户按照登录要求进行登录,输入用户名称以及用户密码,按照身份选择学生、教师或者管理员身份进行登录,登录成功之后可以进行用户的一些功能,如果用户名字或者登录密码不对,系统会提示,重新输入名字或者密码。在系统管理里面,我们设计的模块主要是有:用户管理、部门管理、菜单管理、角色管理及系统的字典管理还有我们想要执行的定时任务的管理,完成对用户、部门、权限及角色等的新增,删除,修改等操作。
4.2.1用户管理模块
用户管理模块支持用户账号的模糊搜索,用户姓名的模糊搜索,用户状态的筛选,并提供筛选项重置按钮对筛选条件进行一键清空。并且支持性别,手机号码,及用户状态的排序。如图所示:
用户模块提供了展示字段的筛选,用户可以根据自己的需求选择自己想要看到的字段,方便用户进行对比等操作。如图所示:
用户模块支持用户的导出,并且支持Csv和Excel两种格式,如果说公司需要对公司员工进行统计,上报,存档,这个功能就提供非常友好的支持。如图所示:
用户模块支持了用户的添加,删除,编辑,重置密码,角色配置等操作,对系统用户进行了非常规范化的管理。如图所示:
4.2.2部门管理模块
部门管理模块支持部门名称的模糊搜索,可以很方便的搜索到我们想要的部门,以树状列表的形式完美的呈现出了公司的层级结构。如图所示:
我们可以通过列表上方的添加按钮新增一个公司层面上的机构。如图所示
我们可以通过列表上方的添加按钮新增一个公司层面上的机构。如图所示
4.2.3菜单管理模块
菜单管理模块支持菜单名称的模糊搜索,通过树状列表的形式展现了系统菜单的层级的关系对url和权限标识进行了展现。如图所示:
通过列表上方的添加按钮新增我们系统的一级菜单,可以配置他的图标及类型。如图所示:
通过列表中的添加按钮增加该菜单下面的子权限,可以添加对应的权限标识,用于权限控制。如图所示:
(1)菜单管理与权限控制的关系
菜单管理实质上也就是权限管理,权限管理在实际应用的场景中一般来说都是为某个或某类角色赋一些特定的功能。不一样的用户根据其角色会看到不一样的菜单和会执行不一样的操作。从我们实现的逻辑上来说,各类用户会绑定各种角色,并且不一样的角色会与不同的功能模块相关联,并确保用户无法执行超出其权限的操作(不能越权)。这项要求称为“基于角色的访问控制”,就是我们通常见到的RBAC。权限控制的两种主要方式:权限控制从控制力度上来看,目前有两种:粗粒度的从我们的URL上控制和细粒度的从执行的方法上控制。
粗粒度URL级别的权限控制:不管我们是单击一个按钮或者菜单栏,我们在服务器的后台系统中所有的操作都将会以某个路径请求到服务器终端。URL(即我们的访问路径)是标识服务器资源的路径,路径与资源是一一对应的。在我们设计数据库的时候我们会设计两个表:用户的管理表和权限管理表。用户管理表中所存放的用户将通过绑定角色最终和权限管理表中的权限之间产生一些关联。Fliter会过滤掉没有该url权限的用户的请求.总而言之,通过url来实现用户的权限控制就是在用户的请求到达我们的系统资源前,对其所拥有的权限(即url)进行判断,看其权限中是否拥有当前访问的url,有的话就允许其继续访问,要是没有的话,就提示他权限不足,阻止其操作。细粒度方法级别的权限控制:方法级权限控制相对来说就是更加的精细,比url权限控制更加的深入、精确。和url权限控制一样,用户发起某项操作的时候他也是在访问我们系统中url下的某一项资源,而这个url会对应到我们系统中的Controller层、Service层和持久层的方法。粗粒度权限控制方法是通过查询当前用户是否有拥有该权限来决定是否要阻止用的当前操作。细粒度权限的控制和粗粒度权限的控制主要区别是在于,我们需要在代码里自己来实现对权限的注解。
总而言之,通过方法级的权限控制来实现用户的权限控制就是在用户的请求到达我们的具体的代码中的方法的时候,根据该方法上的注解判断访问该方法需要有哪些权限,在根据用户所用的权限进行判断,看当前用户是否有这个权限,有的话就允许其继续访问,要是没有的话,就提示他权限不足,阻止其操作。(2)系统权限控制的具体实现
本文整个后端的权限控制方式采用的是一套权限控制框架Shiro。Shiro基本功能点:用Shiro权限框架来实现我们的系统的权限控制功能,可以说是非常的简单,他是一款易上手、使用简单,且功能相对强大的权限控制框架。Shiro本身的功能非常丰富。

Authentication:身份认证、登录,验证用户是不是拥有相应的身份;
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限,即判断用户能否进行什么操作,如:验证某个用户是否拥有某个角色,或者细粒度的验证某个用户对某个资源是否具有某个权限!
Session Manager:会话管理,即用户登录后就是第一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通的JavaSE环境,也可以是Web环境;
Cryptography:加密,保护数据的安全性,如密码加密存储到数据库中,而不是明文存储;.Web support: Web支持,可以非常容易的集成到Web环境;
Caching:缓存,比如用户登录后,其用户信息,拥有的角色、权限不必每次去查,这样可以提高效率·Concurrency: Shiro支持多线程应用的并发验证,即,如在一个线程中开启另一个线程,能把权限自动的传播过去
Testing:提供测试支持;
Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了
Shiro的外部实现原理如图所示:

subject:应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject,Subject代表了当前的用户,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等,与Subject的所有交互都会委托给SecurityManager; Subject其实是一个门面,SecurityManageer才是实际的执行者
SecurityManager:安全管理器,即所有与安全有关的操作都会与SercurityManager交互,并且它管理着所有的Subject,可以看出它是Shiro的核心,它负责与Shiro的其他组件进行交互,它相当于SpringMVC的DispatcherServlet的角色
Realm: Shiro从Realm获取安全数据(如用户,角色,权限),就是说SecurityManager要验证用户身份,那么它需要从Realm 获取相应的用户进行比较,来确定用户的身份是否合法;也需要从Realm得到用户相应的角色、权限,进行验证用户的操作是否能够进行,可以把Realm看成DataSource;
在我们后端代码中的体现,例如:我们用户添加这个菜单对应的就是sys:user:add这个权限标识我们就需要在对应的接口中打上与之对应的权限注解,实现权限的细粒度管理。如图所示:
4.2.4角色管理模块
角色管理模块支持角色名称的模糊搜索,以树状列表的形式展现了角色的分类系,实现了角色的分组化管理。如图所示:
我们可以通过列表上方的添加按钮添加一级角色或者是分类。如图所示
类型为分类的数据我们可以通过添加按钮添加它下面的子成员或者是子分类。如图所示:
列表中类型为角色的数据,我们可以通过权限按钮为其添加权限,权限和角色之间是一对多的关系。如图所示:
角色管理与权限控制的关系:
在RBAC整个的逻辑控制过程中,我们设计的权限与我们系统设定的角色属于多对一的关系,角色与用户之间的绑定关系使得用户拥有角色对应的权限。这就是权限管理的最简化实现。在组织中,创建角色以完成各种我们系统需要管理的业务,并根据用户在现实业务场景中所承担的职责来为用户分配相应的角色。用户的角色可一轻松的更改、重新赋能。可以根据新业务场景和系统集成为角色指定一些新的权限,还可以根据需要从角色中撤回权限。
为了实现从用户与角色再到功能之间的精准的把控,必须同时进行数据库表结构的整体规划和我们实现其功能的代码逻辑的控制设计。数据库设计中我们需要设计的表有:用户管理表、用户与角色的中间表、权限管理表、角色管理表和角色与菜单中间表的字段以及他们之间的外键设置。后端接口代码中需要使用拦截器对来自前端的访问进行验权,只有有权限的用户才能放行,而前端也需要根据用户的权限展示不同的菜单给用户。
角色管理模块简化了用户和权限之间的关联关系,可以实现权限与用户之间的任意搭配。然而,RBAC模型没有提供操作序列的控制机制,使得RBAC模型难以适应对操作序列要求严格的系统。在构建权限和角色之间的关联关系的时候,我们应该遵循三个著名的RBAC安全原则:最小权限原则、责任分离原则和数据抽象原则。最小权限原则:细化权限,保证每个权限都是某项业务的最小操作单元,方便我们后期给用户配角色时的搭配。责任分离原则:每项业务之间的权限要保证相对的独立,互不干扰,在需要多个角色共同完成某项业务操作的时候才能实现单独控制。数据抽象原则:赋予操作以意义,增强读、写操作在权限呈现给操作权限人员时的可读性,在选择权限的时候能够见名知意。
4.2.5字典管理模块
字典管理模块支持字典名称的模糊搜索,以树状列表的形式对我们系统的字典进行/层级关系的展不。如图所不:
字典管理模块主要是对我们系统经常用到的常用数据进行管理,比如性别(未知,男,女),系统字典中的字典项相对都比较固定,我们在字典管理中配置后可以供系统其他地方使用(比如编辑用户时的性别选项),方便展示与更改,规范了系统对此类数据的管理,保证了系统内常用数据的统一输出。如图所示:本章设计并实现了一个流程管理系统的系统模块,对登录流程实现、部门管理、用户管理、定时任务管理、字典管理、菜单管理、角色管理实现效果进行了展示与说明,并对实现过程中的关键性技术进行了分析,对角色、用户、权限之间的关系进行了阐述。

第三节工作流程管理模块
4.3工作流程管理模块
4.3.1工作流程管理模块
流程管理模块提供了对模型名称和流程名称的模糊搜索功能和一键重置搜索条件的功能。如图所示:
通过列表上方的创建按钮我们可以创建一条流程,但是这只会包含流程的基本信息。如图所示:
在流程管理模块,具体的流程设计是通过列表中数据对应的设计按钮实现的,我们可以自定义流程的各个环节,像领导审批等环节。如图所示:
我们还添加了导入导出的功能,方便流程在不同办公使用环境之间迁移。如图所示:
但一个流程要真正实现使用还必须关联一个表单,也就是说你提起申请,要让领导看到的一些申请内容,我们通过列表上方的配置按钮实现了流程与表单的关联,未关联表单的流程是发布不了的。如图所示:
此外,我们还提供了流程的激活,删除,挂起,启用,发布等操作,还提供了打印的功能,在实际办公环境中很实用。
4.3.2表单管理模块
单管理模块提供了对表单名称和表单代号的模糊搜索功能和一键重置搜索条件的功能。如图所示:
在表单管理模块中,点击列表上方的添加按钮可以新增表单,我们实现了建立动态表单的实体模型,实现了动态表单的自定义。用户可以独立自定义所需字段,也可以定义文件类型的字段。理论上,它可以支持任何类型的数据管理。完成对自定义表单字段的增加,删除,修改和删除,导出等相关操作。如图所示:
并且还提供了预览功能,提高了操作的便捷性,我们可以提前看到表单展示给别的用户的时候的状态,方便调整。如图所示:
此外,表单管理模块支持表单批量删除。
4.3.3我的流程模块
我的流程模块支持对当前用户创建的流程进行查看,支持流程名称模糊搜索,支持列表字段的筛选展示,支持导出和打印的功能。如图所示:
4.3.4我的待办模块
我的待办模块支持对当前用户需要处理的流程进行查看,支持流程名称、任务名称模糊搜索,支持列表字段的筛选展示,支持导出和打印的功能。如图所示:4.3.5我的已办模块
我的己办模块支持对当前用户已处理的流程进行查看,支持流程名称,任务名称模糊搜索,支持列表字段的筛选展示,支持导出和打印的功能。如图所示
4.3.6我的申请模块
我的申请模块支持对当前用户发起的申请流程进行查看,支持流程名称模糊搜索,支持列表字段的筛选展示,支持导出和打印的功能。是对当前操作用户的相关的流程提供的一个便捷性入口,方便他们日常工作的开展。如图所示:
第四节 系统数据储存
本系统数据库采用的是MySQL,MySQL也是目前市面上用得比较多的数据之一了。我们设计了用户表(存放用户的登录名、密码、姓名、性别、手机号码、邮箱、职务名称、更新时间等信息,并建立了dept_id与部门建立关联),管理我们系统的用户信息。部门表(存放了上级部门ID,部门名称,类型,所在区域ID,状态。菜单表,即我们的权限表(存放父菜单ID,菜单名称,菜单名称,菜单URL,菜单图标等信息),管理我们系统的部门。角色表(角色名称,父级ID,备注等),管理系统角色。用户与角色之间的关联表(用户ID,角色ID),管理用户和角色之间的关联关系。菜单与角色之间的关联表(角色ID,菜单ID),管理权限与角色之间的关联关系。日志表(用户ID,登录名称,操作功能,操作URI,IP,浏览器,系统,请求耗时),方便我们后续对用户操作的追踪。字典表(字典名称,字典码,字典值),管理我们系统中常用的数据字典,提高系统的灵活性。定时任务表(bean名称,方法名,参数,cron表达式),管理我们的定时任务,给用户开放自定义任务的窗口。表单设计表(表单代号,表单名称,表单类型,表单主题,表单设计数据)管理我们用户创建流程时需要自定义的表单。流程表单关联表(流程模型id,表单代号)建立流程与表单之间的关联。设计数据库字段的时候,我们就尽量一个业务相关的字段全部放在一个表中,尽量保证每张表都是一个最小的操作单元,然后存放相关业务的id在表中,与其他业务建立关联。在必要的时候我们也要在表中冗余其他业务的字段,在后续的查询操作中会减少连表查询的操作,会提高查询速度。
在Domain层,我们设计bean与数据库中的表一一对应,方便我们在持久层操作我们的数据库。

第五章 系统测试

结论和展望
本篇论文简单地介绍了我国办公服务管理流程系统的基本概念,分析了当前我国办公服务管理流程体系的发展现状及通常所遇到的困难。在此基础上,深入地分析了对于办公流程系统需求的研宄并谈到了以人员操作流引擎为技术核心的办公流程系统管理平台的设计和实现。本研究论文所讨论的设计方案,主要用于解决中小企业内部办公经营管理流程的界定和管理中存在的问题。根据本文研究方案所提出的办公服务和管理流程系统己在一些大型公司成功推出并上线,由此可以证明本研宄论文所用的方案有效地构建了一套比较完整的办公服务和管理流程系统解决的方法,解决了我国办公和管理工作流程体系中常见问题。办公管理流程是目前普遍流行的高效管理手段,然而,办公管理的流程是一套繁琐多变的管理制度。办公流程管理系统作为一个以企业核心为主要服务的系统,它涵盖了企业经营管理工作的各个方方面面。本研究论文以前期研究人员为主要参考,在大量数据资料的综合分析基础上,提出了一整套关于系统设计与其实现的解决方案,虽然这些问题中涉及了一部分非常重要的问题,但从总体上看,并不全面。另外,由于文章篇幅的所限,本文未能做到面面俱到地讲述,对一些核心模块的功能性进行了仔细地设计与实现的描述,对于其它一些模块的描述很简单更甚是没有被提到,这些模块同时也是办公流程管理体系整个设计方案的不可忽视的组成部分。
移动互联网时代也是以客户为导向的时代。企业更加关注客户对终端的需求和体验,这对于以科层制为主要管理方式的传统企业来说,是一个很大的挑战。如果说科层制的管理模式就是自上而下的行政命令式垂直管理,解决了用户分工和业务能力建设的问题,那么流程管理也就是一种以用户需求为核心,以实现用户对终端产品和价值的诉求作为主要目的的一种横向管理。简而言之,流程管理的宗旨在于实现用户的价值。当下时代,流程的管理日益受到了企业的关注。最直接的一个根本原因在于企业己经认识到了流程的可行性和持续优化要建立在对流程有效的目标管理基础上,并通过对流程指标的牵引,从流程优化走向能够更加重视和关注业务发展的本质。然而,现在流程管理仍处于摸索阶段,并不是因为流程管理方法本身的难度,而是流程管理的前提很难实现,所以很多公司有心有余而力不足。如果要实现流程管理,首先需要企业有一个相对成熟的流程管理基础,并能够管理核心业务,系统的支撑能力也要很强。同时,它应该与组织绩效体系相结合,这对公司来说是一个很大的挑战。

参考文献
[1]乔楠.基于ASP.NET的网上花店销售管理系统的研究[J].电脑知识与技术,2020,16(02):273-274.
[2]黄梯云.管理信息系统[M].北京:电子工业出版社.2013.
[3]甘仞初.信息系统开发[M].北京:经济科学出版社.2013.
[4]卫红春.信息系统分析与设计[M].北京:清华大学出版社.2014.
[11]孙卫琴,李洪成.Tomcat与JavaWeb开发技术详解[M].北京:电子工业出
版社,2015.
[12]李国娟.基于JavaEE架构的网上购物系统的设计与实现[D].河北:河北工业大学,2011.
[13]王国辉.JavaWeb编程宝典:十年典藏版[M].北京:人民邮电出版社,2011.
[14]李刚.轻量级J2EE企业应用实战[M].北京:电子工业出版社,2007.
[18]于万波.网站开发与应用案例教程[M].北京:清华大学出版社,2015.
[19]戴维尔.JavaScript程序员教程[M].北京:电子工业出版社,2015.
[20]康牧.JSP动态网站开发实用教程[M].北京:清华大学出版社,2013.[21]马赫著.DreamweaverMX2004网页设计经典108例[M]?北京:中国青年出版社,2015.
[22]唐友国,湛洪波.JSP网站开发详解[M].北京:电子工业出版社,2015.
[23]张文静,林琪.JSP程序设计[M].北京:人民邮电出版社,2015.
[24]JamesD.McCaffrey?.NETTestAutomationRecipes[M]?北京:电子工业出版
社,2007.
[25]张孝祥,徐明华.JAVA基础与案例开发详解[M].北京:清华大学出版社,2014.
[26]杨学瑜,高立军.软件开发过程与项目管理[M].北京:电子工业出版社,
2014.
[28]张洁才.Javaweb应用开发教程[M].北京:科学出版社,2015.
[29]黎连业,王华,李淑春.软件测试与测试技术[M].北京:清华大学出版社,
2014.
[30]张大方,李玮.软件测试技术与管理[M].湖南:湖南大学出版社,2013.
[31](美)H.M.Deitel,P.Jdeitel.JavaSoftwareSolutionsFoundationsofProgram
Design[M].5thed?北京??清华大学出版社,2014.
[32](美)ElliotteRustyHarold.JavaNetworkProgramming[M].南京:东南大学出
版社,2015.[33](美)Davidflanagan.javainaNutsbell[M].5thed.南京:东南大学出版社,
2016.
[34]霍斯特曼科内尔.Java核心技术[M].北京:机械工业出版社,2014.
[35]赵利庆.JavaWeb架构中数据库优化模式的研宄与实现[D].北京:北京邮
电大学,2015.
64.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一整套毕业设计!代码论文调研报告齐全!同学上学期的毕设! 一、课题来源及意义 随着我国社会主义市场经济的快速发展,各行各业的竞争日趋激烈。传统的全静态的新闻,由于自动化程度低,运行中需要大量的网页制作人员,已经被淘汰。而全动态的新闻,自动化程度高,而被广泛采用。 通过使用动态和静态结合的新闻发布系统,使我们能够全身心地投入到网站运营上去。随着Internet的普及,网页逐渐融入人们的生活,快速及时地浏览新闻,获取五彩缤纷的网上信息,已成为人们日常生活的一部分,与此同时越来越多的企业建立了自己的WWW网站,企业通过网站可以展示产品,发布最新动态,与用户进行交流和沟通,与合作伙伴建立联系,以及开展电子商务等。其中,新闻管理系统是构成企业网站的一个重要组成部分,它担负着双层作用,一方面可以用来动态发布有关新产品或新开发项目,另一方面又可以及时向顾客公告企业经营业绩、技术与研发进展、特别推荐或优惠的工程项目、产品和服务,从而吸引顾客,扩大顾客群。 信息时代的高速发展,传统的报纸杂志已经远远满足不了人们的需求,人们更加希望能够在网上了解更多的新闻和信息,于是我们就很有必要在网上创建一个新闻发布管理信息系统了。大部分网站都是采用静态的方式来发布和管理信息的,可是网站需要更新的信息量也越来越大,所以这很不利于网站管理人员的工作。为了更加方便的管理网站,于是我们就很迫切的需要利用动态技术创建一个新闻发布管理信息系统了。 信息技术的发展使得整个世界越来越小,这也意味着企业的竞争环境由区域化向全球化发展,尤其是中国加入了WTO后,经济全球化是大趋势,企业所处的宏观环境实际上已经不仅仅是通过信息技术员连接起来狭义的网络,而应该将技术环境与经济环境结合在一起考虑,形成一种大网络的概念。企业对信息的掌握程度、信息获取是否及时、信息能否得到充分利用、对信息的反应是否敏感准确,已越来越成为衡量一个企业市场竞争能力的重要因素。所以建立动态的新闻发布系统适应企业发展的要求,其意义是具大的。新闻系统是一个比较典型的文档系统,掌握了新闻系统的开发,对于开发其它的文档系统都有很大的帮助。 二、国内外的发展状况 新闻发布系统,在国内外早已有着成熟的研究成果和广泛的社会应用.国内众多大型门户网站,如网易(http://www.163.com),新浪(http://www.sina.com.cn),搜狐(http:// www.sohu.com),首都在线(http://www.263.net),人民日报网(http://www.people.com.cn),中国新闻网(http://www.chinanews.com.cn)等,每天甚至时刻进行海量信息的维护,以保持网站内容及时更新,内容管理系统,起着绝对重要的作用,是当今动态网站内容更新的主要手段。国外也有很多这样的大型门户网站,如CNN(www.CNN.com),美国之音(www.voanews.com),新加坡联合早报网(www. zaobao.com)等。 三、本课题的研究目标

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值