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:
+3
-7
@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.flowable.engine.delegate.ExecutionListener;
|
import org.flowable.engine.delegate.ExecutionListener;
|
||||||
|
import org.jeecg.common.bpm.api.IBpmProcessEndCallback;
|
||||||
import org.jeecg.common.util.SpringContextUtils;
|
import org.jeecg.common.util.SpringContextUtils;
|
||||||
import org.jeecg.common.util.oConvertUtils;
|
import org.jeecg.common.util.oConvertUtils;
|
||||||
import org.jeecg.modules.extbpm.process.common.WorkFlowGlobals;
|
import org.jeecg.modules.extbpm.process.common.WorkFlowGlobals;
|
||||||
@@ -159,13 +160,8 @@ public class ProcessEndListener implements ExecutionListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 综合重算主表 bpmStatus(一个事项可能有多个流程,需根据所有流程状态综合判断)
|
// 综合重算主表 bpmStatus(一个事项可能有多个流程,需根据所有流程状态综合判断)
|
||||||
try {
|
IBpmProcessEndCallback callback = SpringContextUtils.getBean(IBpmProcessEndCallback.class);
|
||||||
Object taskTaskService = SpringContextUtils.getBean("taskTaskServiceImpl");
|
callback.onProcessEnd(execution.getProcessInstanceId());
|
||||||
taskTaskService.getClass().getMethod("syncBusinessBpmStatus", String.class)
|
|
||||||
.invoke(taskTaskService, execution.getProcessInstanceId());
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("【督办-同步业务状态】综合重算主表状态失败, processInstanceId: {}", execution.getProcessInstanceId(), e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
package org.jeecg.common.bpm.api;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程结束回调接口
|
||||||
|
* 业务模块实现此接口以响应流程结束事件,BPM 模块通过接口注入解耦业务依赖
|
||||||
|
*/
|
||||||
|
public interface IBpmProcessEndCallback {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程实例结束时回调
|
||||||
|
* @param processInstanceId Flowable 流程实例 ID
|
||||||
|
*/
|
||||||
|
void onProcessEnd(String processInstanceId);
|
||||||
|
}
|
||||||
-1
@@ -22,5 +22,4 @@ public interface ITaskTaskService extends IService<TaskTask> {
|
|||||||
boolean deletePendingTask(String taskId);
|
boolean deletePendingTask(String taskId);
|
||||||
boolean updateTitleAndDeadline(String taskId, String title, String requireFinishDate);
|
boolean updateTitleAndDeadline(String taskId, String title, String requireFinishDate);
|
||||||
String getBusinessStatusByBusinessId(String businessId);
|
String getBusinessStatusByBusinessId(String businessId);
|
||||||
void syncBusinessBpmStatus(String processInstanceId);
|
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-1
@@ -11,6 +11,7 @@ import org.flowable.engine.HistoryService;
|
|||||||
import org.flowable.engine.RuntimeService;
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.runtime.ProcessInstance;
|
import org.flowable.engine.runtime.ProcessInstance;
|
||||||
import org.jeecg.common.api.vo.Result;
|
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.extbpm.process.exception.BpmException;
|
||||||
import org.jeecg.modules.taskapprovalopinion.entity.TaskApprovalOpinion;
|
import org.jeecg.modules.taskapprovalopinion.entity.TaskApprovalOpinion;
|
||||||
import org.jeecg.modules.taskapprovalopinion.service.ITaskApprovalOpinionService;
|
import org.jeecg.modules.taskapprovalopinion.service.ITaskApprovalOpinionService;
|
||||||
@@ -39,7 +40,7 @@ import java.util.*;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class TaskTaskServiceImpl extends ServiceImpl<TaskTaskMapper, TaskTask> implements ITaskTaskService {
|
public class TaskTaskServiceImpl extends ServiceImpl<TaskTaskMapper, TaskTask> implements ITaskTaskService, IBpmProcessEndCallback {
|
||||||
@Autowired
|
@Autowired
|
||||||
private BpmBaseExtApiImpl bpmBaseExtApiImpl;
|
private BpmBaseExtApiImpl bpmBaseExtApiImpl;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -364,4 +365,9 @@ public class TaskTaskServiceImpl extends ServiceImpl<TaskTaskMapper, TaskTask> i
|
|||||||
log.info("【督办-同步业务状态】已更新主表状态, businessTablename: {}, businessId: {}, 新状态: {}",
|
log.info("【督办-同步业务状态】已更新主表状态, businessTablename: {}, businessId: {}, 新状态: {}",
|
||||||
businessTablename, businessId, newStatus);
|
businessTablename, businessId, newStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProcessEnd(String processInstanceId) {
|
||||||
|
syncBusinessBpmStatus(processInstanceId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user