增加工作流实例实现

This commit is contained in:
dengqichen 2024-12-05 18:14:09 +08:00
parent ff7544a127
commit 4ac57479a4

View File

@ -91,6 +91,7 @@ class DefaultWorkflowEngineTest {
when(workflowDefinitionRepository.findByCodeAndDeletedFalse(workflowCode)).thenReturn(definition); when(workflowDefinitionRepository.findByCodeAndDeletedFalse(workflowCode)).thenReturn(definition);
when(workflowInstanceRepository.save(any())).thenAnswer(i -> i.getArgument(0)); when(workflowInstanceRepository.save(any())).thenAnswer(i -> i.getArgument(0));
when(nodeInstanceRepository.save(any())).thenReturn(startNode); when(nodeInstanceRepository.save(any())).thenReturn(startNode);
when(nodeInstanceRepository.findById(startNode.getId())).thenReturn(Optional.of(startNode));
doNothing().when(startNodeExecutor).execute(any(), any()); doNothing().when(startNodeExecutor).execute(any(), any());
// 执行测试 // 执行测试
@ -119,7 +120,7 @@ class DefaultWorkflowEngineTest {
// 执行测试并验证异常 // 执行测试并验证异常
WorkflowEngineException exception = assertThrows(WorkflowEngineException.class, WorkflowEngineException exception = assertThrows(WorkflowEngineException.class,
() -> workflowEngine.startWorkflow(workflowCode, "test", null)); () -> workflowEngine.startWorkflow(workflowCode, "test", null));
assertEquals(ResponseCode.WORKFLOW_NOT_FOUND.name(), exception.getMessage()); assertTrue(exception.getMessage().contains(ResponseCode.WORKFLOW_NOT_FOUND.name()));
} }
@Test @Test
@ -136,7 +137,7 @@ class DefaultWorkflowEngineTest {
// 执行测试并验证异常 // 执行测试并验证异常
WorkflowEngineException exception = assertThrows(WorkflowEngineException.class, WorkflowEngineException exception = assertThrows(WorkflowEngineException.class,
() -> workflowEngine.startWorkflow(workflowCode, "test", null)); () -> workflowEngine.startWorkflow(workflowCode, "test", null));
assertEquals(ResponseCode.WORKFLOW_NOT_PUBLISHED.name(), exception.getMessage()); assertTrue(exception.getMessage().contains(ResponseCode.WORKFLOW_NOT_PUBLISHED.name()));
} }
@Test @Test
@ -179,7 +180,7 @@ class DefaultWorkflowEngineTest {
// 执行测试并验证异常 // 执行测试并验证异常
WorkflowEngineException exception = assertThrows(WorkflowEngineException.class, WorkflowEngineException exception = assertThrows(WorkflowEngineException.class,
() -> workflowEngine.executeNode(nodeInstanceId)); () -> workflowEngine.executeNode(nodeInstanceId));
assertEquals(ResponseCode.WORKFLOW_NODE_NOT_FOUND.name(), exception.getMessage()); assertTrue(exception.getMessage().contains(ResponseCode.WORKFLOW_NODE_NOT_FOUND.name()));
} }
@Test @Test
@ -200,7 +201,7 @@ class DefaultWorkflowEngineTest {
// 执行测试并验证异常 // 执行测试并验证异常
WorkflowEngineException exception = assertThrows(WorkflowEngineException.class, WorkflowEngineException exception = assertThrows(WorkflowEngineException.class,
() -> workflowEngine.executeNode(nodeInstanceId)); () -> workflowEngine.executeNode(nodeInstanceId));
assertEquals(ResponseCode.WORKFLOW_INSTANCE_NOT_RUNNING.name(), exception.getMessage()); assertTrue(exception.getMessage().contains(ResponseCode.WORKFLOW_INSTANCE_NOT_RUNNING.name()));
} }
@Test @Test
@ -280,11 +281,14 @@ class DefaultWorkflowEngineTest {
NodeInstance pausedNode = new NodeInstance(); NodeInstance pausedNode = new NodeInstance();
pausedNode.setId(2L); pausedNode.setId(2L);
pausedNode.setStatus(NodeStatusEnum.PAUSED); pausedNode.setStatus(NodeStatusEnum.PAUSED);
pausedNode.setWorkflowInstance(instance);
// 配置Mock行为 // 配置Mock行为
when(workflowInstanceRepository.findById(instanceId)).thenReturn(Optional.of(instance)); when(workflowInstanceRepository.findById(instanceId)).thenReturn(Optional.of(instance));
when(nodeInstanceRepository.findByWorkflowInstanceIdAndStatus(instanceId, NodeStatusEnum.PAUSED)) when(nodeInstanceRepository.findByWorkflowInstanceIdAndStatus(instanceId, NodeStatusEnum.PAUSED))
.thenReturn(Arrays.asList(pausedNode)); .thenReturn(Arrays.asList(pausedNode));
when(nodeInstanceRepository.findById(pausedNode.getId())).thenReturn(Optional.of(pausedNode));
doNothing().when(taskNodeExecutor).execute(any(), any());
// 执行测试 // 执行测试
workflowEngine.resumeWorkflow(instanceId); workflowEngine.resumeWorkflow(instanceId);