From 6d0bcceb6d2539b168faaea5dab7dd666666805f 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: Fri, 30 Oct 2026 15:21:46 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E6=B5=81=E7=A8=8B=20=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E6=96=87=E4=B8=BA=E7=A9=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/demo/DemoTimerInspectHandler.java | 5 ++++- .../workflow/demo/DemoTimerInspectHandlerTest.java | 10 +++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/demo/DemoTimerInspectHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/demo/DemoTimerInspectHandler.java index c48ef173e..b3889fa43 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/demo/DemoTimerInspectHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/demo/DemoTimerInspectHandler.java @@ -7,6 +7,7 @@ import org.dromara.warm.flow.core.entity.EventWait; import org.dromara.warm.flow.core.enums.EventType; import org.dromara.warm.flow.core.service.impl.EventRuntimeHandler; import org.dromara.warm.flow.core.timer.EventTaskHandler; +import org.dromara.warm.flow.core.workflow.context.WorkflowContext; import org.dromara.workflow.common.ConditionalOnEnable; import org.springframework.stereotype.Component; @@ -46,8 +47,10 @@ public class DemoTimerInspectHandler implements EventTaskHandler { if (isInspectTimerStart(wait)) { // 这里应该使用业务的id demo使用自动生成id 需要用户自行替换 String businessId = String.valueOf(IdWorker.getId()); + WorkflowContext context = new WorkflowContext(); + context.setHandler(FlowEngine.getFlowConfig().getSystemHandler()); FlowEngine.insService().startByTimer(businessId, wait.getDefinitionId(), - wait.getNodeCode(), null, null); + wait.getNodeCode(), null, context); log.info("定时启动示例已自动发起审批: businessId={}", businessId); return; } diff --git a/ruoyi-modules/ruoyi-workflow/src/test/java/org/dromara/workflow/demo/DemoTimerInspectHandlerTest.java b/ruoyi-modules/ruoyi-workflow/src/test/java/org/dromara/workflow/demo/DemoTimerInspectHandlerTest.java index ec1408851..f2edb2a94 100644 --- a/ruoyi-modules/ruoyi-workflow/src/test/java/org/dromara/workflow/demo/DemoTimerInspectHandlerTest.java +++ b/ruoyi-modules/ruoyi-workflow/src/test/java/org/dromara/workflow/demo/DemoTimerInspectHandlerTest.java @@ -1,16 +1,19 @@ package org.dromara.workflow.demo; import org.dromara.warm.flow.core.FlowEngine; +import org.dromara.warm.flow.core.config.WarmFlow; import org.dromara.warm.flow.core.entity.Definition; import org.dromara.warm.flow.core.entity.EventWait; import org.dromara.warm.flow.core.enums.EventType; import org.dromara.warm.flow.core.service.DefService; import org.dromara.warm.flow.core.service.InsService; +import org.dromara.warm.flow.core.workflow.context.WorkflowContext; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import org.mockito.MockedStatic; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.isNull; @@ -32,17 +35,22 @@ class DemoTimerInspectHandlerTest { DefService defService = mock(DefService.class); when(defService.getById(12L)).thenReturn(definition); InsService insService = mock(InsService.class); + WarmFlow flowConfig = mock(WarmFlow.class); + when(flowConfig.getSystemHandler()).thenReturn("0"); try (MockedStatic engine = mockStatic(FlowEngine.class)) { engine.when(FlowEngine::defService).thenReturn(defService); engine.when(FlowEngine::insService).thenReturn(insService); + engine.when(FlowEngine::getFlowConfig).thenReturn(flowConfig); assertDoesNotThrow(() -> new DemoTimerInspectHandler().handle(wait)); ArgumentCaptor businessId = ArgumentCaptor.forClass(String.class); - verify(insService).startByTimer(businessId.capture(), eq(12L), eq("timerStart"), isNull(), isNull()); + ArgumentCaptor context = ArgumentCaptor.forClass(WorkflowContext.class); + verify(insService).startByTimer(businessId.capture(), eq(12L), eq("timerStart"), isNull(), context.capture()); assertTrue(businessId.getValue().matches("[0-9]+")); assertTrue(Long.parseLong(businessId.getValue()) > 0); + assertEquals("0", context.getValue().getHandler()); } } }