- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?
?
SpringBoot整合Qaurtz系统设计与实现思路
?
?
文章目录
一、前言
二、数据库表设计
三、界面设计
四、代码设计逻辑
五、SpringBoot整合Quartz实现以上功能小案例
5.1 代码设计
5.2 来测试吧
一、前言
后端基于基于SpringBoot框架进行设计。在系统中可以设计定时任务、定时计划两大模块。
定时任务:定义的一些定时的任务。任务的名称、任务描述、类名或者URL、状态(是否关联)、是否是系统计划、修改人、修改时间等。
定时计划:是真正执行的任务。(1)每个定时计划可以设定一条或者多条定时任务(触发任务),并进行发布。(2)需要设置定时计划的触发器(按天、周、月等)。
二、数据库表设计
相关的数据库表设计4个表,分别是定时任务表、定时计划表、定时任务定时计划关联表、定时计划执行记录表。
1、cfg_scheduletask(定时任务表)
字段
解释
IID
主键
ISYSTEM
系统定义[0:系统级 (系统级不允许删除) 1:自定义级(可以进行删除操作)
SNAME
任务名称
SCLASSNAME
存储任务的类名或者URL地址
SDESCRIPTION
任务描述
ISTATUS
状态[0:发布 1:未发布](定时计划中发布后,此状态为0)
IMODIFIED
修改人
DMODIFIED
修改时间
IFLAG
标志[0:启用 1:禁用](此任务是否启用,启用的话才可以被定时计划中选择为触发任务)
2、cfg_scheduleplan(定时计划表)
除了主键、名称、描述、修改人、修改时间、状态[0:发布 1:未发布]、标志[0:启用 1:禁用]字段以外,还包括的关键字段有:
字段
解释
TSTARTTIME
触发开始时间
TENDTIME
触发结束时间
ITRIGGERMODE
触发方式[1:一次 2:按天 3:按周 4:按月]
ITRIGGERMODE
重复间隔
IDAYVALUE
按天间隔
SDAYSOFWEEK
按周间隔[3,5 每周三和周五]
SMONTHS
月重复
IMONTHTYPE
月中日重复方式[1:月中的日 2:月末 3:月中的星期]
SDAYSOFMONTH
月中日重复
IMONTHWEEK
月中周重复
IMONTHWEEKDAY
月中周重复方式
3、cfg_scheduleplantask(定时计划与定时任务关联表)
字段
解释
IID
主键
IPLANID
计划ID
ITASKID
任务ID
4、cfg_scheduleplan_log(定时任务执行记录表)记录每一条定时计划中的定时任务的执行情况。
字段
解释
IID
主键
IPLANID
定时计划ID
IPLANTASKID
定时任务ID
SCONTENT
任务执行结果描述
ISUCCESS
执行结果,0:成功,1:失败
TSTARTTIME
任务执行开始时间
TENDTIME
任务执行结束时间
三、界面设计
可以有两个界面。一个界面对定时任务进行设置。一个界面制定定时计划以及定时计划的发布、关闭、删除等操作。
四、代码设计逻辑
1、每个定时任务需要执行的方法直接写成接口的形式。这样既可以方便前端调用方法,而且不需要写一堆JOB,只需要写一个公共的JOB然后通过传参不同调用不同的接口URL就可以了。
2、用户只需要点击定时计划的发布按钮,直接调用公共方法初始化调度器、查询需要执行的任务。其中JOB传值为一个公共的JOB接口,在里面可以通过LOG日志记录定时任务的执行情况,同时调用一个公共方法:访问URL调用接口方法。
3、所以说就是把所有的JOB集结成一个调用接口的方法,并记录定时计划的执行情况。
五、SpringBoot整合Quartz实现以上功能小案例
5.1 代码设计
首先,项目结构:
1、编写定时任务接口代码,定义两个定时任务接口restA和restB。
package com.mytest.testQuartz.quartz.rest;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
/**
* @author zll
* @version 1.0
* @date 2020/7/28 13:27
*/
@RestController
@RequestMapping(/testApi)
public class
文档评论(0)