refactor(task): 移除任务步骤回调接口

- 删除 TaskStepCallback 接口定义
- 修改 TaskStepExecutor 接口 execute 方法签名,移除 callback 参数
- 更新所有实现类,去除对 callback 的调用
- 在 TaskJobBean 中直接调用 service 方法处理执行状态
- 为 TaskInstanceDetailService 添加 fastSuccess 方法
- 优化 fastSuccessWithInfo 方法默认执行信息逻辑
- 统一任务步骤执行流程的状态管理
This commit is contained in:
2025-10-27 13:51:28 +08:00
parent f50cb15123
commit f08f1828c5
10 changed files with 24 additions and 58 deletions
@@ -168,17 +168,9 @@ public class TaskJobBean extends QuartzJobBean implements InterruptableJob {
String code = taskTemplateNodeVo.getCode();
try {
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);
}
@Override
public void onFinish(String executeInfo) {
taskInstanceDetailService.fastSuccessWithInfo(id, code, executeInfo);
}
});
executor.execute(codeIdMap.getOrDefault(code, null), dataMap, taskTemplateNodeVo);
taskInstanceDetailService.fastSuccessWithInfo(id, code, null);
} catch (Exception e) {
taskInstanceDetailService.fastFailWithInfo(id, code, e.getMessage());
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);
}
@@ -19,14 +19,11 @@ import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
import org.quartz.JobDataMap;
import javax.validation.constraints.NotNull;
public interface TaskStepExecutor {
/**
* @param instanceDetailId 任务实例明细id
* @param jobDataMap 执行参数
* @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;
}
@@ -17,7 +17,6 @@ package cn.odboy.task.core.impl;
import cn.hutool.core.thread.ThreadUtil;
import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.task.core.TaskStepCallback;
import cn.odboy.task.core.TaskStepExecutor;
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
import lombok.extern.slf4j.Slf4j;
@@ -29,9 +28,7 @@ import org.springframework.stereotype.Component;
public class TaskStepNodeBuildJava implements TaskStepExecutor {
@Override
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode, TaskStepCallback callback) throws BadRequestException {
callback.onStart();
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode) throws BadRequestException {
ThreadUtil.sleep(2000);
callback.onFinish("执行成功");
}
}
@@ -17,7 +17,6 @@ package cn.odboy.task.core.impl;
import cn.hutool.core.thread.ThreadUtil;
import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.task.core.TaskStepCallback;
import cn.odboy.task.core.TaskStepExecutor;
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
import lombok.extern.slf4j.Slf4j;
@@ -29,9 +28,7 @@ import org.springframework.stereotype.Component;
public class TaskStepNodeDeployJava implements TaskStepExecutor {
@Override
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode, TaskStepCallback callback) throws BadRequestException {
callback.onStart();
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode) throws BadRequestException {
ThreadUtil.sleep(5000);
callback.onFinish("执行成功");
}
}
@@ -16,7 +16,6 @@
package cn.odboy.task.core.impl;
import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.task.core.TaskStepCallback;
import cn.odboy.task.core.TaskStepExecutor;
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
import cn.odboy.task.service.TaskInstanceStepDetailService;
@@ -29,14 +28,12 @@ import org.springframework.stereotype.Component;
@Component
public class TaskStepNodeInit implements TaskStepExecutor {
@Autowired
private TaskInstanceStepDetailService service;
private TaskInstanceStepDetailService stepDetailService;
@Override
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode, TaskStepCallback callback) throws BadRequestException {
callback.onStart();
service.success(instanceDetailId, "开始初始化");
service.success(instanceDetailId, "初始化完毕后,放入了一些参数");
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode) throws BadRequestException {
stepDetailService.success(instanceDetailId, "开始初始化");
stepDetailService.success(instanceDetailId, "初始化完毕后,放入了一些参数");
jobDataMap.put("ExcuseMe", "Hello World!");
callback.onFinish("执行成功");
}
}
@@ -17,7 +17,6 @@ package cn.odboy.task.core.impl;
import cn.hutool.core.thread.ThreadUtil;
import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.task.core.TaskStepCallback;
import cn.odboy.task.core.TaskStepExecutor;
import cn.odboy.task.dal.model.TaskTemplateNodeVo;
import cn.odboy.task.service.TaskInstanceStepDetailService;
@@ -33,10 +32,8 @@ public class TaskStepNodeMergeBranch implements TaskStepExecutor {
private TaskInstanceStepDetailService service;
@Override
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode, TaskStepCallback callback) throws BadRequestException {
callback.onStart();
public void execute(Long instanceDetailId, JobDataMap jobDataMap, TaskTemplateNodeVo taskTemplateNode) throws BadRequestException {
ThreadUtil.sleep(3000);
service.fail(instanceDetailId, "执行失败测试");
callback.onFinish("执行成功");
}
}
@@ -32,6 +32,8 @@ import java.util.List;
public interface TaskInstanceDetailService extends IService<TaskInstanceDetailTb> {
void fastFailWithInfo(Long instanceId, String code, String message);
void fastSuccess(Long instanceId, String code);
void fastSuccessWithInfo(Long instanceId, String code, String executeInfo);
void fastStart(Long instanceId, String code, JobDataMap dataMap);
@@ -48,7 +48,7 @@ public interface TaskInstanceStepDetailService extends IService<TaskInstanceStep
/**
* 根据明细ID删除步骤明细
*
* @param instanceDetailIds
* @param instanceDetailIds 任务实例明细id集合
*/
void removeByInstanceDetailIds(List<Long> instanceDetailIds);
}
@@ -48,11 +48,20 @@ public class TaskInstanceDetailServiceImpl extends ServiceImpl<TaskInstanceDetai
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
public void fastSuccessWithInfo(Long instanceId, String code, String executeInfo) {
TaskInstanceDetailTb updRecord = new TaskInstanceDetailTb();
updRecord.setFinishTime(new Date());
updRecord.setExecuteInfo(executeInfo);
updRecord.setExecuteInfo(executeInfo == null ? "执行成功" : executeInfo);
updRecord.setExecuteStatus(TaskStatusEnum.Success.getCode());
lambdaUpdate().eq(TaskInstanceDetailTb::getInstanceId, instanceId).eq(TaskInstanceDetailTb::getBizCode, code).update(updRecord);
}