ソースを参照

update 优化 工作流任务创建监听器 传递流程参数

疯狂的狮子Li 1 年間 前
コミット
74e3d232f5

+ 6 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java

@@ -4,6 +4,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.util.Map;
 
 /**
  * 流程任务监听
@@ -56,4 +57,9 @@ public class ProcessTaskEvent implements Serializable {
      */
     private String status;
 
+    /**
+     * 办理参数
+     */
+    private Map<String, Object> params;
+
 }

+ 2 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java

@@ -56,7 +56,7 @@ public class FlowProcessEventHandler {
      * @param instance   实例数据
      * @param taskId     任务id
      */
-    public void processTaskHandler(String flowCode, Instance instance, Long taskId) {
+    public void processTaskHandler(String flowCode, Instance instance, Long taskId, Map<String, Object> params) {
         String tenantId = TenantHelper.getTenantId();
         log.info("【流程任务事件发布】租户ID: {}, 流程编码: {}, 业务ID: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 任务ID: {}",
             tenantId, flowCode, instance.getBusinessId(), instance.getNodeType(), instance.getNodeCode(), instance.getNodeName(), taskId);
@@ -69,6 +69,7 @@ public class FlowProcessEventHandler {
         processTaskEvent.setNodeName(instance.getNodeName());
         processTaskEvent.setTaskId(taskId);
         processTaskEvent.setStatus(instance.getFlowStatus());
+        processTaskEvent.setParams(params);
         SpringUtils.context().publishEvent(processTaskEvent);
     }
 

+ 1 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java

@@ -130,7 +130,7 @@ public class WorkflowGlobalListener implements GlobalListener {
         }
         //发布任务事件
         if (task != null) {
-            flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, task.getId());
+            flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, task.getId(), params);
         }
         if (ObjectUtil.isNull(flowParams)) {
             return;

+ 2 - 2
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java

@@ -136,7 +136,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
     }
 
     /**
-     * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
+     * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等)
      * 正常使用只需#processEvent.flowCode=='leave1'
      * 示例为了方便则使用startsWith匹配了全部示例key
      *
@@ -164,7 +164,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
     }
 
     /**
-     * 执行任务创建监听
+     * 执行任务创建监听(也代表上一条任务完成事件)
      * 示例:也可通过  @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
      * 在方法中判断流程节点key
      * if ("xxx".equals(processTaskEvent.getNodeCode())) {