diff --git a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/listener/execution/ProcessEndListener.java b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/listener/execution/ProcessEndListener.java index faf1e3a..726a72a 100644 --- a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/listener/execution/ProcessEndListener.java +++ b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/listener/execution/ProcessEndListener.java @@ -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()); } } diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/bpm/api/IBpmProcessEndCallback.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/bpm/api/IBpmProcessEndCallback.java new file mode 100644 index 0000000..9557ab2 --- /dev/null +++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/bpm/api/IBpmProcessEndCallback.java @@ -0,0 +1,14 @@ +package org.jeecg.common.bpm.api; + +/** + * 流程结束回调接口 + * 业务模块实现此接口以响应流程结束事件,BPM 模块通过接口注入解耦业务依赖 + */ +public interface IBpmProcessEndCallback { + + /** + * 流程实例结束时回调 + * @param processInstanceId Flowable 流程实例 ID + */ + void onProcessEnd(String processInstanceId); +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java index 30900bc..45ae72a 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java @@ -22,5 +22,4 @@ public interface ITaskTaskService extends IService { boolean deletePendingTask(String taskId); boolean updateTitleAndDeadline(String taskId, String title, String requireFinishDate); String getBusinessStatusByBusinessId(String businessId); - void syncBusinessBpmStatus(String processInstanceId); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java index ea4fdb7..62631e2 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java @@ -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 implements ITaskTaskService { +public class TaskTaskServiceImpl extends ServiceImpl implements ITaskTaskService, IBpmProcessEndCallback { @Autowired private BpmBaseExtApiImpl bpmBaseExtApiImpl; @Autowired @@ -364,4 +365,9 @@ public class TaskTaskServiceImpl extends ServiceImpl i log.info("【督办-同步业务状态】已更新主表状态, businessTablename: {}, businessId: {}, 新状态: {}", businessTablename, businessId, newStatus); } + + @Override + public void onProcessEnd(String processInstanceId) { + syncBusinessBpmStatus(processInstanceId); + } }