From a22dc9537f1bc3896af38ab4bb572a56fb9611be Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期三, 22 一月 2025 11:13:24 +0800
Subject: [PATCH] update 优化 业务事件监听器增加流程审批参数传递 更方便的对接业务数据
---
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java | 5 ++++-
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java | 9 +++++++++
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java | 6 ++++++
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java | 2 +-
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java | 11 ++++++++++-
5 files changed, 30 insertions(+), 3 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
index 21bfbef..6329b9c 100644
--- 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
@@ -4,6 +4,7 @@
import java.io.Serial;
import java.io.Serializable;
+import java.util.Map;
/**
* 鎬讳綋娴佺▼鐩戝惉
@@ -37,6 +38,11 @@
private String status;
/**
+ * 鍔炵悊鍙傛暟
+ */
+ private Map<String, Object> params;
+
+ /**
* 褰撲负true鏃朵负鐢宠浜鸿妭鐐瑰姙鐞�
*/
private boolean submit;
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java
index 656e013..4b215ef 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java
@@ -9,6 +9,8 @@
import org.dromara.workflow.common.ConditionalOnEnable;
import org.springframework.stereotype.Component;
+import java.util.Map;
+
/**
* 娴佺▼鐩戝惉鏈嶅姟
*
@@ -28,7 +30,7 @@
* @param status 鐘舵��
* @param submit 褰撲负true鏃朵负鐢宠浜鸿妭鐐瑰姙鐞�
*/
- public void processHandler(String flowCode, String businessId, String status, boolean submit) {
+ public void processHandler(String flowCode, String businessId, String status, Map<String, Object> params, boolean submit) {
String tenantId = TenantHelper.getTenantId();
log.info("鍙戝竷娴佺▼浜嬩欢锛岀鎴稩D: {}, 娴佺▼鐘舵��: {}, 娴佺▼缂栫爜: {}, 涓氬姟ID: {}, 鏄惁鐢宠浜鸿妭鐐瑰姙鐞�: {}", tenantId, status, flowCode, businessId, submit);
ProcessEvent processEvent = new ProcessEvent();
@@ -36,6 +38,7 @@
processEvent.setFlowCode(flowCode);
processEvent.setBusinessId(businessId);
processEvent.setStatus(status);
+ processEvent.setParams(params);
processEvent.setSubmit(submit);
SpringUtils.context().publishEvent(processEvent);
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java
index 097d74c..e79fc3b 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java
@@ -17,7 +17,9 @@
import org.dromara.workflow.service.IFlwTaskService;
import org.springframework.stereotype.Component;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* 鍏ㄥ眬浠诲姟鍔炵悊鐩戝惉
@@ -81,10 +83,17 @@
Definition definition = listenerVariable.getDefinition();
String businessId = instance.getBusinessId();
String flowStatus = instance.getFlowStatus();
+ Map<String, Object> params = new HashMap<>();
+ // 鍘嗗彶浠诲姟鎵╁睍(閫氬父涓洪檮浠�)
+ params.put("hisTaskExt", listenerVariable.getFlowParams().getHisTaskExt());
+ // 鍔炵悊浜�
+ params.put("handler", listenerVariable.getFlowParams().getHandler());
+ // 鍔炵悊鎰忚
+ params.put("message", listenerVariable.getFlowParams().getMessage());
// 鍒ゆ柇娴佺▼鐘舵�侊紙鍙戝竷锛氭挙閿�锛岄��鍥烇紝浣滃簾锛岀粓姝紝宸插畬鎴愪簨浠讹級
String status = determineFlowStatus(instance, flowStatus);
if (StringUtils.isNotBlank(status)) {
- flowProcessEventHandler.processHandler(definition.getFlowCode(), businessId, status, false);
+ flowProcessEventHandler.processHandler(definition.getFlowCode(), businessId, status, params, false);
}
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
index 0122126..2df51bb 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
@@ -153,7 +153,7 @@
Definition definition = defService.getById(flowTask.getDefinitionId());
// 妫�鏌ユ祦绋嬬姸鎬佹槸鍚︿负鑽夌銆佸凡鎾ら攢鎴栧凡閫�鍥炵姸鎬侊紝鑻ユ槸鍒欐墽琛屾祦绋嬫彁浜ょ洃鍚�
if (BusinessStatusEnum.isDraftOrCancelOrBack(ins.getFlowStatus())) {
- flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), true);
+ flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), null, true);
}
// 鏋勫缓娴佺▼鍙傛暟锛屽寘鎷彉閲忋�佽烦杞被鍨嬨�佹秷鎭�佸鐞嗕汉銆佹潈闄愮瓑淇℃伅
FlowParams flowParams = new FlowParams();
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 a11e6c1..a7be927 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
@@ -28,6 +28,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
+import java.util.Map;
/**
* 璇峰亣Service涓氬姟灞傚鐞�
@@ -131,6 +132,14 @@
log.info("褰撳墠浠诲姟鎵ц浜唟}", processEvent.toString());
TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessId()));
testLeave.setStatus(processEvent.getStatus());
+ // 鐢ㄤ簬渚嬪瀹℃壒闄勪欢 瀹℃壒鎰忚绛� 瀛樺偍鍒颁笟鍔¤〃鍐� 鑷鏍规嵁涓氬姟瀹炵幇瀛樺偍娴佺▼
+ Map<String, Object> params = processEvent.getParams();
+ // 鍘嗗彶浠诲姟鎵╁睍(閫氬父涓洪檮浠�)
+ String hisTaskExt = params.getOrDefault("hisTaskExt", "").toString();
+ // 鍔炵悊浜�
+ String handler = params.getOrDefault("handler", "").toString();
+ // 鍔炵悊鎰忚
+ String message = params.getOrDefault("message", "").toString();
if (processEvent.isSubmit()) {
testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus());
}
--
Gitblit v1.9.3