Przeglądaj źródła

update 优化 调整任务监听名称

疯狂的狮子Li 1 rok temu
rodzic
commit
4b19b384d3

+ 3 - 3
ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java → ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java

@@ -8,13 +8,13 @@ import org.springframework.cloud.bus.event.RemoteApplicationEvent;
 import java.io.Serial;
 
 /**
- * 流程创建任务监听
+ * 流程任务监听
  *
  * @author may
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class ProcessCreateTaskEvent extends RemoteApplicationEvent {
+public class ProcessTaskEvent extends RemoteApplicationEvent {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -59,7 +59,7 @@ public class ProcessCreateTaskEvent extends RemoteApplicationEvent {
      */
     private String status;
 
-    public ProcessCreateTaskEvent() {
+    public ProcessTaskEvent() {
         super(new Object(), SpringUtils.getApplicationName(), DEFAULT_DESTINATION_FACTORY.getDestination(null));
     }
 }

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

@@ -4,9 +4,9 @@ import lombok.extern.slf4j.Slf4j;
 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.workflow.api.event.ProcessCreateTaskEvent;
 import org.dromara.workflow.api.event.ProcessDeleteEvent;
 import org.dromara.workflow.api.event.ProcessEvent;
+import org.dromara.workflow.api.event.ProcessTaskEvent;
 import org.dromara.workflow.common.ConditionalOnEnable;
 import org.springframework.stereotype.Component;
 
