@Override public List<TimerInstanceSummary> getProcessInstanceTimerInstances(ProcessInstanceKey processInstanceKey) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return emptyList(); } ProcessAdminServicesClient servicesClient = getClient(processInstanceKey.getServerTemplateId(), ProcessAdminServicesClient.class); return servicesClient.getTimerInstances(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId()).stream().map(new TimerInstanceSummaryMapper()).collect(toList()); }
@Override public List<TimerInstanceSummary> getProcessInstanceTimerInstances(ProcessInstanceKey processInstanceKey) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return emptyList(); } ProcessAdminServicesClient servicesClient = getClient(processInstanceKey.getServerTemplateId(), ProcessAdminServicesClient.class); return servicesClient.getTimerInstances(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId()).stream().map(new TimerInstanceSummaryMapper()).collect(toList()); }
@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 testGetProcessInstanceTimerInstances() { ProcessInstanceKey instanceKey = new ProcessInstanceKey(serverTemplateId, containerId, processInstanceId); List<TimerInstance> timerInstances = Arrays.asList(TimerInstance.builder().id(1l).timerId(0l).timerName("timer1").period(2l).delay(1).build(), TimerInstance.builder().id(2l).timerId(1l).timerName("time2").period(1l).delay(2).build()); when(processAdminServicesClient.getTimerInstances(containerId, processInstanceId)).thenReturn(timerInstances); List<TimerInstanceSummary> timers = service.getProcessInstanceTimerInstances(instanceKey); assertThat(timers).hasSize(2).containsExactly(TimerInstanceSummary.builder().withId(1l).withTimerId(0l).withName("timer1").withPeriod(2l).withDelay(1l).build(), TimerInstanceSummary.builder().withId(2l).withTimerId(1l).withName("time2").withPeriod(1l).withDelay(2l).build()); }
@Test(timeout = 60 * 1000) public void testUpdateTimerRelative() throws Exception { Map<String, Object> parameters = new HashMap<>(); parameters.put("timer", "1h"); Long processInstanceId = processClient.startProcess(CONTAINER_ID, PROCESS_ID_TIMER, parameters); assertNotNull(processInstanceId); assertTrue(processInstanceId.longValue() > 0); try { List<TimerInstance> timers = processAdminClient.getTimerInstances(CONTAINER_ID, processInstanceId); assertNotNull(timers); assertEquals(1, timers.size()); TimerInstance timerInstance = timers.get(0); assertNotNull(timerInstance); assertEquals("timer", timerInstance.getTimerName()); assertNotNull(timerInstance.getId()); assertNotNull(timerInstance.getTimerId()); processAdminClient.updateTimerRelative(CONTAINER_ID, processInstanceId, timerInstance.getId(), 3, 0, 0); KieServerSynchronization.waitForProcessInstanceToFinish(processClient, CONTAINER_ID, processInstanceId); ProcessInstance pi = processClient.getProcessInstance(CONTAINER_ID, processInstanceId); assertNotNull(pi); assertEquals(org.kie.api.runtime.process.ProcessInstance.STATE_COMPLETED, pi.getState().intValue()); } catch (Exception e){ processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); fail(e.getMessage()); } }
@Test(timeout = 60 * 1000) public void testUpdateTimer() throws Exception { Map<String, Object> parameters = new HashMap<>(); parameters.put("timer", "1h"); Long processInstanceId = processClient.startProcess(CONTAINER_ID, PROCESS_ID_TIMER, parameters); assertNotNull(processInstanceId); assertTrue(processInstanceId.longValue() > 0); try { List<TimerInstance> timers = processAdminClient.getTimerInstances(CONTAINER_ID, processInstanceId); assertNotNull(timers); assertEquals(1, timers.size()); TimerInstance timerInstance = timers.get(0); assertNotNull(timerInstance); assertEquals("timer", timerInstance.getTimerName()); assertNotNull(timerInstance.getId()); assertNotNull(timerInstance.getTimerId()); processAdminClient.updateTimer(CONTAINER_ID, processInstanceId, timerInstance.getId(), 3, 0, 0); KieServerSynchronization.waitForProcessInstanceToFinish(processClient, CONTAINER_ID, processInstanceId); ProcessInstance pi = processClient.getProcessInstance(CONTAINER_ID, processInstanceId); assertNotNull(pi); assertEquals(org.kie.api.runtime.process.ProcessInstance.STATE_COMPLETED, pi.getState().intValue()); } catch (Exception e){ processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); fail(e.getMessage()); } }
@Test public void testGetProcessInstanceTimerInstances() { ProcessInstanceKey instanceKey = new ProcessInstanceKey(serverTemplateId, containerId, processInstanceId); List<TimerInstance> timerInstances = Arrays.asList(TimerInstance.builder().id(1l).timerId(0l).timerName("timer1").period(2l).delay(1).build(), TimerInstance.builder().id(2l).timerId(1l).timerName("time2").period(1l).delay(2).build()); when(processAdminServicesClient.getTimerInstances(containerId, processInstanceId)).thenReturn(timerInstances); List<TimerInstanceSummary> timers = service.getProcessInstanceTimerInstances(instanceKey); assertThat(timers).hasSize(2).containsExactly(TimerInstanceSummary.builder().withId(1l).withTimerId(0l).withName("timer1").withPeriod(2l).withDelay(1l).build(), TimerInstanceSummary.builder().withId(2l).withTimerId(1l).withName("time2").withPeriod(1l).withDelay(2l).build()); }
TimerInstance.builder().id(2l).timerId(2l).timerName("time2").processInstanceId(processInstanceId).repeatLimit(1).period(1l).delay(2).build()); when(processAdminServicesClient.getTimerInstances(containerId, processInstanceId)).thenReturn(timerInstances);
TimerInstance.builder().id(2l).timerId(2l).timerName("time2").processInstanceId(processInstanceId).repeatLimit(1).period(1l).delay(2).build()); when(processAdminServicesClient.getTimerInstances(containerId, processInstanceId)).thenReturn(timerInstances);