From 4b19b384d3c376a7618dd09ad1d8ae1fd8a71297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 29 May 2025 11:23:40 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E4=BB=BB=E5=8A=A1=E7=9B=91=E5=90=AC=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...teTaskEvent.java => ProcessTaskEvent.java} | 6 +-- .../handler/FlowProcessEventHandler.java | 24 +++++------ .../listener/WorkflowGlobalListener.java | 41 ++++++++----------- .../service/impl/TestLeaveServiceImpl.java | 16 ++++---- 4 files changed, 40 insertions(+), 47 deletions(-) rename ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/{ProcessCreateTaskEvent.java => ProcessTaskEvent.java} (89%) diff --git a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java b/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java similarity index 89% rename from ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java rename to ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessTaskEvent.java index 68216801..f53c8def 100644 --- a/ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java +++ b/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)); } } 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 b02e32b4..9fe5a148 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 @@ -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); } /** 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 724519e1..027865bc 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 @@ -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 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 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 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 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 flowCopyList = (List) 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); } 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 ca2dc8ab..0b227a4d 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 @@ -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()); } /**