@@ -56,20 +56,20 @@ public class FlowProcessEventHandler {
      * @param instance 实例数据
      * @param taskId   任务id
      */
-    public void processCreateTaskHandler(String flowCode, Instance instance, Long taskId) {
+    public void processTaskHandler(String flowCode, Instance instance, Long taskId) {
         String tenantId = TenantHelper.getTenantId();
         log.info("【流程任务事件发布】租户ID: {}, 流程编码: {}, 业务ID: {}, 节点类型: {}, 节点编码: {}, 节点名称: {}, 任务ID: {}",
             tenantId, flowCode, instance.getBusinessId(), instance.getNodeType(), instance.getNodeCode(), instance.getNodeName(), taskId);
-        ProcessCreateTaskEvent processCreateTaskEvent = new ProcessCreateTaskEvent();
-        processCreateTaskEvent.setTenantId(tenantId);
-        processCreateTaskEvent.setFlowCode(flowCode);
-        processCreateTaskEvent.setBusinessId(instance.getBusinessId());
-        processCreateTaskEvent.setNodeType(instance.getNodeType());
-        processCreateTaskEvent.setNodeCode(instance.getNodeCode());
-        processCreateTaskEvent.setNodeName(instance.getNodeName());
-        processCreateTaskEvent.setTaskId(taskId);
-        processCreateTaskEvent.setStatus(instance.getFlowStatus());
-        SpringUtils.context().publishEvent(processCreateTaskEvent);
+        ProcessTaskEvent processTaskEvent = new ProcessTaskEvent();
+        processTaskEvent.setTenantId(tenantId);
+        processTaskEvent.setFlowCode(flowCode);
+        processTaskEvent.setBusinessId(instance.getBusinessId());
+        processTaskEvent.setNodeType(instance.getNodeType());
+        processTaskEvent.setNodeCode(instance.getNodeCode());
+        processTaskEvent.setNodeName(instance.getNodeName());
+        processTaskEvent.setTaskId(taskId);
+        processTaskEvent.setStatus(instance.getFlowStatus());
+        SpringUtils.context().publishEvent(processTaskEvent);
     }
 
     /**

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

@@ -54,15 +54,7 @@ public class WorkflowGlobalListener implements GlobalListener {
      */
     @Override
     public void create(ListenerVariable listenerVariable) {
-        Instance instance = listenerVariable.getInstance();
-        Definition definition = listenerVariable.getDefinition();
-        FlowParams flowParams = listenerVariable.getFlowParams();
-        Map<String, Object> variable = flowParams.getVariable();
-        Task task = listenerVariable.getTask();
-        if (task != null) {
-            // 判断流程状态(发布审批中事件)
-            flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), instance, task.getId());
-        }
+
     }
 
     /**
@@ -100,13 +92,6 @@ public class WorkflowGlobalListener implements GlobalListener {
                 flowTask.setPermissionList(List.of(instance.getCreateBy()));
             }
         }
-        // 申请人提交事件
-        Boolean submit = MapUtil.getBool(variable, FlowConstant.SUBMIT);
-        if (submit != null && submit) {
-            flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, instance.getFlowStatus(), variable, true);
-        }
-        variable.remove(FlowConstant.SUBMIT);
-        flowParams.variable(variable);
     }
 
     /**
@@ -118,6 +103,7 @@ public class WorkflowGlobalListener implements GlobalListener {
     public void finish(ListenerVariable listenerVariable) {
         Instance instance = listenerVariable.getInstance();
         Definition definition = listenerVariable.getDefinition();
+        Task task = listenerVariable.getTask();
         Map<String, Object> params = new HashMap<>();
         FlowParams flowParams = listenerVariable.getFlowParams();
         if (ObjectUtil.isNotNull(flowParams)) {
@@ -128,20 +114,28 @@ public class WorkflowGlobalListener implements GlobalListener {
             // 办理意见
             params.put("message", flowParams.getMessage());
         }
-        // 判断流程状态(发布:撤销,退回,作废,终止,已完成事件)
-        String status = determineFlowStatus(instance);
-        if (StringUtils.isNotBlank(status)) {
-            flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, status, params, false);
+        Map<String, Object> variable = flowParams.getVariable();
+        //申请人提交事件
+        Boolean submit = MapUtil.getBool(variable, FlowConstant.SUBMIT);
+        if (submit != null && submit) {
+            flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, instance.getFlowStatus(), variable, true);
+        } else {
+            // 判断流程状态(发布:撤销,退回,作废,终止,已完成事件)
+            String status = determineFlowStatus(instance);
+            if (StringUtils.isNotBlank(status)) {
+                flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, status, params, false);
+            }
+        }
+        //发布任务事件
+        if (task != null) {
+            flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), instance, task.getId());
         }
-
         if (ObjectUtil.isNull(flowParams)) {
             return;
         }
-        Map<String, Object> variable = flowParams.getVariable();
         // 只有办理或者退回的时候才执行消息通知和抄送
         if (TaskStatusEnum.PASS.getStatus().equals(flowParams.getHisStatus())
             || TaskStatusEnum.BACK.getStatus().equals(flowParams.getHisStatus())) {
-            Task task = listenerVariable.getTask();
             if (variable != null) {
                 if (variable.containsKey(FlowConstant.FLOW_COPY_LIST)) {
                     List<FlowCopyBo> flowCopyList = (List<FlowCopyBo>) variable.get(FlowConstant.FLOW_COPY_LIST);
@@ -160,6 +154,7 @@ public class WorkflowGlobalListener implements GlobalListener {
                 variableMap.remove(FlowConstant.FLOW_COPY_LIST);
                 variableMap.remove(FlowConstant.MESSAGE_TYPE);
                 variableMap.remove(FlowConstant.MESSAGE_NOTICE);
+                variableMap.remove(FlowConstant.SUBMIT);
                 instance.setVariable(FlowEngine.jsonConvert.objToStr(variableMap));
                 insService.updateById(instance);
             }

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

@@ -16,9 +16,9 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.tenant.helper.TenantHelper;
-import org.dromara.workflow.api.event.ProcessCreateTaskEvent;
 import org.dromara.workflow.api.event.ProcessDeleteEvent;
 import org.dromara.workflow.api.event.ProcessEvent;
+import org.dromara.workflow.api.event.ProcessTaskEvent;
 import org.dromara.workflow.common.ConditionalOnEnable;
 import org.dromara.workflow.domain.TestLeave;
 import org.dromara.workflow.domain.bo.TestLeaveBo;
@@ -168,19 +168,17 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
 
     /**
      * 执行任务创建监听
-     * 示例:也可通过  @EventListener(condition = "#processCreateTaskEvent.flowCode=='leave1'")进行判断
+     * 示例:也可通过  @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
      * 在方法中判断流程节点key
-     * if ("xxx".equals(processCreateTaskEvent.getNodeCode())) {
+     * if ("xxx".equals(processTaskEvent.getNodeCode())) {
      * //执行业务逻辑
      * }
      *
-     * @param processCreateTaskEvent 参数
+     * @param processTaskEvent 参数
      */
-    @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')")
-    public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) {
-        TenantHelper.dynamic(processCreateTaskEvent.getTenantId(), () -> {
-            log.info("当前任务创建了{}", processCreateTaskEvent.toString());
-        });
+    @EventListener(condition = "#processTaskEvent.flowCode.startsWith('leave')")
+    public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
+        log.info("当前任务创建了{}", processTaskEvent.toString());
     }
 
     /**