Просмотр исходного кода

update 优化 任务执行监听器 传递任务的相关数据 不传递实例相关数据了(避免并行节点覆盖问题)

疯狂的狮子Li 7 месяцев назад
Родитель
Сommit
8718989c52

+ 8 - 7
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java

@@ -7,6 +7,7 @@ import org.dromara.common.core.domain.event.ProcessEvent;
 import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.warm.flow.core.entity.Instance;
+import org.dromara.warm.flow.core.entity.Task;
 import org.dromara.workflow.common.ConditionalOnEnable;
 import org.springframework.stereotype.Component;
 
@@ -55,22 +56,22 @@ public class FlowProcessEventHandler {
      *
      * @param flowCode   流程定义编码
      * @param instance   实例数据
-     * @param taskId     任务id
+     * @param nextTask   任务
      * @param params     上一个任务的办理参数
      */
-    public void processTaskHandler(String flowCode, Instance instance, Long taskId, Map<String, Object> params) {
+    public void processTaskHandler(String flowCode, Instance instance, Task nextTask, Map<String, Object> params) {
         String tenantId = TenantHelper.getTenantId();
         log.info("【流程任务事件发布】租户ID: {}, 流程编码: {}, 业务ID: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 任务ID: {}",
-            tenantId, flowCode, instance.getBusinessId(), instance.getNodeType(), instance.getNodeCode(), instance.getNodeName(), taskId);
+            tenantId, flowCode, instance.getBusinessId(), nextTask.getNodeType(), nextTask.getNodeCode(), nextTask.getNodeName(), nextTask.getId());
         ProcessTaskEvent processTaskEvent = new ProcessTaskEvent();
         processTaskEvent.setTenantId(tenantId);
         processTaskEvent.setFlowCode(flowCode);
         processTaskEvent.setInstanceId(instance.getId());
         processTaskEvent.setBusinessId(instance.getBusinessId());
-        processTaskEvent.setNodeType(instance.getNodeType());
-        processTaskEvent.setNodeCode(instance.getNodeCode());
-        processTaskEvent.setNodeName(instance.getNodeName());
-        processTaskEvent.setTaskId(taskId);
+        processTaskEvent.setNodeType(nextTask.getNodeType());
+        processTaskEvent.setNodeCode(nextTask.getNodeCode());
+        processTaskEvent.setNodeName(nextTask.getNodeName());
+        processTaskEvent.setTaskId(nextTask.getId());
         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

@@ -208,7 +208,7 @@ public class WorkflowGlobalListener implements GlobalListener {
         //发布任务事件
         if (CollUtil.isNotEmpty(nextTasks)) {
             for (Task nextTask : nextTasks) {
-                flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, nextTask.getId(), params);
+                flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, nextTask, params);
             }
         }
         if (ObjectUtil.isNull(flowParams)) {