From a78b5b7b2ac6eff4462548ed523f2e01076e77f3 Mon Sep 17 00:00:00 2001
From: 捏造的信仰 <yiding.he@gmail.com>
Date: Tue, 23 Aug 2022 13:36:29 +0800
Subject: [PATCH] 修复执行任务时,若方法入口在任务的父类,则无法执行的问题 实际项目开发中,可能会为所有定时任务类建一个共同的父类,任务的执行入口在父类定义,以便管理。此时使用 `getDeclaredMethod()` 是无法从子类找到要执行的方法的,而是要换用 `getMethod()` 方法。
---
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java | 27 +++++++++++++++++----------
1 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
index d7bc6c9..71540b3 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
@@ -75,7 +75,7 @@
* @param job 调度信息
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public int pauseJob(SysJob job) throws SchedulerException
{
Long jobId = job.getJobId();
@@ -95,7 +95,7 @@
* @param job 调度信息
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public int resumeJob(SysJob job) throws SchedulerException
{
Long jobId = job.getJobId();
@@ -115,7 +115,7 @@
* @param job 调度信息
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public int deleteJob(SysJob job) throws SchedulerException
{
Long jobId = job.getJobId();
@@ -135,7 +135,7 @@
* @return 结果
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public void deleteJobByIds(Long[] jobIds) throws SchedulerException
{
for (Long jobId : jobIds)
@@ -151,7 +151,7 @@
* @param job 调度信息
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public int changeStatus(SysJob job) throws SchedulerException
{
int rows = 0;
@@ -173,16 +173,23 @@
* @param job 调度信息
*/
@Override
- @Transactional
- public void run(SysJob job) throws SchedulerException
+ @Transactional(rollbackFor = Exception.class)
+ public boolean run(SysJob job) throws SchedulerException
{
+ boolean result = false;
Long jobId = job.getJobId();
String jobGroup = job.getJobGroup();
SysJob properties = selectJobById(job.getJobId());
// 参数
JobDataMap dataMap = new JobDataMap();
dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);
- scheduler.triggerJob(ScheduleUtils.getJobKey(jobId, jobGroup), dataMap);
+ JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
+ if (scheduler.checkExists(jobKey))
+ {
+ result = true;
+ scheduler.triggerJob(jobKey, dataMap);
+ }
+ return result;
}
/**
@@ -191,7 +198,7 @@
* @param job 调度信息 调度信息
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public int insertJob(SysJob job) throws SchedulerException, TaskException
{
job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
@@ -209,7 +216,7 @@
* @param job 调度信息
*/
@Override
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public int updateJob(SysJob job) throws SchedulerException, TaskException
{
SysJob properties = selectJobById(job.getJobId());
--
Gitblit v1.9.2