From 0b04ac79d0fec886d15683e84e76b2e811814054 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: 星期日, 02 六月 2024 14:42:05 +0800 Subject: [PATCH] update 优化调整自定义监听 --- ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java | 42 ++++++++ /dev/null | 23 ---- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java | 19 +-- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java | 27 +++++ ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java | 49 +++++++++ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java | 49 +++++++++ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java | 40 +++---- 7 files changed, 191 insertions(+), 58 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java new file mode 100644 index 0000000..4463423 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java @@ -0,0 +1,49 @@ +package org.dromara.common.core.domain.event; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 鎬讳綋娴佺▼鐩戝惉 + * + * @author may + */ + +@Data +public class ProcessEvent implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + + + /** + * 娴佺▼瀹氫箟key + */ + private String key; + + /** + * 涓氬姟id + */ + private String businessKey; + + /** + * 鐘舵�� + */ + private String status; + + /** + * 褰撲负true鏃朵负鐢宠浜鸿妭鐐瑰姙鐞� + */ + private boolean submit; + + /** + * 璇锋眰浣� + */ + private HttpServletRequest request; + + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java new file mode 100644 index 0000000..e450840 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java @@ -0,0 +1,42 @@ +package org.dromara.common.core.domain.event; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 娴佺▼鍔炵悊鐩戝惉 + * + * @author may + */ + +@Data +public class ProcessTaskEvent implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + + /** + * 娴佺▼瀹氫箟key涓庢祦绋嬭妭鐐规爣璇�(鎷兼帴鏂瑰紡锛氭祦绋嬪畾涔塳ey_娴佺▼鑺傜偣) + */ + private String keyNode; + + /** + * 浠诲姟id + */ + private String taskId; + + /** + * 涓氬姟id + */ + private String businessKey; + + /** + * 璇锋眰浣� + */ + private HttpServletRequest request; + +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/annotation/FlowListenerAnnotation.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/annotation/FlowListenerAnnotation.java deleted file mode 100644 index 5ea262d..0000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/annotation/FlowListenerAnnotation.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.dromara.workflow.annotation; - - -import java.lang.annotation.*; - -/** - * 娴佺▼浠诲姟鐩戝惉娉ㄨВ - * - * @author may - * @date 2023-12-27 - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -public @interface FlowListenerAnnotation { - - /** - * 娴佺▼瀹氫箟key - */ - String processDefinitionKey(); - - /** - * 鑺傜偣id - */ - String taskDefId() default ""; -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java new file mode 100644 index 0000000..92314ac --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java @@ -0,0 +1,49 @@ +package org.dromara.workflow.flowable.handler; + +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; +import org.dromara.common.core.utils.ServletUtils; +import org.dromara.common.core.utils.SpringUtils; +import org.springframework.stereotype.Component; + +/** + * 娴佺▼鐩戝惉鏈嶅姟 + * + * @author may + * @date 2024-06-02 + */ +@Component +public class FlowProcessEventHandler { + + /** + * @param key 娴佺▼key + * @param businessKey 涓氬姟id + * @param status 鐘舵�� + * @param submit 褰撲负true鏃朵负鐢宠浜鸿妭鐐瑰姙鐞� + */ + public void processHandler(String key, String businessKey, String status, boolean submit) { + ProcessEvent processEvent = new ProcessEvent(); + processEvent.setKey(key); + processEvent.setBusinessKey(businessKey); + processEvent.setStatus(status); + processEvent.setSubmit(submit); + processEvent.setRequest(ServletUtils.getRequest()); + SpringUtils.context().publishEvent(processEvent); + } + + /** + * 鎵ц鍔炵悊浠诲姟鐩戝惉 + * + * @param keyNode 娴佺▼瀹氫箟key涓庢祦绋嬭妭鐐规爣璇�(鎷兼帴鏂瑰紡锛氭祦绋嬪畾涔塳ey_娴佺▼鑺傜偣) + * @param taskId 浠诲姟id + * @param businessKey 涓氬姟id + */ + public void processTaskHandler(String keyNode, String taskId, String businessKey) { + ProcessTaskEvent processTaskEvent = new ProcessTaskEvent(); + processTaskEvent.setKeyNode(keyNode); + processTaskEvent.setTaskId(taskId); + processTaskEvent.setBusinessKey(businessKey); + processTaskEvent.setRequest(ServletUtils.getRequest()); + SpringUtils.context().publishEvent(processTaskEvent); + } +} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowEventStrategy.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowEventStrategy.java deleted file mode 100644 index 9da5776..0000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowEventStrategy.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.dromara.workflow.flowable.strategy; - -import org.dromara.common.core.utils.StringUtils; -import org.dromara.workflow.annotation.FlowListenerAnnotation; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -/** - * 娴佺▼浠诲姟鐩戝惉绛栫暐 - * - * @author may - * @date 2023-12-27 - */ -@Component -public class FlowEventStrategy implements BeanPostProcessor { - - private final Map<String, FlowTaskEventHandler> flowTaskEventHandlers = new HashMap<>(); - private final Map<String, FlowProcessEventHandler> flowProcessEventHandlers = new HashMap<>(); - - @Override - public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - if (bean instanceof FlowTaskEventHandler) { - FlowListenerAnnotation annotation = bean.getClass().getAnnotation(FlowListenerAnnotation.class); - if (null != annotation) { - if (StringUtils.isNotBlank(annotation.processDefinitionKey()) && StringUtils.isNotBlank(annotation.taskDefId())) { - String id = annotation.processDefinitionKey() + "_" + annotation.taskDefId(); - if (!flowTaskEventHandlers.containsKey(id)) { - flowTaskEventHandlers.put(id, (FlowTaskEventHandler) bean); - } - } - } - } - if (bean instanceof FlowProcessEventHandler) { - FlowListenerAnnotation annotation = bean.getClass().getAnnotation(FlowListenerAnnotation.class); - if (null != annotation) { - if (StringUtils.isNotBlank(annotation.processDefinitionKey()) && StringUtils.isBlank(annotation.taskDefId())) { - if (!flowProcessEventHandlers.containsKey(annotation.processDefinitionKey())) { - flowProcessEventHandlers.put(annotation.processDefinitionKey(), (FlowProcessEventHandler) bean); - } - } - } - } - return BeanPostProcessor.super.postProcessBeforeInitialization(bean, beanName); - } - - /** - * 鑾峰彇鍙墽琛宐ean - * - * @param key key - */ - public FlowTaskEventHandler getTaskHandler(String key) { - if (!flowTaskEventHandlers.containsKey(key)) { - return null; - } - return flowTaskEventHandlers.get(key); - } - - /** - * 鑾峰彇鍙墽琛宐ean - * - * @param key key - */ - public FlowProcessEventHandler getProcessHandler(String key) { - if (!flowProcessEventHandlers.containsKey(key)) { - return null; - } - return flowProcessEventHandlers.get(key); - } -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java deleted file mode 100644 index 929e7d5..0000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowProcessEventHandler.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.dromara.workflow.flowable.strategy; - - -/** - * 鎬讳綋娴佺▼鐩戝惉(渚嬪: 鎾ら攢 鎻愪氦 閫�鍥� 绛�) - * - * @author may - * @date 2023-12-27 - */ -public interface FlowProcessEventHandler { - - /** - * 鎵ц鍔炵悊浠诲姟鐩戝惉 - * - * @param businessKey 涓氬姟id - * @param status 鐘舵�� - * @param submit 褰撲负true鏃朵负鐢宠浜鸿妭鐐瑰姙鐞� - */ - void handleProcess(String businessKey, String status, boolean submit); -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java deleted file mode 100644 index d2b06a7..0000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/strategy/FlowTaskEventHandler.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.dromara.workflow.flowable.strategy; - - -/** - * 娴佺▼浠诲姟鐩戝惉(渚嬪: 鑺傜偣鐨勫鎵圭瓑) - * - * @author may - * @date 2023-12-27 - */ -public interface FlowTaskEventHandler { - - /** - * 鎵ц鍔炵悊浠诲姟鐩戝惉 - * - * @param taskId 浠诲姟ID - * @param businessKey 涓氬姟id - */ - void handleTask(String taskId, String businessKey); -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomProcessHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomProcessHandler.java deleted file mode 100644 index 29886d8..0000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomProcessHandler.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.dromara.workflow.listener; - -import lombok.extern.slf4j.Slf4j; -import org.dromara.workflow.annotation.FlowListenerAnnotation; -import org.dromara.workflow.flowable.strategy.FlowProcessEventHandler; -import org.springframework.stereotype.Component; - -/** - * 鑷畾涔夌洃鍚祴璇� - * - * @author may - * @date 2023-12-27 - */ -@Slf4j -@Component -@FlowListenerAnnotation(processDefinitionKey = "leave1") -public class TestCustomProcessHandler implements FlowProcessEventHandler { - - - /** - * 鎵ц鍔炵悊浠诲姟鐩戝惉 - * - * @param businessKey 涓氬姟id - * @param status 鐘舵�� - * @param submit 褰撲负true鏃朵负鐢宠浜鸿妭鐐瑰姙鐞� - */ - @Override - public void handleProcess(String businessKey, String status, boolean submit) { - log.info("涓氬姟ID:" + businessKey + ",鐘舵��:" + status); - } -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomTaskHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomTaskHandler.java deleted file mode 100644 index d85286d..0000000 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/TestCustomTaskHandler.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.dromara.workflow.listener; - -import lombok.extern.slf4j.Slf4j; -import org.dromara.workflow.annotation.FlowListenerAnnotation; -import org.dromara.workflow.flowable.strategy.FlowTaskEventHandler; -import org.springframework.stereotype.Component; - -/** - * 鑷畾涔夌洃鍚祴璇� - * - * @author may - * @date 2023-12-27 - */ -@Slf4j -@Component -@FlowListenerAnnotation(processDefinitionKey = "leave1", taskDefId = "Activity_14633hx") -public class TestCustomTaskHandler implements FlowTaskEventHandler { - - @Override - public void handleTask(String taskId, String businessKey) { - log.info("浠诲姟ID:" + taskId + ",涓氬姟ID:" + businessKey); - } -} diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index f7a3db8..9937f7a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -26,8 +26,7 @@ import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator; import org.dromara.workflow.flowable.cmd.DeleteExecutionCmd; import org.dromara.workflow.flowable.cmd.ExecutionChildByExecutionIdCmd; -import org.dromara.workflow.flowable.strategy.FlowEventStrategy; -import org.dromara.workflow.flowable.strategy.FlowProcessEventHandler; +import org.dromara.workflow.flowable.handler.FlowProcessEventHandler; import org.dromara.workflow.service.IActHiProcinstService; import org.dromara.workflow.service.IActProcessInstanceService; import org.dromara.workflow.service.IWfNodeConfigService; @@ -75,9 +74,9 @@ private final TaskService taskService; private final IActHiProcinstService actHiProcinstService; private final ManagementService managementService; - private final FlowEventStrategy flowEventStrategy; private final IWfTaskBackNodeService wfTaskBackNodeService; private final IWfNodeConfigService wfNodeConfigService; + private final FlowProcessEventHandler flowProcessEventHandler; @Value("${flowable.activity-font-name}") private String activityFontName; @@ -460,10 +459,9 @@ BusinessStatusEnum.checkInvalidStatus(historicProcessInstance.getBusinessStatus()); runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.INVALID.getStatus()); runtimeService.deleteProcessInstance(processInstanceId, deleteReason); - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(historicProcessInstance.getProcessDefinitionKey()); - if (processHandler != null) { - processHandler.handleProcess(historicProcessInstance.getBusinessKey(), BusinessStatusEnum.INVALID.getStatus(), false); - } + //娴佺▼浣滃簾鐩戝惉 + flowProcessEventHandler.processHandler(historicProcessInstance.getProcessDefinitionKey(), + historicProcessInstance.getBusinessKey(), BusinessStatusEnum.INVALID.getStatus(), false); return true; } catch (Exception e) { e.printStackTrace(); @@ -570,10 +568,9 @@ managementService.executeCommand(deleteExecutionCmd); } runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.CANCEL.getStatus()); - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey()); - if (processHandler != null) { - processHandler.handleProcess(processInstance.getBusinessKey(), BusinessStatusEnum.CANCEL.getStatus(), false); - } + //娴佺▼浣滃簾鐩戝惉 + flowProcessEventHandler.processHandler(processInstance.getProcessDefinitionKey(), + processInstance.getBusinessKey(), BusinessStatusEnum.CANCEL.getStatus(), false); return true; } catch (Exception e) { e.printStackTrace(); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index 84a3749..5e9a050 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -9,8 +9,10 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; +import org.dromara.common.core.domain.event.ProcessTaskEvent; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.UserService; +import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -25,9 +27,7 @@ import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.*; import org.dromara.workflow.flowable.cmd.*; -import org.dromara.workflow.flowable.strategy.FlowEventStrategy; -import org.dromara.workflow.flowable.strategy.FlowProcessEventHandler; -import org.dromara.workflow.flowable.strategy.FlowTaskEventHandler; +import org.dromara.workflow.flowable.handler.FlowProcessEventHandler; import org.dromara.workflow.mapper.ActHiTaskinstMapper; import org.dromara.workflow.mapper.ActTaskMapper; import org.dromara.workflow.service.IActTaskService; @@ -75,13 +75,13 @@ private final HistoryService historyService; private final IdentityService identityService; private final ManagementService managementService; - private final FlowEventStrategy flowEventStrategy; private final ActTaskMapper actTaskMapper; private final IWfTaskBackNodeService wfTaskBackNodeService; private final ActHiTaskinstMapper actHiTaskinstMapper; private final IWfNodeConfigService wfNodeConfigService; private final IWfDefinitionConfigService wfDefinitionConfigService; private final UserService userService; + private final FlowProcessEventHandler flowProcessEventHandler; /** * 鍚姩浠诲姟 @@ -179,19 +179,15 @@ //闄勪欢涓婁紶 AttachmentCmd attachmentCmd = new AttachmentCmd(completeTaskBo.getFileId(), task.getId(), task.getProcessInstanceId()); managementService.executeCommand(attachmentCmd); - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey()); String businessStatus = WorkflowUtils.getBusinessStatus(processInstance.getBusinessKey()); + //娴佺▼鎻愪氦鐩戝惉 if (BusinessStatusEnum.DRAFT.getStatus().equals(businessStatus) || BusinessStatusEnum.BACK.getStatus().equals(businessStatus) || BusinessStatusEnum.CANCEL.getStatus().equals(businessStatus)) { - if (processHandler != null) { - processHandler.handleProcess(processInstance.getBusinessKey(), businessStatus, true); - } + flowProcessEventHandler.processHandler(processInstance.getProcessDefinitionKey(), processInstance.getBusinessKey(), businessStatus, true); } runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.WAITING.getStatus()); - String key = processInstance.getProcessDefinitionKey() + "_" + task.getTaskDefinitionKey(); - FlowTaskEventHandler taskHandler = flowEventStrategy.getTaskHandler(key); - if (taskHandler != null) { - taskHandler.handleTask(task.getId(), processInstance.getBusinessKey()); - } + //鍔炵悊鐩戝惉 + String keyNode = processInstance.getProcessDefinitionKey() + "_" + task.getTaskDefinitionKey(); + flowProcessEventHandler.processTaskHandler(keyNode, task.getId(), processInstance.getBusinessKey()); //鍔炵悊鎰忚 taskService.addComment(completeTaskBo.getTaskId(), task.getProcessInstanceId(), TaskStatusEnum.PASS.getStatus(), StringUtils.isBlank(completeTaskBo.getMessage()) ? "鍚屾剰" : completeTaskBo.getMessage()); //鍔炵悊浠诲姟 @@ -207,9 +203,8 @@ if (pi == null) { UpdateBusinessStatusCmd updateBusinessStatusCmd = new UpdateBusinessStatusCmd(task.getProcessInstanceId(), BusinessStatusEnum.FINISH.getStatus()); managementService.executeCommand(updateBusinessStatusCmd); - if (processHandler != null) { - processHandler.handleProcess(processInstance.getBusinessKey(), BusinessStatusEnum.FINISH.getStatus(), false); - } + flowProcessEventHandler.processHandler(processInstance.getProcessDefinitionKey(), processInstance.getBusinessKey(), + BusinessStatusEnum.FINISH.getStatus(), false); } else { List<Task> list = QueryUtils.taskQuery(task.getProcessInstanceId()).list(); for (Task t : list) { @@ -520,10 +515,9 @@ runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.TERMINATION.getStatus()); runtimeService.deleteProcessInstance(task.getProcessInstanceId(), StrUtil.EMPTY); } - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(historicProcessInstance.getProcessDefinitionKey()); - if (processHandler != null) { - processHandler.handleProcess(historicProcessInstance.getBusinessKey(), BusinessStatusEnum.TERMINATION.getStatus(), false); - } + //娴佺▼缁堟鐩戝惉 + flowProcessEventHandler.processHandler(historicProcessInstance.getProcessDefinitionKey(), + historicProcessInstance.getBusinessKey(), BusinessStatusEnum.TERMINATION.getStatus(), false); return true; } catch (Exception e) { throw new ServiceException(e.getMessage()); @@ -721,10 +715,8 @@ WfTaskBackNode wfTaskBackNode = wfTaskBackNodeService.getListByInstanceIdAndNodeId(task.getProcessInstanceId(), backProcessBo.getTargetActivityId()); if (ObjectUtil.isNotNull(wfTaskBackNode) && wfTaskBackNode.getOrderNo() == 0) { runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.BACK.getStatus()); - FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey()); - if (processHandler != null) { - processHandler.handleProcess(processInstance.getBusinessKey(), BusinessStatusEnum.BACK.getStatus(), false); - } + flowProcessEventHandler.processHandler(processInstance.getProcessDefinitionKey(), + processInstance.getBusinessKey(), BusinessStatusEnum.BACK.getStatus(), false); } //鍒犻櫎椹冲洖鍚庣殑娴佺▼鑺傜偣 wfTaskBackNodeService.deleteBackTaskNode(processInstanceId, backProcessBo.getTargetActivityId()); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index abb6473..d451b45 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; import org.dromara.common.core.service.WorkflowService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; @@ -17,6 +20,7 @@ import org.dromara.workflow.domain.vo.TestLeaveVo; import org.dromara.workflow.mapper.TestLeaveMapper; import org.dromara.workflow.service.ITestLeaveService; +import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,6 +35,7 @@ */ @RequiredArgsConstructor @Service +@Slf4j public class TestLeaveServiceImpl implements ITestLeaveService { private final TestLeaveMapper baseMapper; @@ -117,4 +122,26 @@ workflowService.deleteRunAndHisInstance(idList); return baseMapper.deleteBatchIds(ids) > 0; } + + /** + * 鎬讳綋娴佺▼鐩戝惉(渚嬪: 鎻愪氦 閫�鍥� 鎾ら攢 缁堟 浣滃簾绛�) + * + * @param processEvent 鍙傛暟 + */ + @EventListener(condition = "#processEvent.key=='leave1'") + public void processHandler(ProcessEvent processEvent) { + log.info("褰撳墠浠诲姟鎵ц浜唟}", processEvent.toString()); + } + + /** + * 鎵ц鍔炵悊浠诲姟鐩戝惉 + * + * @param processTaskEvent 鍙傛暟 + */ + @EventListener(condition = "#processTaskEvent.keyNode=='leave1_Activity_14633hx'") + public void processTaskHandler(ProcessTaskEvent processTaskEvent) { + log.info("褰撳墠浠诲姟鎵ц浜唟}", processTaskEvent.toString()); + } + + } -- Gitblit v1.9.3