From 810691b5df3d21ab1391ca57d317a2728db175ee Mon Sep 17 00:00:00 2001
From: gssong <1742057357@qq.com>
Date: 星期六, 08 六月 2024 09:22:20 +0800
Subject: [PATCH] update 优化流程办理监听,优化示例说明

---
 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java       |    9 +++++++--
 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java        |    7 ++++++-
 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java |   12 +++++++-----
 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java          |    4 ++--
 4 files changed, 22 insertions(+), 10 deletions(-)

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
index 09c84bd..019ca82 100644
--- 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
@@ -18,9 +18,14 @@
     private static final long serialVersionUID = 1L;
 
     /**
-     * 娴佺▼瀹氫箟key涓庢祦绋嬭妭鐐规爣璇�(鎷兼帴鏂瑰紡锛氭祦绋嬪畾涔塳ey_娴佺▼鑺傜偣)
+     * 娴佺▼瀹氫箟key
      */
-    private String keyNode;
+    private String key;
+
+    /**
+     * 瀹℃壒鑺傜偣key
+     */
+    private String taskDefinitionKey;
 
     /**
      * 浠诲姟id
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
index 17dba8c..69ae70a 100644
--- 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
@@ -34,13 +34,15 @@
     /**
      * 鎵ц鍔炵悊浠诲姟鐩戝惉
      *
-     * @param keyNode     娴佺▼瀹氫箟key涓庢祦绋嬭妭鐐规爣璇�(鎷兼帴鏂瑰紡锛氭祦绋嬪畾涔塳ey_娴佺▼鑺傜偣)
-     * @param taskId      浠诲姟id
-     * @param businessKey 涓氬姟id
+     * @param key               娴佺▼key
+     * @param taskDefinitionKey 瀹℃壒鑺傜偣key
+     * @param taskId            浠诲姟id
+     * @param businessKey       涓氬姟id
      */
-    public void processTaskHandler(String keyNode, String taskId, String businessKey) {
+    public void processTaskHandler(String key, String taskDefinitionKey, String taskId, String businessKey) {
         ProcessTaskEvent processTaskEvent = new ProcessTaskEvent();
-        processTaskEvent.setKeyNode(keyNode);
+        processTaskEvent.setKey(key);
+        processTaskEvent.setTaskDefinitionKey(taskDefinitionKey);
         processTaskEvent.setTaskId(taskId);
         processTaskEvent.setBusinessKey(businessKey);
         SpringUtils.context().publishEvent(processTaskEvent);
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 523a77c..32be130 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
@@ -184,8 +184,8 @@
             }
             runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.WAITING.getStatus());
             //鍔炵悊鐩戝惉
-            String keyNode = processInstance.getProcessDefinitionKey() + "_" + task.getTaskDefinitionKey();
-            flowProcessEventHandler.processTaskHandler(keyNode, task.getId(), processInstance.getBusinessKey());
+            flowProcessEventHandler.processTaskHandler(processInstance.getProcessDefinitionKey(), task.getTaskDefinitionKey(),
+                task.getId(), processInstance.getBusinessKey());
             //鍔炵悊鎰忚
             taskService.addComment(completeTaskBo.getTaskId(), task.getProcessInstanceId(), TaskStatusEnum.PASS.getStatus(), StringUtils.isBlank(completeTaskBo.getMessage()) ? "鍚屾剰" : completeTaskBo.getMessage());
             //鍔炵悊浠诲姟
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 e437a56..13a1bb2 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
@@ -134,10 +134,15 @@
 
     /**
      * 鎵ц鍔炵悊浠诲姟鐩戝惉
+     * 绀轰緥锛氫篃鍙�氳繃  @EventListener(condition = "#processTaskEvent.key=='leave1'")杩涜鍒ゆ柇
+     * 鍦ㄦ柟娉曚腑鍒ゆ柇娴佺▼鑺傜偣key
+     * if ("xxx".equals(processTaskEvent.getTaskDefinitionKey())) {
+     * //鎵ц涓氬姟閫昏緫
+     * }
      *
      * @param processTaskEvent 鍙傛暟
      */
-    @EventListener(condition = "#processTaskEvent.keyNode=='leave1_Activity_14633hx'")
+    @EventListener(condition = "#processTaskEvent.key=='leave1' && #processTaskEvent.taskDefinitionKey=='Activity_14633hx'")
     public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
         log.info("褰撳墠浠诲姟鎵ц浜唟}", processTaskEvent.toString());
         TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey()));

--
Gitblit v1.9.3