Ver Fonte

update 优化 支持在监听器设置流程变量

疯狂的狮子Li há 1 ano atrás
pai
commit
868bc492a2

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

@@ -47,6 +47,11 @@ public class ProcessTaskEvent implements Serializable {
      */
      */
     private Long taskId;
     private Long taskId;
 
 
+    /**
+     * 实例id
+     */
+    private Long instanceId;
+
     /**
     /**
      * 业务id
      * 业务id
      */
      */

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

@@ -64,6 +64,7 @@ public class FlowProcessEventHandler {
         ProcessTaskEvent processTaskEvent = new ProcessTaskEvent();
         ProcessTaskEvent processTaskEvent = new ProcessTaskEvent();
         processTaskEvent.setTenantId(tenantId);
         processTaskEvent.setTenantId(tenantId);
         processTaskEvent.setFlowCode(flowCode);
         processTaskEvent.setFlowCode(flowCode);
+        processTaskEvent.setInstanceId(instance.getId());
         processTaskEvent.setBusinessId(instance.getBusinessId());
         processTaskEvent.setBusinessId(instance.getBusinessId());
         processTaskEvent.setNodeType(instance.getNodeType());
         processTaskEvent.setNodeType(instance.getNodeType());
         processTaskEvent.setNodeCode(instance.getNodeCode());
         processTaskEvent.setNodeCode(instance.getNodeCode());

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

@@ -8,7 +8,6 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.enums.BusinessStatusEnum;
 import org.dromara.common.core.enums.BusinessStatusEnum;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.utils.StringUtils;
-import org.dromara.warm.flow.core.FlowEngine;
 import org.dromara.warm.flow.core.dto.FlowParams;
 import org.dromara.warm.flow.core.dto.FlowParams;
 import org.dromara.warm.flow.core.entity.Definition;
 import org.dromara.warm.flow.core.entity.Definition;
 import org.dromara.warm.flow.core.entity.Instance;
 import org.dromara.warm.flow.core.entity.Instance;
@@ -16,7 +15,6 @@ import org.dromara.warm.flow.core.entity.Task;
 import org.dromara.warm.flow.core.listener.GlobalListener;
 import org.dromara.warm.flow.core.listener.GlobalListener;
 import org.dromara.warm.flow.core.listener.ListenerVariable;
 import org.dromara.warm.flow.core.listener.ListenerVariable;
 import org.dromara.warm.flow.core.service.InsService;
 import org.dromara.warm.flow.core.service.InsService;
-import org.dromara.warm.flow.orm.entity.FlowInstance;
 import org.dromara.workflow.common.ConditionalOnEnable;
 import org.dromara.workflow.common.ConditionalOnEnable;
 import org.dromara.workflow.common.constant.FlowConstant;
 import org.dromara.workflow.common.constant.FlowConstant;
 import org.dromara.workflow.common.enums.TaskStatusEnum;
 import org.dromara.workflow.common.enums.TaskStatusEnum;
@@ -165,15 +163,12 @@ public class WorkflowGlobalListener implements GlobalListener {
                 flwCommonService.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice);
                 flwCommonService.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice);
             }
             }
         }
         }
-        FlowInstance ins = new FlowInstance();
-        Map<String, Object> variableMap = instance.getVariableMap();
-        variableMap.remove(FlowConstant.FLOW_COPY_LIST);
-        variableMap.remove(FlowConstant.MESSAGE_TYPE);
-        variableMap.remove(FlowConstant.MESSAGE_NOTICE);
-        variableMap.remove(FlowConstant.SUBMIT);
-        ins.setId(instance.getId());
-        ins.setVariable(FlowEngine.jsonConvert.objToStr(variableMap));
-        insService.updateById(ins);
+        insService.removeVariables(instance.getId(),
+            FlowConstant.FLOW_COPY_LIST,
+            FlowConstant.MESSAGE_TYPE,
+            FlowConstant.MESSAGE_NOTICE,
+            FlowConstant.SUBMIT
+        );
     }
     }
 
 
     /**
     /**