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