mirror of
https://github.com/dataease/dataease.git
synced 2026-06-17 13:01:44 +08:00
refactor(X-Pack): 数据同步任务的调度,统一使用Quartz,提交缺少的文件
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package io.dataease.job.schedule;
|
||||
|
||||
import io.dataease.license.config.XpackInteract;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.quartz.JobDataMap;
|
||||
import org.quartz.JobKey;
|
||||
import org.quartz.TriggerKey;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
@Component("deXpackDataSyncTaskExecutor")
|
||||
public class DeXpackDataSyncTaskExecutor {
|
||||
|
||||
private static final String SYNC_JOB_GROUP = "SYNC_TASK";
|
||||
|
||||
@Resource
|
||||
private ScheduleManager scheduleManager;
|
||||
|
||||
@XpackInteract(value = "dataSyncTaskExecutor", replace = true)
|
||||
public boolean execute(Map<String, Object> taskData) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@XpackInteract(value = "dataSyncTaskExecutor", replace = true)
|
||||
public void init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加或更新定时任务
|
||||
*
|
||||
* @param taskId 任务ID
|
||||
* @param cron cron表达式
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @param jobData 任务数据
|
||||
*/
|
||||
public void addOrUpdateSyncTask(String taskId, String cron, Long startTime, Long endTime, Map<String, Object> jobData) {
|
||||
JobKey jobKey = new JobKey(taskId, SYNC_JOB_GROUP);
|
||||
TriggerKey triggerKey = new TriggerKey(taskId, SYNC_JOB_GROUP);
|
||||
|
||||
// 准备JobDataMap
|
||||
JobDataMap jobDataMap = jobData != null ? new JobDataMap(jobData) : new JobDataMap();
|
||||
jobDataMap.put("taskId", taskId);
|
||||
// 调度任务
|
||||
jobDataMap.put("cron", cron);
|
||||
jobDataMap.put("startTime", startTime);
|
||||
jobDataMap.put("endTime", endTime);
|
||||
jobDataMap.put("executeOnce", Boolean.FALSE);
|
||||
scheduleManager.addOrUpdateCronJob(jobKey, triggerKey, DeXpackDataSyncTaskScheduleJob.class,
|
||||
cron, new Date(startTime), endTime != null ? new Date(endTime) : null, jobDataMap);
|
||||
}
|
||||
|
||||
public void removeSyncTask(String taskId) {
|
||||
JobKey jobKey = new JobKey(taskId, SYNC_JOB_GROUP);
|
||||
TriggerKey triggerKey = new TriggerKey(taskId, SYNC_JOB_GROUP);
|
||||
if (scheduleManager.exist(jobKey)) {
|
||||
scheduleManager.removeJob(jobKey, triggerKey);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package io.dataease.job.schedule;
|
||||
|
||||
import io.dataease.license.utils.LicenseUtil;
|
||||
import io.dataease.utils.CommonBeanFactory;
|
||||
import io.dataease.utils.LogUtil;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobDataMap;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class DeXpackDataSyncTaskScheduleJob implements Job {
|
||||
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
||||
JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap();
|
||||
DeXpackDataSyncTaskExecutor deTaskExecutor = CommonBeanFactory.getBean(DeXpackDataSyncTaskExecutor.class);
|
||||
assert deTaskExecutor != null;
|
||||
try {
|
||||
LicenseUtil.validate();
|
||||
deTaskExecutor.execute(jobDataMap);
|
||||
} catch (Exception e) {
|
||||
LogUtil.error(e.getMessage(), e.getCause());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user