refactor(task): 移除任务步骤回调接口
- 删除 TaskStepCallback 接口定义 - 修改 TaskStepExecutor 接口 execute 方法签名,移除 callback 参数 - 更新所有实现类,去除对 callback 的调用 - 在 TaskJobBean 中直接调用 service 方法处理执行状态 - 为 TaskInstanceDetailService 添加 fastSuccess 方法 - 优化 fastSuccessWithInfo 方法默认执行信息逻辑 - 统一任务步骤执行流程的状态管理
This commit is contained in:
@@ -168,17 +168,9 @@ public class TaskJobBean extends QuartzJobBean implements InterruptableJob {
|
|||||||
String code = taskTemplateNodeVo.getCode();
|
String code = taskTemplateNodeVo.getCode();
|
||||||
try {
|
try {
|
||||||
TaskStepExecutor executor = CsSpringBeanHolder.getBean("taskStep" + getBeanAlias(code));
|
TaskStepExecutor executor = CsSpringBeanHolder.getBean("taskStep" + getBeanAlias(code));
|
||||||
executor.execute(codeIdMap.getOrDefault(code, null), dataMap, taskTemplateNodeVo, new TaskStepCallback() {
|
|
||||||
@Override
|
|
||||||
public void onStart() {
|
|
||||||
taskInstanceDetailService.fastStart(id, code, dataMap);
|
taskInstanceDetailService.fastStart(id, code, dataMap);
|
||||||
}
|
executor.execute(codeIdMap.getOrDefault(code, null), dataMap, taskTemplateNodeVo);
|
||||||
|
taskInstanceDetailService.fastSuccessWithInfo(id, code, null);
|
||||||
@Override
|
|
||||||
public void onFinish(String executeInfo) {
|
|
||||||
taskInstanceDetailService.fastSuccessWithInfo(id, code, executeInfo);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
taskInstanceDetailService.fastFailWithInfo(id, code, e.getMessage());
|
taskInstanceDetailService.fastFailWithInfo(id, code, e.getMessage());
|
||||||
throw new ServerException(e);
|
throw new ServerException(e);
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2021-2025 Odboy
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package cn.odboy.task.core;
|
|
||||||
|
|
||||||
public interface TaskStepCallback {
|
|
||||||
void onStart();
|
|
||||||
|
|
||||||
void onFinish(String executeInfo);
|
|
||||||
}
|
|
||||||
+1
-4
@@ -19,14 +19,11 @@ import cn.odboy.framework.exception.BadRequestException;
|
|||||||
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
|
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
|
||||||
import org.quartz.JobDataMap;
|
import org.quartz.JobDataMap;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
public interface TaskStepExecutor {
|
public interface TaskStepExecutor {
|
||||||
/**
|
/**
|
||||||
* @param instanceDetailId 任务实例明细id
|
* @param instanceDetailId 任务实例明细id
|
||||||
* @param jobDataMap 执行参数
|
* @param jobDataMap 执行参数
|
||||||
* @param taskTemplateNode 任务节点信息
|
* @param taskTemplateNode 任务节点信息
|
||||||
* @param callback 执行成功回调
|
|
||||||
*/
|
*/
|
||||||
void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode, @NotNull TaskStepCallback callback) throws BadRequestException;
|
void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode) throws BadRequestException;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-4
@@ -17,7 +17,6 @@ package cn.odboy.task.core.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.thread.ThreadUtil;
|
import cn.hutool.core.thread.ThreadUtil;
|
||||||
import cn.odboy.framework.exception.BadRequestException;
|
import cn.odboy.framework.exception.BadRequestException;
|
||||||
import cn.odboy.task.core.TaskStepCallback;
|
|
||||||
import cn.odboy.task.core.TaskStepExecutor;
|
import cn.odboy.task.core.TaskStepExecutor;
|
||||||
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
|
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -29,9 +28,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class TaskStepNodeBuildJava implements TaskStepExecutor {
|
public class TaskStepNodeBuildJava implements TaskStepExecutor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode, TaskStepCallback callback) throws BadRequestException {
|
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode) throws BadRequestException {
|
||||||
callback.onStart();
|
|
||||||
ThreadUtil.sleep(2000);
|
ThreadUtil.sleep(2000);
|
||||||
callback.onFinish("执行成功");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-4
@@ -17,7 +17,6 @@ package cn.odboy.task.core.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.thread.ThreadUtil;
|
import cn.hutool.core.thread.ThreadUtil;
|
||||||
import cn.odboy.framework.exception.BadRequestException;
|
import cn.odboy.framework.exception.BadRequestException;
|
||||||
import cn.odboy.task.core.TaskStepCallback;
|
|
||||||
import cn.odboy.task.core.TaskStepExecutor;
|
import cn.odboy.task.core.TaskStepExecutor;
|
||||||
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
|
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -29,9 +28,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class TaskStepNodeDeployJava implements TaskStepExecutor {
|
public class TaskStepNodeDeployJava implements TaskStepExecutor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode, TaskStepCallback callback) throws BadRequestException {
|
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode) throws BadRequestException {
|
||||||
callback.onStart();
|
|
||||||
ThreadUtil.sleep(5000);
|
ThreadUtil.sleep(5000);
|
||||||
callback.onFinish("执行成功");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-7
@@ -16,7 +16,6 @@
|
|||||||
package cn.odboy.task.core.impl;
|
package cn.odboy.task.core.impl;
|
||||||
|
|
||||||
import cn.odboy.framework.exception.BadRequestException;
|
import cn.odboy.framework.exception.BadRequestException;
|
||||||
import cn.odboy.task.core.TaskStepCallback;
|
|
||||||
import cn.odboy.task.core.TaskStepExecutor;
|
import cn.odboy.task.core.TaskStepExecutor;
|
||||||
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
|
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
|
||||||
import cn.odboy.task.service.TaskInstanceStepDetailService;
|
import cn.odboy.task.service.TaskInstanceStepDetailService;
|
||||||
@@ -29,14 +28,12 @@ import org.springframework.stereotype.Component;
|
|||||||
@Component
|
@Component
|
||||||
public class TaskStepNodeInit implements TaskStepExecutor {
|
public class TaskStepNodeInit implements TaskStepExecutor {
|
||||||
@Autowired
|
@Autowired
|
||||||
private TaskInstanceStepDetailService service;
|
private TaskInstanceStepDetailService stepDetailService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode, TaskStepCallback callback) throws BadRequestException {
|
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode) throws BadRequestException {
|
||||||
callback.onStart();
|
stepDetailService.success(instanceDetailId, "开始初始化");
|
||||||
service.success(instanceDetailId, "开始初始化");
|
stepDetailService.success(instanceDetailId, "初始化完毕后,放入了一些参数");
|
||||||
service.success(instanceDetailId, "初始化完毕后,放入了一些参数");
|
|
||||||
jobDataMap.put("ExcuseMe", "Hello World!");
|
jobDataMap.put("ExcuseMe", "Hello World!");
|
||||||
callback.onFinish("执行成功");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-4
@@ -17,7 +17,6 @@ package cn.odboy.task.core.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.thread.ThreadUtil;
|
import cn.hutool.core.thread.ThreadUtil;
|
||||||
import cn.odboy.framework.exception.BadRequestException;
|
import cn.odboy.framework.exception.BadRequestException;
|
||||||
import cn.odboy.task.core.TaskStepCallback;
|
|
||||||
import cn.odboy.task.core.TaskStepExecutor;
|
import cn.odboy.task.core.TaskStepExecutor;
|
||||||
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
|
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
|
||||||
import cn.odboy.task.service.TaskInstanceStepDetailService;
|
import cn.odboy.task.service.TaskInstanceStepDetailService;
|
||||||
@@ -33,10 +32,8 @@ public class TaskStepNodeMergeBranch implements TaskStepExecutor {
|
|||||||
private TaskInstanceStepDetailService service;
|
private TaskInstanceStepDetailService service;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode, TaskStepCallback callback) throws BadRequestException {
|
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode) throws BadRequestException {
|
||||||
callback.onStart();
|
|
||||||
ThreadUtil.sleep(3000);
|
ThreadUtil.sleep(3000);
|
||||||
service.fail(instanceDetailId, "执行失败测试");
|
service.fail(instanceDetailId, "执行失败测试");
|
||||||
callback.onFinish("执行成功");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -32,6 +32,8 @@ import java.util.List;
|
|||||||
public interface TaskInstanceDetailService extends IService<TaskInstanceDetailTb> {
|
public interface TaskInstanceDetailService extends IService<TaskInstanceDetailTb> {
|
||||||
void fastFailWithInfo(Long instanceId, String code, String message);
|
void fastFailWithInfo(Long instanceId, String code, String message);
|
||||||
|
|
||||||
|
void fastSuccess(Long instanceId, String code);
|
||||||
|
|
||||||
void fastSuccessWithInfo(Long instanceId, String code, String executeInfo);
|
void fastSuccessWithInfo(Long instanceId, String code, String executeInfo);
|
||||||
|
|
||||||
void fastStart(Long instanceId, String code, JobDataMap dataMap);
|
void fastStart(Long instanceId, String code, JobDataMap dataMap);
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ public interface TaskInstanceStepDetailService extends IService<TaskInstanceStep
|
|||||||
/**
|
/**
|
||||||
* 根据明细ID删除步骤明细
|
* 根据明细ID删除步骤明细
|
||||||
*
|
*
|
||||||
* @param instanceDetailIds
|
* @param instanceDetailIds 任务实例明细id集合
|
||||||
*/
|
*/
|
||||||
void removeByInstanceDetailIds(List<Long> instanceDetailIds);
|
void removeByInstanceDetailIds(List<Long> instanceDetailIds);
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-1
@@ -48,11 +48,20 @@ public class TaskInstanceDetailServiceImpl extends ServiceImpl<TaskInstanceDetai
|
|||||||
lambdaUpdate().eq(TaskInstanceDetailTb::getInstanceId, instanceId).eq(TaskInstanceDetailTb::getBizCode, code).update(updRecord);
|
lambdaUpdate().eq(TaskInstanceDetailTb::getInstanceId, instanceId).eq(TaskInstanceDetailTb::getBizCode, code).update(updRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fastSuccess(Long instanceId, String code) {
|
||||||
|
TaskInstanceDetailTb updRecord = new TaskInstanceDetailTb();
|
||||||
|
updRecord.setFinishTime(new Date());
|
||||||
|
updRecord.setExecuteInfo("执行成功");
|
||||||
|
updRecord.setExecuteStatus(TaskStatusEnum.Success.getCode());
|
||||||
|
lambdaUpdate().eq(TaskInstanceDetailTb::getInstanceId, instanceId).eq(TaskInstanceDetailTb::getBizCode, code).update(updRecord);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fastSuccessWithInfo(Long instanceId, String code, String executeInfo) {
|
public void fastSuccessWithInfo(Long instanceId, String code, String executeInfo) {
|
||||||
TaskInstanceDetailTb updRecord = new TaskInstanceDetailTb();
|
TaskInstanceDetailTb updRecord = new TaskInstanceDetailTb();
|
||||||
updRecord.setFinishTime(new Date());
|
updRecord.setFinishTime(new Date());
|
||||||
updRecord.setExecuteInfo(executeInfo);
|
updRecord.setExecuteInfo(executeInfo == null ? "执行成功" : executeInfo);
|
||||||
updRecord.setExecuteStatus(TaskStatusEnum.Success.getCode());
|
updRecord.setExecuteStatus(TaskStatusEnum.Success.getCode());
|
||||||
lambdaUpdate().eq(TaskInstanceDetailTb::getInstanceId, instanceId).eq(TaskInstanceDetailTb::getBizCode, code).update(updRecord);
|
lambdaUpdate().eq(TaskInstanceDetailTb::getInstanceId, instanceId).eq(TaskInstanceDetailTb::getBizCode, code).update(updRecord);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user