@Override public List<NodeInstanceSummary> getProcessInstanceCompletedNodes(ProcessInstanceKey processInstanceKey) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return emptyList(); } QueryServicesClient queryServicesClient = getClient(processInstanceKey.getServerTemplateId(), QueryServicesClient.class); List<NodeInstance> nodeInstances = queryServicesClient.findCompletedNodeInstances(processInstanceKey.getProcessInstanceId(), 0, Integer.MAX_VALUE); return nodeInstances.stream().map(new NodeInstanceSummaryMapper()).collect(toList()); }
@Override public List<NodeInstanceSummary> getProcessInstanceCompletedNodes(ProcessInstanceKey processInstanceKey) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return emptyList(); } QueryServicesClient queryServicesClient = getClient(processInstanceKey.getServerTemplateId(), QueryServicesClient.class); List<NodeInstance> nodeInstances = queryServicesClient.findCompletedNodeInstances(processInstanceKey.getProcessInstanceId(), 0, Integer.MAX_VALUE); return nodeInstances.stream().map(new NodeInstanceSummaryMapper()).collect(toList()); }
@Test public void testSLAonUserTaskMet() throws Exception { Long pid = processClient.startProcess(CONTAINER_ID, PROCESS_ID_USERTASK_WITH_SLA_ON_TASK, new HashMap<>()); assertProcessInstance(pid, STATE_ACTIVE, SLA_NA); // Yoda should have one task available with SLA List<TaskSummary> tasks = taskClient.findTasksAssignedAsPotentialOwner(USER_YODA, 0, 0); TaskSummary task = tasks.get(0); assertThat(tasks).hasSize(1); assertThat(task.getName()).isEqualTo("Hello"); List<NodeInstance> activeNodes = processClient.findActiveNodeInstances(CONTAINER_ID, pid, 0, 0); assertThat(activeNodes).hasSize(1); NodeInstance taskNode = activeNodes.get(0); assertNodeInstance(taskNode, "Hello", SLA_PENDING); taskClient.completeAutoProgress(CONTAINER_ID, task.getId(), USER_YODA, null); tasks = taskClient.findTasksAssignedAsPotentialOwner(USER_YODA, 0, 0); assertThat(tasks).isEmpty(); activeNodes = processClient.findActiveNodeInstances(CONTAINER_ID, pid, 0, 0); assertThat(activeNodes).isEmpty(); taskNode = getNodeInstanceById(queryClient.findCompletedNodeInstances(pid, 0, 0), taskNode.getId()); assertNodeInstance(taskNode, "Hello", SLA_MET); assertProcessInstance(pid, STATE_COMPLETED, SLA_NA); }
@Test public void testSLAonProcessMet() throws Exception { Long pid = processClient.startProcess(CONTAINER_ID, PROCESS_ID_USERTASK_WITH_SLA, new HashMap<>()); assertProcessInstance(pid, STATE_ACTIVE, SLA_PENDING); // Yoda should have one task available without SLA List<TaskSummary> tasks = taskClient.findTasksAssignedAsPotentialOwner(USER_YODA, 0, 0); assertThat(tasks).hasSize(1); TaskSummary task = tasks.get(0); assertThat(task.getName()).isEqualTo("Hello"); List<NodeInstance> activeNodes = processClient.findActiveNodeInstances(CONTAINER_ID, pid, 0, 0); assertThat(activeNodes).hasSize(1); NodeInstance taskNode = activeNodes.get(0); assertNodeInstance(taskNode, "Hello", SLA_NA); // Complete task before SLA violation taskClient.completeAutoProgress(CONTAINER_ID, task.getId(), USER_YODA, null); tasks = taskClient.findTasksAssignedAsPotentialOwner(USER_YODA, 0, 0); assertThat(tasks).isEmpty(); activeNodes = processClient.findActiveNodeInstances(CONTAINER_ID, pid, 0, 0); assertThat(activeNodes).isEmpty(); taskNode = getNodeInstanceById(queryClient.findCompletedNodeInstances(pid, 0, 0), taskNode.getId()); assertNodeInstance(taskNode, "Hello", SLA_NA); // Process should be completed and SLA should be met assertProcessInstance(pid, STATE_COMPLETED, SLA_MET); }
@Test public void testGetProcessInstanceDiagramSummaryCompletedStatus() { ProcessInstanceKey instanceKey = new ProcessInstanceKey(serverTemplateId, containerId, processInstanceId); String svgContent = "<svg></svg>"; Integer state = org.kie.api.runtime.process.ProcessInstance.STATE_COMPLETED; String processName = "process"; when(queryServicesClient.findProcessInstanceById(processInstanceId)).thenReturn(ProcessInstance.builder().id(processInstanceId).processId(processId).containerId(containerId).state(state).processName(processName).build()); when(processImageService.getProcessInstanceDiagram(serverTemplateId, containerId, processInstanceId)).thenReturn(svgContent); when(processServicesClient.getProcessDefinition(containerId, processId)).thenReturn(new ProcessDefinition()); ProcessInstanceDiagramSummary summary = service.getProcessInstanceDiagramSummary(instanceKey); assertEquals(processInstanceId, summary.getId()); assertEquals(processName, summary.getName()); assertEquals(svgContent, summary.getSvgContent()); assertNotNull(summary.getProcessDefinition()); assertThat(summary.getProcessDefinition().getNodes()).isEmpty(); assertThat(summary.getProcessDefinition().getTimers()).isEmpty(); assertThat(summary.getNodeInstances()).isEmpty(); assertThat(summary.getTimerInstances()).isEmpty(); verify(queryServicesClient, never()).findActiveNodeInstances(any(), any(), any()); verify(queryServicesClient, never()).findCompletedNodeInstances(any(), any(), any()); verify(processAdminServicesClient, never()).getTimerInstances(any(), any()); }
@Test public void testGetProcessInstanceDiagramSummaryCompletedStatus() { ProcessInstanceKey instanceKey = new ProcessInstanceKey(serverTemplateId, containerId, processInstanceId); String svgContent = "<svg></svg>"; Integer state = org.kie.api.runtime.process.ProcessInstance.STATE_COMPLETED; String processName = "process"; when(queryServicesClient.findProcessInstanceById(processInstanceId)).thenReturn(ProcessInstance.builder().id(processInstanceId).processId(processId).containerId(containerId).state(state).processName(processName).build()); when(processImageService.getProcessInstanceDiagram(serverTemplateId, containerId, processInstanceId)).thenReturn(svgContent); when(processServicesClient.getProcessDefinition(containerId, processId)).thenReturn(new ProcessDefinition()); ProcessInstanceDiagramSummary summary = service.getProcessInstanceDiagramSummary(instanceKey); assertEquals(processInstanceId, summary.getId()); assertEquals(processName, summary.getName()); assertEquals(svgContent, summary.getSvgContent()); assertNotNull(summary.getProcessDefinition()); assertThat(summary.getProcessDefinition().getNodes()).isEmpty(); assertThat(summary.getProcessDefinition().getTimers()).isEmpty(); assertThat(summary.getNodeInstances()).isEmpty(); assertThat(summary.getTimerInstances()).isEmpty(); verify(queryServicesClient, never()).findActiveNodeInstances(any(), any(), any()); verify(queryServicesClient, never()).findCompletedNodeInstances(any(), any(), any()); verify(processAdminServicesClient, never()).getTimerInstances(any(), any()); }
@Test public void testGetProcessInstanceCompletedNodes() { ProcessInstanceKey instanceKey = new ProcessInstanceKey(serverTemplateId, containerId, processInstanceId); List<NodeInstance> nodeInstances = Arrays.asList(NodeInstance.builder().id(1l).name("name-1").nodeType("HumanTask").build(), NodeInstance.builder().id(2l).name(" ").nodeType("Split").build()); when(queryServicesClient.findCompletedNodeInstances(instanceKey.getProcessInstanceId(), 0, Integer.MAX_VALUE)).thenReturn(nodeInstances); List<NodeInstanceSummary> nodes = service.getProcessInstanceCompletedNodes(instanceKey); assertThat(nodes).hasSize(2).containsExactly(NodeInstanceSummary.builder().withId(1l).withName("name-1").withType("HumanTask").build(), NodeInstanceSummary.builder().withId(2l).withName(" ").withType("Split").build()); }
@Test public void testGetProcessInstanceCompletedNodes() { ProcessInstanceKey instanceKey = new ProcessInstanceKey(serverTemplateId, containerId, processInstanceId); List<NodeInstance> nodeInstances = Arrays.asList(NodeInstance.builder().id(1l).name("name-1").nodeType("HumanTask").build(), NodeInstance.builder().id(2l).name(" ").nodeType("Split").build()); when(queryServicesClient.findCompletedNodeInstances(instanceKey.getProcessInstanceId(), 0, Integer.MAX_VALUE)).thenReturn(nodeInstances); List<NodeInstanceSummary> nodes = service.getProcessInstanceCompletedNodes(instanceKey); assertThat(nodes).hasSize(2).containsExactly(NodeInstanceSummary.builder().withId(1l).withName("name-1").withType("HumanTask").build(), NodeInstanceSummary.builder().withId(2l).withName(" ").withType("Split").build()); }
assertNotNull(nodeInstance.getDate()); instances = queryClient.findCompletedNodeInstances(processInstanceId, 0, 10); assertNotNull(instances); assertEquals(1, instances.size());
NodeInstance.builder().id(4l).name(" ").nodeType("End").completed(true).build()); when(queryServicesClient.findCompletedNodeInstances(processInstanceId, 0, Integer.MAX_VALUE)).thenReturn(completedNodeInstances);
NodeInstance.builder().id(4l).name(" ").nodeType("End").completed(true).build()); when(queryServicesClient.findCompletedNodeInstances(processInstanceId, 0, Integer.MAX_VALUE)).thenReturn(completedNodeInstances);