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
@@ -0,0 +1,14 @@
package org.jeecg.common.bpm.api;
/**
* 流程结束回调接口
* 业务模块实现此接口以响应流程结束事件,BPM 模块通过接口注入解耦业务依赖
*/
public interface IBpmProcessEndCallback {
/**
* 流程实例结束时回调
* @param processInstanceId Flowable 流程实例 ID
*/
void onProcessEnd(String processInstanceId);
}
@@ -22,5 +22,4 @@ public interface ITaskTaskService extends IService<TaskTask> {
boolean deletePendingTask(String taskId);
boolean updateTitleAndDeadline(String taskId, String title, String requireFinishDate);
String getBusinessStatusByBusinessId(String businessId);
void syncBusinessBpmStatus(String processInstanceId);
}
@@ -11,6 +11,7 @@ import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.runtime.ProcessInstance;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.bpm.api.IBpmProcessEndCallback;
import org.jeecg.modules.extbpm.process.exception.BpmException;
import org.jeecg.modules.taskapprovalopinion.entity.TaskApprovalOpinion;
import org.jeecg.modules.taskapprovalopinion.service.ITaskApprovalOpinionService;
@@ -39,7 +40,7 @@ import java.util.*;
*/
@Slf4j
@Service
public class TaskTaskServiceImpl extends ServiceImpl<TaskTaskMapper, TaskTask> implements ITaskTaskService {
public class TaskTaskServiceImpl extends ServiceImpl<TaskTaskMapper, TaskTask> implements ITaskTaskService, IBpmProcessEndCallback {
@Autowired
private BpmBaseExtApiImpl bpmBaseExtApiImpl;
@Autowired
@@ -364,4 +365,9 @@ public class TaskTaskServiceImpl extends ServiceImpl<TaskTaskMapper, TaskTask> i
log.info("【督办-同步业务状态】已更新主表状态, businessTablename: {}, businessId: {}, 新状态: {}",
businessTablename, businessId, newStatus);
}
@Override
public void onProcessEnd(String processInstanceId) {
syncBusinessBpmStatus(processInstanceId);
}
}