refactor(bpm): ProcessEndListener去除反射调用,改用接口解耦

- 新增 IBpmProcessEndCallback 接口,定义在 system-local-api 层
- TaskTaskServiceImpl 实现该接口,委托给内部 syncBusinessBpmStatus
- ProcessEndListener 通过 getBean(接口) 替代反射 invoke,编译期可检查
- 去除无效的 try-catch,异常交由 Flowable 统一处理
- 从 ITaskTaskService 移除仅反射使用的 syncBusinessBpmStatus

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
wsm
2026-07-09 14:52:55 +08:00
co-authored by Claude Opus 4.7
parent 4bb9e82bad
commit ce382762f2
4 changed files with 24 additions and 9 deletions
@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.ExecutionListener;
import org.jeecg.common.bpm.api.IBpmProcessEndCallback;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.extbpm.process.common.WorkFlowGlobals;
@@ -159,13 +160,8 @@ public class ProcessEndListener implements ExecutionListener{
}
// 综合重算主表 bpmStatus(一个事项可能有多个流程,需根据所有流程状态综合判断)
try {
Object taskTaskService = SpringContextUtils.getBean("taskTaskServiceImpl");
taskTaskService.getClass().getMethod("syncBusinessBpmStatus", String.class)
.invoke(taskTaskService, execution.getProcessInstanceId());
} catch (Exception e) {
log.error("【督办-同步业务状态】综合重算主表状态失败, processInstanceId: {}", execution.getProcessInstanceId(), e);
}
IBpmProcessEndCallback callback = SpringContextUtils.getBean(IBpmProcessEndCallback.class);
callback.onProcessEnd(execution.getProcessInstanceId());
}
}