点击下载源码
基于SSH的任务调度系统的设计与实现
摘 要
随着科学技术的飞速发展和各行各业的分工愈发明细化,对于改革传统的人工任务调度方式的呼声越来越大。得益于快速发展的计算机技术,我们看到了改革的方向。本系统是针对企业或者事业单位甚至一个小团队的任务调度而设计的,目的是改变传统的调度方式,通过计算机来计算各项任务的最佳人员分配和最佳时间分配,绘制出任务调度图,以此更好地进行各项任务的调度和团队协作,该系统是一种任务调度系统。
本系统采用了B/S体系结构,主要实现语言是JAVA,后台数据库使用的是MySql。整个系统实现角色将分为组长和组员,实现功能包括帐号注册、修改信息、项目管理、任务管理、消息管理、团队管理等功能。本任务调度系统的设计实现可以远程实现任务的调度与科学分配,并通过评估各项任务与参与人员,来使项目更好的进行任务调度。
关键词: 任务调度;B/S;SSH
目 录
摘 要 I
Abstract II
目 录 III
1 引言 1
1.1 课题研究意义及背景 1
1.2 论文的目的及设计要求 1
2 研究现状及设计目标 2
2.1 任务调度系统的现状 2
2.2 任务调度系统优缺点分析 2
2.3现行研究存在的问题及解决方法 2
2.3.1 现行研究存在的问题 2
2.3.2 解决办法 3
2.4 本课题要达到的设计目标 3
2.5 经济效益分析 4
3 关键问题及分析 5
3.1 问题分析与设计 5
3.1.1 核心问题即任务调度 5
3.1.2 数据表间联系 6
3.1.3 系统安全性 6
4 调度算法设计 7
5 需求分析 8
5.1 USE-CASE用例图 8
5.2 类图 8
5.3 活动图 9
5.4 功能需求 10
5.5 开发环境 10
5.6 系统交互图 11
5.6.1 系统架构类交互图 11
5.6.2 系统协作图 12
5.6.3 系统状态图 13
6 系统设计 15
6.1 系统体系结构 15
6.2 系统功能结构 15
6.3 系统架构的设计目标 16
6.4 系统架构设计 16
6.5 数据库表结构 17
6.5.1 数据库设计原则 17
6.5.2 数据库设计概述 18
6.5.3 数据库设计周期 18
6.5.4 数据字典 19
7 系统实现 21
7.1 公共模块 21
7.1.1 模块功能 21
7.1.2 模块代码 21
7.2 注册模块 26
7.2.1 模块功能 26
7.2.2 模块代码 26
7.3 登录模块 29
7.3.1 模块功能 29
7.3.2 模块代码 29
7.4 搜索模块 31
7.4.1 模块功能 31
7.4.2 模块代码 31
7.5 项目管理模块 33
7.5.1 模块功能 33
7.5.2 模块代码 33
7.6 任务调度模块 40
7.6.1 模块功能 40
7.6.2 模块代码 40
8 结论与展望 49
参考文献 50
致 谢 51
1 引言
在实际生产生活中,许多项目是由多个任务组成的,并且这多个任务存在约束关系,有一类约束关系为树状的约束关系,小至产品,大至广场的修建。如产品由工件装配而成,而工件又由一系列精加工任务组成,再如广场由各类功能区组成,而各类功能区又由一系列建造流程租出。所以任务调度是各行各业都离不开的,在以前这些工作都由人力完成,或者采用低效的任务调度策略。到了现在,各行各业都在运用计算机进行复杂计算或自动化处理事务,计算机能够进行快速复杂计算,可以实现远程办公,团队协作,并有将数据可视化的能力。使用计算机并且加上高效的调度策略,不仅能提高工作效率,还能进行更科学更客观的分配。
计算越复杂,计算机的优越性体现的越明显。在多任务的项目中,计算机可通过各类算法,如关键路径算法或多机调度算法,来进行任务评估和总体任务调度,计算机与人们的生产生活密切相关,故现在开发任务调度系统。本系统运用了当前的流行框架Spring,Struts2,Hibernate,保证了可扩展性与可维护性。
1.1 课题研究意义及背景
虽然科技进步在改革开发这几十年来速度飞快,计算机行业也发展迅速,但仍然有大量商家或企业,甚至项目组,采用落后的人工管理方式或者低效的任务调度策略,这无疑是对计算机的一种无视。
计算机处理信息的准确度与高效率远远超过人类,在团队协作中项目又可以被分成一个个小任务。故此,本人开发这套基于SSH的任务调度系统,使团队协作与任务分派更加科学高效,进而促进企业经济效益的提高。
1.2 论文的目的及设计要求
任务调度系统主要目的是对企事业单位项目的任务集进行调度分配,敏捷高效地处理任何或大或小的项目。使项目小组的工作效率大大提高,工作成本大大降低。本系统开发主要包括调度算法的设计,后台程序的处理,后台数据库的建立和维护,和前端页面的展示开发。算法要求高效性和可实现性,后台要求业务逻辑的合理性与科学性,数据库要求数据的完整性和一致性,前台页面又要求美观性与功能完备性。正因为此,本人选择采用SSH三大框架的整合技术和MySQL数据库进行系统的开发。
本系统的实现角色将包括项目组长和项目组员这两个角色,用户可同时扮演两种角色,共有的功能包括修改登录密码、发起项目、删除项目、参与项目、添加任务、删除任务、添加成员、删除成员、处理消息。其中组长部分的功能还包括组员管理、更新项目,其中组员部分的功能还包括申请加入与申请退出。并且,不光保证实现这些功能,还得为本任务调度系统提供一个良好的人机交互,提高系统友好性。
2 研究现状及设计目标
2.1 任务调度系统的现状
长久以来一般的大小项目组均采用传统的人工方式或者低效的调度算法来负责项目任务集合的日常管理工作,在以前,也就是计算机尚未普及前,基于树状任务集的项目的管理方式是人工管理,这样的缺点是显而易见的,效率低下并且错误率高。如果我们应用计算机来代替落后的人工管理方式,无疑会极大程度地提高效率和准确率,使我们更加精准的管理项目。
目前存在的调度算法多以时间轮转为主,虽然保证了项目树状结构的横向,但忽略了纵向。针对这个问题,本文提出了更优秀的调度算法。
2.2 任务调度系统优缺点分析
1.优点
(1) 采用可扩展性强、分离度高的B/S模式。
(2) 数据库选用了市场上应用广泛的关系型数据库。
(3) 界面美观大气,操作逻辑科学合理。
2.缺点
(1) 软件稳定性有待提高
目前,B/S模式已经广泛应用于网站和系统建设,但同时,B/S模式也存在着很多需要我们注意的问题,如并发性操作、大数据量访问等,这就很考验系统的设计和代码,因为他们会极大影响软件的稳定性。另外,软件行业中,版本更迭是非常常见的,但在更新版本的过程中,因为没有进行良好的交接,很容易造成系统的不稳定,为后期的维护工作带来巨大的困难。
(2) 存在安全隐患
B/S模式系统中的B是浏览器的意思,暨客户端操作是通过浏览器进行的,而浏览器又常采用脚本模式,脚本语言目前尚未完善,所以存在一些安全隐患。
2.3现行研究存在的问题及解决方法
2.3.1 现行研究存在的问题
1.调度系统形式落后
多以人工为主进行项目任务的调度,没能做到与时俱进,采用计算机和网络来进行调度。
2.调度算法低效暴力
先行算法多以时间轮询为主,忽略了任务可并行以及树状结构任务调度以纵向
为主的机理。
3.数据库选择问题
市面上的数据库种类繁多,从这么多中选出一个适合本系统、拥有强大功、移植性强的数据库是非常重要的。选择时必须保证它可以有效的与其它数据库结合,降低系统的特定数据库的依赖,增强软件的可移植性。
4.可扩展性
因为需求的增多减少,或者弥补系统现有缺陷,程序进行修改和升级是必然的,这就要求程序具有良好的可扩展性。
5.开发平台和语言
选择一个良好的的开发平台和适合本系统的语言能够降低开发成本,延长生命周期。
2.3.2 解决办法
考虑到目前任务调度系统的需求与研究现状,想要解决上述问题应该从以下几方面的要求出发:
1.数据库选用MySql,足以保证数据存放的持久性,当存储设备改变时,不用重写程序代码就可以方便的移植过去。
2.系统实现模式采用B/S架构,实现过程也做到模块化,把用户界面与跳转逻辑分开,把业务信息又按应用功能分开,同时与数据交互层分开,任一方的改变都不会过多影响对方。
3.开发平台选用Eclipse,语言选用JAVA作为主要的开发语言,该语言一次编写随处运行以及强大的可伸缩性对于系统的开发和维护提供了强有力的保障。
4.设计一个能兼顾树状任务集纵横两个方向的调度算法,充分利用参与人员的时间空档,来缩短整个项目的完成时间
2.4 本课题要达到的设计目标
本课题采用B/S模式,面向或大或小的项目管理而开发的任务调度系统,为了系统的安全性,该系统只允许已经注册到该系统的用户使用。系统有两种角色:项目组长和项目组员。各用户可同时承担所有角色,各角色功能如下:
1.共有功能:
a、注册、登录功能,个人信息管理功能,如对密码的修改。
b、部分项目管理功能,实现了对项目的管理操作,包括对项目的搜索、查看操作。
c、部分任务管理功能,实现了对所有项目任务的管理操作,包括对任务集的查看操作。
2.项目组长:
a、具有管理组员、处理申请功能
b、具有部分项目管理功能,包括对项目的删除操作。
3.项目组员:
a、具有申请加入与退出项目组的功能。
2.5 经济效益分析
本任务调度系统是针对项目组任务调度和团队协作而开发的,一方面因为系统的人机交互界面的友好型和功能的全面性,工作效率与沟通成本均能得到较大改善,另一方面,系统开发运行成本低,所以经济效益是不言而喻的,能够用低成本得到高回报。
3 关键问题及分析
一个相对成熟的系统,对于稳定性和安全性都有很高的要求,本系统也不例外,所以本系统应用分层思想,通过前后台分离开发,来保证系统的稳定性与安全性。考虑项目组长和组员进入系统后功能需求的不同,需要对各用户类型的不同功能做详细分析。
3.1 问题分析与设计
在本次系统的设计中,势必会遇到许多以前没遇到过的问题,会需要许多曾经没有接触过的技术去攻克难点。所以,现将研究设计中要解决的问题总结如下:
3.1.1 核心问题即任务调度
此次所研究的问题是在3个约束下使由树状任务集组合而成的项目所用时间尽可能短。3个约束指的是:(1)对于每个任务, 必须等待其所有的前继任务完成后才能处理此任务;(2)对于每个组员, 任意时刻只能进行一个任务, 且必须满足完成一个任务后才能开始另一个任务;(3)不存在相同任务。
1、任务树和任务分类
由于项目的任务图呈树状结构,仅仅边的方向与正常的树相反,姑且可称之为任务树。任务树上的结点代表任务,有向边代表任务之间的次序关系。其中,叶结点任务为刚开始就可被进行的任务,根结点任务为最终进行的任务。当根结点任务完成,标志着整个项目完成。
设有一个项目, 项目由N任务组成.这N个任务可绘制出树状结构。在某个任务完成后, 剩下的未完成任务仍可绘制出树状结构。由任务树和问题的约束条件可知, 初始时只能调度某个叶节点任务.当某个任务结点的所有子节点任务全部完成, 则此任务结点就转换为叶节点任务。 现在分类任务:可调度任务是属于某空闲组员的叶节点任务; 准可调度任务是属于某非空闲组员的叶结点任务;不可调度任务是所有非叶节点任务;所有可调度任务和准可调任务的任务集为备选任务集 ;若某个任务X在某个任务Y之后,且中间再无其他任务,则成X为Y的直接后继任务。
2、调度策略分析
关键路径为图中的概念,树作为特殊的一种图,我们可将其概念引申过来,在这里我们将任务树中需要进行时间最长的路径称为关键路径,所以整个项目的完成时间在很大程度上由关键路径的有效调度所决定。值得注意的是,关键路径是在不断发生变化的,在某个任务完成后,剩余任务树的关键路径是有可能发生变化的,所以在调度中如果始终保持一条关键路径不变,就无法保证整个项目用时最短。所以我们首先采用动态关键路径策略。
除此之外,由于任务是从备选任务中调度,故多个可调度任务同时争夺一个组员的情况是很有可能发生的,于此同时还可能发生这多个任务的路径长度均为最长即均在关键路径上。考虑到这种情况,我们在这里可以采用最短用时策略,优先调度用时较短的那个任务。
在整个项目中,一个项目组是有一个或多个组员的,为了是各个任务尽早开始,故我们使任务选择最早空闲的组员即选择最早适合开始任务的空隙。这里采用首次适应调度策略。
3.1.2 数据表间联系
任务调度系统涉及到的数据复杂,业务逻辑关系也较复杂,尤其是调度算法的逻辑,所以可能需要用到临时表,表与表之间也需要通过外键联系起来。外键的联系保证在项目组任务调度过程中业务操作稳定的关键。底层数据库设计的好坏直接影响着整个系统的稳定运行。
由于任务调度系统涉及到了具体的用户更新维护项目信息、项目任务集信息、个人登录信息功能操作,数据库中的数据不能随意删除,以防出现信息丢失的问题。所以必须重视表间的联系,倘若不够完善,系统运行起来就会报出许多bug或error,结果造成的损失将无法弥补,程序的可维护性也大打折扣。
3.1.3 系统安全性
本任务调度系统是基于B/S模式的,需要通过浏览器来进行访问,也就是说所有用户都可以通过浏览器来访问本系统。
因此本系统加入了注册和登录模块,只有注册用户输入正确的帐号密码后,才可以访问本系统,并且根据不同的用户角色分配不同的功能权限。于此同时,使用Spring中的拦截器,在除了主页和注册、登录页面意外的页面,都会验证登录状态,最大程度的防止用户以非法途径进入到本系统中。
4 调度算法设计
基于树状任务集组成的项目问题调度算法如下:
1、 按照约束对项目构造任务树
2、 根据任务树将可调度任务和准可调度任务加入备选任务集。如果任务集为空,则表示项目完成,转至第5步。
3、 根据动态关键路径策略从备选任务集中选出路径长度最长的可调度任务。若任务唯一,则选取此任务,若不唯一,则选取用时最短的任务。
4、 应用首次适应调度算法调度选出来的任务,接着从任务树上删除此任务结点,从备选任务集中删除此任务。回到第2步。
5、 结束