任务调度目标串,增加 JobContext 对象接收,可获取 JobExecutionContext、任务中断状态、任务中断回调等;当当暂停或运行一次的时候,会发起中断任务通知;

This commit is contained in:
thinkgem
2025-10-21 12:51:50 +08:00
parent 9ae8f34160
commit 10d1db9ade

View File

@@ -8,7 +8,9 @@ import com.jeesite.common.entity.Page;
import com.jeesite.common.idgen.IdGen;
import com.jeesite.common.lang.DateUtils;
import com.jeesite.common.service.CrudService;
import com.jeesite.common.utils.ThreadUtils;
import com.jeesite.modules.file.utils.FileUploadUtils;
import com.jeesite.modules.job.entity.JobContext;
import com.jeesite.modules.sys.service.UserService;
import com.jeesite.modules.test.dao.TestDataChildDao;
import com.jeesite.modules.test.dao.TestDataDao;
@@ -142,7 +144,7 @@ public class TestDataService extends CrudService<TestDataDao, TestData> {
testDataChild.setTestData(testData);
testDataChildDao.deleteByEntity(testDataChild);
}
/**
* 任务调度测试testDataService.executeTestTask(userService, 1, 2L, 3F, 4D, 'abc')
*/
@@ -150,6 +152,29 @@ public class TestDataService extends CrudService<TestDataDao, TestData> {
System.out.println(DateUtils.getTime() + " 任务执行了~~~ bean: " + userService + ", i: " + i
+ ", l: " + l + ", f: " + f + ", d: " + d + ", s: " + s);
}
/**
* 任务手动中断操作的回调
*/
private final Runnable interruptedCallback = () -> {
System.out.println(DateUtils.getTime() + " 任务中断了~~~");
};
/**
* 任务调度测试testDataService.executeTestTask(userService, 1, 2L, 3F, 4D, 'abc', jobContext)
* 支持 JobContext 接收:支持获取 JobExecutionContext当暂停或运行一次的时候将会手动调用中断参数 v5.14.0
*/
public void executeTestTask(UserService userService, Integer i, Long l, Float f, Double d, String s, JobContext jobContext){
System.out.println(DateUtils.getTime() + " 任务开始了~~~ bean: " + userService + ", i: " + i
+ ", l: " + l + ", f: " + f + ", d: " + d + ", s: " + s + ", jobContext, " + jobContext);
jobContext.setInterruptedCallback(interruptedCallback);
for (int n = 1; n < 6; n++) {
System.out.println(Thread.currentThread().getName() + " interrupted: " + jobContext.isInterrupted() + ", num: " + n);
if (jobContext.isInterrupted()) { break; }
ThreadUtils.sleep(3000);
}
System.out.println(DateUtils.getTime() + " 任务结束了~~~");
}
/**
* 事务测试,若 Child 报错,则回滚