private void assertProcessInstance(Long pid, int processState, int slaStatus) { assertThat(pid).isNotNull(); ProcessInstance pi = queryClient.findProcessInstanceById(pid); assertThat(pi.getState()).isEqualTo(processState); assertThat(pi.getSlaCompliance()).isEqualTo(slaStatus); if (slaStatus != SLA_NA) { assertThat(pi.getSlaDueDate()).isCloseTo(new Date(), 30000); } }
@Test public void testCallWebServiceFromProcess() throws Exception { Map<String, Object> params = new HashMap<>(); params.put("serviceUrl", TestConfig.getWebServiceHttpURL()); Long pid = processClient.startProcess(WS_CONTAINER_ID, PROCESS_ID_WS, params); assertThat(pid).isNotNull(); ProcessInstance pi = queryClient.findProcessInstanceById(pid); assertThat(pi.getState()).isEqualTo(STATE_COMPLETED); }
@Override public ProcessInstanceSummary getProcessInstance(ProcessInstanceKey processInstanceKey) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return null; } QueryServicesClient queryServicesClient = getClient(processInstanceKey.getServerTemplateId(), QueryServicesClient.class); ProcessInstance processInstance = queryServicesClient.findProcessInstanceById(processInstanceKey.getProcessInstanceId()); return new ProcessInstanceSummaryMapper(processInstanceKey.getServerTemplateId()).apply(processInstance); }
@Override public ProcessInstanceSummary getProcessInstance(ProcessInstanceKey processInstanceKey) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return null; } QueryServicesClient queryServicesClient = getClient(processInstanceKey.getServerTemplateId(), QueryServicesClient.class); ProcessInstance processInstance = queryServicesClient.findProcessInstanceById(processInstanceKey.getProcessInstanceId()); return new ProcessInstanceSummaryMapper(processInstanceKey.getServerTemplateId()).apply(processInstance); }
@Test public void testStartProcessWithCustomTask() throws Exception { Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("id", "custom id"); Long processInstanceId = null; try { processInstanceId = processClient.startProcess(CONTAINER_ID, PROCESS_ID_CUSTOM_TASK); assertNotNull(processInstanceId); assertTrue(processInstanceId.longValue() > 0); ProcessInstance pi = queryClient.findProcessInstanceById(processInstanceId); assertNotNull(pi); assertEquals(org.kie.api.runtime.process.ProcessInstance.STATE_COMPLETED, pi.getState().intValue()); } catch(Exception e) { if (processInstanceId != null) { processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); } fail("Exception " + e.getMessage()); } }
@Test public void testGetProcessInstanceByNonExistingId() throws Exception { try { queryClient.findProcessInstanceById(-9999l); fail("KieServicesException should be thrown complaining about process instance not found."); } catch (KieServicesException e) { KieServerAssert.assertResultContainsString(e.getMessage(), "Could not find process instance with id"); } }
@Test public void testProcessWithDecisionTask() throws Exception { Long processInstanceId = null; try { Map<String, Object> parameters = new HashMap<>(); parameters.put("age", 16); parameters.put("yearsOfService", 1); processInstanceId = processClient.startProcess(CONTAINER_ID, DECISION_PROCESS_ID, parameters); assertNotNull(processInstanceId); assertTrue(processInstanceId.longValue() > 0); ProcessInstance processInstance = queryClient.findProcessInstanceById(processInstanceId); assertNotNull(processInstance); assertEquals(org.kie.api.runtime.process.ProcessInstance.STATE_COMPLETED, processInstance.getState().intValue()); List<VariableInstance> variables = queryClient.findVariablesCurrentState(processInstanceId); assertNotNull(variables); assertEquals(4, variables.size()); Map<String, String> mappedVars = variables.stream().collect(Collectors.toMap(VariableInstance::getVariableName, VariableInstance::getValue)); assertEquals("27", mappedVars.get("vacationDays")); processInstanceId = null; } finally { if (processInstanceId != null) { processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); } } }
@Test public void getProcessInstanceDetailsTest() { final Long processInstanceId = 1L; final TaskSummary taskSummaryMock = mock(TaskSummary.class); final TaskSummaryList taskSummaryListSpy = spy(new TaskSummaryList(singletonList(taskSummaryMock))); final ProcessInstance processInstanceSpy = spy(ProcessInstance.builder() .activeUserTasks(taskSummaryListSpy) .build()); when(queryServicesClient.findProcessInstanceById(processInstanceId)).thenReturn(processInstanceSpy); service.getProcessInstance(new ProcessInstanceKey(serverTemplateId, containerId, processInstanceId)); verify(processInstanceSpy).getProcessId(); verify(processInstanceSpy).getState(); verify(processInstanceSpy).getContainerId(); verify(processInstanceSpy).getProcessVersion(); verify(processInstanceSpy).getCorrelationKey(); verify(processInstanceSpy).getParentId(); verify(processInstanceSpy).getSlaCompliance(); verify(processInstanceSpy).getSlaDueDate(); verifyActiveUserTasks(taskSummaryListSpy, taskSummaryMock); verifyCurrentActivities(processInstanceId); }
@Test public void getProcessInstanceDetailsTest() { final Long processInstanceId = 1L; final TaskSummary taskSummaryMock = mock(TaskSummary.class); final TaskSummaryList taskSummaryListSpy = spy(new TaskSummaryList(singletonList(taskSummaryMock))); final ProcessInstance processInstanceSpy = spy(ProcessInstance.builder() .activeUserTasks(taskSummaryListSpy) .build()); when(queryServicesClient.findProcessInstanceById(processInstanceId)).thenReturn(processInstanceSpy); service.getProcessInstance(new ProcessInstanceKey(serverTemplateId, containerId, processInstanceId)); verify(processInstanceSpy).getProcessId(); verify(processInstanceSpy).getState(); verify(processInstanceSpy).getContainerId(); verify(processInstanceSpy).getProcessVersion(); verify(processInstanceSpy).getCorrelationKey(); verify(processInstanceSpy).getParentId(); verify(processInstanceSpy).getSlaCompliance(); verify(processInstanceSpy).getSlaDueDate(); verifyActiveUserTasks(taskSummaryListSpy, taskSummaryMock); verifyCurrentActivities(processInstanceId); }
@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 testProcessWithBusinessRuleTask() throws Exception { Long processInstanceId = null; try { Object john = createPersonInstance(PERSON_JOHN); Map<String, Object> parameters = new HashMap<>(); parameters.put("person", john); processInstanceId = processClient.startProcess(CONTAINER_ID, RULE_PROCESS_ID, parameters); assertNotNull(processInstanceId); assertTrue(processInstanceId.longValue() > 0); ProcessInstance processInstance = queryClient.findProcessInstanceById(processInstanceId); assertNotNull(processInstance); assertEquals(org.kie.api.runtime.process.ProcessInstance.STATE_COMPLETED, processInstance.getState().intValue()); List<VariableInstance> variables = queryClient.findVariablesCurrentState(processInstanceId); assertNotNull(variables); assertEquals(2, variables.size()); Map<String, String> mappedVars = variables.stream().collect(Collectors.toMap(VariableInstance::getVariableName, VariableInstance::getValue)); assertEquals("Person{name='john' age='35'}", mappedVars.get("person")); processInstanceId = null; } finally { if (processInstanceId != null) { processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); } } }
List<ProcessInstance> returnedProcessInstances = new ArrayList<ProcessInstance>(); ProcessInstance instance = queryClient.findProcessInstanceById(processInstanceId); returnedProcessInstances.add(instance);
ProcessInstance processInstance = queryClient.findProcessInstanceById(processInstanceId, true); assertNotNull(processInstance); assertEquals(processInstanceId, processInstance.getId());
@Test @Category(Smoke.class) public void testGetProcessInstanceById() throws Exception { Map<String, Object> parameters = new HashMap<String, Object>(); Long processInstanceId = processClient.startProcess(CONTAINER_ID, PROCESS_ID_EVALUATION, parameters); try { ProcessInstance instance = queryClient.findProcessInstanceById(processInstanceId); assertNotNull(instance); assertEquals(processInstanceId, instance.getId()); assertEquals(PROCESS_ID_EVALUATION, instance.getProcessId()); assertEquals("evaluation", instance.getProcessName()); assertEquals("1.0", instance.getProcessVersion()); assertEquals(USER_YODA, instance.getInitiator()); assertEquals(CONTAINER_ID, instance.getContainerId()); assertEquals(processInstanceId.toString(), instance.getCorrelationKey()); assertEquals("evaluation", instance.getProcessInstanceDescription()); assertEquals(-1, instance.getParentId().longValue()); } finally { processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); } }
String processName = "process"; when(queryServicesClient.findProcessInstanceById(processInstanceId)).thenReturn(ProcessInstance.builder().id(processInstanceId).containerId(containerId).processId(processId).state(state).processName(processName).build());
String processName = "process"; when(queryServicesClient.findProcessInstanceById(processInstanceId)).thenReturn(ProcessInstance.builder().id(processInstanceId).containerId(containerId).processId(processId).state(state).processName(processName).build());