@Override public void acknowledgeError(String serverTemplateId, String deploymentId, String... errorId) { ProcessAdminServicesClient processAdminServicesClient = getClient(serverTemplateId, ProcessAdminServicesClient.class); processAdminServicesClient.acknowledgeError(deploymentId, errorId); }
@Override public void cancelProcessInstanceNode(ProcessInstanceKey processInstanceKey, Long nodeInstanceId) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return; } ProcessAdminServicesClient servicesClient = getClient(processInstanceKey.getServerTemplateId(), ProcessAdminServicesClient.class); servicesClient.cancelNodeInstance(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId(), nodeInstanceId); }
@Override public ExecutionErrorSummary getError(String serverTemplateId, String deploymentId, String errorId) { ProcessAdminServicesClient processAdminServicesClient = getClient(serverTemplateId, ProcessAdminServicesClient.class); Optional<ExecutionErrorInstance> executionErrorInstance = ofNullable(processAdminServicesClient.getError(deploymentId, errorId)); return executionErrorInstance.map(new ExecutionErrorSummaryMapper()).orElse(null); } }
@Override public void rescheduleTimerInstance(ProcessInstanceKey processInstanceKey, TimerInstanceSummary summary) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return; } ProcessAdminServicesClient servicesClient = getClient(processInstanceKey.getServerTemplateId(), ProcessAdminServicesClient.class); if (summary.isRelative()) { servicesClient.updateTimerRelative(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId(), summary.getId(), summary.getDelay(), summary.getPeriod(), summary.getRepeatLimit()); } else { servicesClient.updateTimer(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId(), summary.getId(), summary.getDelay(), summary.getPeriod(), summary.getRepeatLimit()); } }
processInstanceId = processClient.startProcess(CONTAINER_ID, PROCESS_ID_SIGNAL_PROCESS, parameters); List<ExecutionErrorInstance> errors = processAdminClient.getErrorsByProcessInstance(CONTAINER_ID, processInstanceId, false, 0, 10); assertNotNull(errors); assertEquals(0, errors.size()); errors = processAdminClient.getErrorsByProcessInstance(CONTAINER_ID, processInstanceId, false, 0, 10); assertNotNull(errors); assertEquals(1, errors.size()); assertNull(errorInstance.getAcknowledgedBy()); errors = processAdminClient.getErrorsByProcessInstanceAndNode(CONTAINER_ID, processInstanceId, "Signal 1 data", false, 0, 10); assertNotNull(errors); assertEquals(1, errors.size()); assertEquals(errorInstance.getErrorId(), errorInstance2.getErrorId()); processAdminClient.acknowledgeError(CONTAINER_ID, errorInstance.getErrorId()); errors = processAdminClient.getErrorsByProcessInstance(CONTAINER_ID, processInstanceId, false, 0, 10); assertNotNull(errors); assertEquals(0, errors.size()); errorInstance = processAdminClient.getError(CONTAINER_ID, errorInstance.getErrorId()); assertNotNull(errorInstance); assertNotNull(errorInstance.getErrorId());
assertTrue(processInstanceId.longValue() > 0); List<NodeInstance> activeNodeInstances = processAdminClient.getActiveNodeInstances(CONTAINER_ID, processInstanceId); assertNotNull(activeNodeInstances); assertEquals(1, activeNodeInstances.size()); assertEquals("Evaluate items?", active.getName()); processAdminClient.cancelNodeInstance(CONTAINER_ID, processInstanceId, active.getId()); activeNodeInstances = processAdminClient.getActiveNodeInstances(CONTAINER_ID, processInstanceId); assertNotNull(activeNodeInstances); assertEquals(0, activeNodeInstances.size()); List<ProcessNode> processNodes = processAdminClient.getProcessNodes(CONTAINER_ID, processInstanceId); ProcessNode first = processNodes.stream().filter(pn -> pn.getNodeName().equals("Evaluate items?")).findFirst().orElse(null); assertNotNull(first); processAdminClient.triggerNode(CONTAINER_ID, processInstanceId, first.getNodeId()); activeNodeInstances = processAdminClient.getActiveNodeInstances(CONTAINER_ID, processInstanceId); assertNotNull(activeNodeInstances); assertEquals(1, activeNodeInstances.size());
List<ExecutionErrorInstance> errors = processAdminClient.getErrors(CONTAINER_ID, false, 0, 10); errors = filterErrorsByProcessId(errors, PROCESS_ID_TIMER); assertNotNull(errors); assertNull(errorInstance2.getAcknowledgedBy()); processAdminClient.acknowledgeError(CONTAINER_ID, errorInstance.getErrorId(), errorInstance2.getErrorId()); errors = processAdminClient.getErrors(CONTAINER_ID, false, 0, 10); errors = filterErrorsByProcessId(errors, PROCESS_ID_TIMER); assertNotNull(errors); assertEquals(0, errors.size()); errorInstance = processAdminClient.getError(CONTAINER_ID, errorInstance.getErrorId()); assertNotNull(errorInstance); assertNotNull(errorInstance.getErrorId());
@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(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()); } }
@Override public void reTriggerProcessInstanceNode(ProcessInstanceKey processInstanceKey, Long nodeInstanceId) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return; } ProcessAdminServicesClient servicesClient = getClient(processInstanceKey.getServerTemplateId(), ProcessAdminServicesClient.class); servicesClient.retriggerNodeInstance(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId(), nodeInstanceId); }
@Override public void triggerProcessInstanceNode(ProcessInstanceKey processInstanceKey, Long nodeId) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return; } ProcessAdminServicesClient servicesClient = getClient(processInstanceKey.getServerTemplateId(), ProcessAdminServicesClient.class); servicesClient.triggerNode(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId(), nodeId); }
@Test public void testRetrigger() throws Exception { Map<String, Object> parameters = new HashMap<String, Object>(); Long processInstanceId = null; try { processInstanceId = processClient.startProcess(CONTAINER_ID, PROCESS_ID_EVALUATION, parameters); assertNotNull(processInstanceId); assertTrue(processInstanceId.longValue() > 0); List<NodeInstance> activeNodeInstances = processAdminClient.getActiveNodeInstances(CONTAINER_ID, processInstanceId); assertNotNull(activeNodeInstances); assertEquals(1, activeNodeInstances.size()); NodeInstance active = activeNodeInstances.get(0); assertEquals("Evaluate items?", active.getName()); processAdminClient.retriggerNodeInstance(CONTAINER_ID, processInstanceId, active.getId()); activeNodeInstances = processAdminClient.getActiveNodeInstances(CONTAINER_ID, processInstanceId); assertNotNull(activeNodeInstances); assertEquals(1, activeNodeInstances.size()); NodeInstance activeTriggered = activeNodeInstances.get(0); assertEquals("Evaluate items?", activeTriggered.getName()); assertFalse(activeTriggered.getId().longValue() == active.getId().longValue()); } finally { if (processInstanceId != null) { processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); } } }
@Override public void rescheduleTimerInstance(ProcessInstanceKey processInstanceKey, TimerInstanceSummary summary) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return; } ProcessAdminServicesClient servicesClient = getClient(processInstanceKey.getServerTemplateId(), ProcessAdminServicesClient.class); if (summary.isRelative()) { servicesClient.updateTimerRelative(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId(), summary.getId(), summary.getDelay(), summary.getPeriod(), summary.getRepeatLimit()); } else { servicesClient.updateTimer(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId(), summary.getId(), summary.getDelay(), summary.getPeriod(), summary.getRepeatLimit()); } }
processInstanceId = processClient.startProcess(CONTAINER_ID, PROCESS_ID_SIGNAL_PROCESS, parameters); List<ExecutionErrorInstance> errors = processAdminClient.getErrorsByProcessInstance(CONTAINER_ID, processInstanceId , false, 0, 10); assertNotNull(errors); assertEquals(0, errors.size()); assertNull(errorInstance.getAcknowledgedBy()); errors = processAdminClient.getErrorsByProcessInstanceAndNode(CONTAINER_ID, processInstanceId, "Signal 1 data", false, 0, 10); assertNotNull(errors); assertEquals(1, errors.size()); assertEquals(errorInstance.getErrorId(), errorInstance2.getErrorId()); processAdminClient.acknowledgeError(CONTAINER_ID, errorInstance.getErrorId()); errors = processAdminClient.getErrorsByProcessInstance(CONTAINER_ID, processInstanceId, false, 0, 10); assertNotNull(errors); assertEquals(0, errors.size()); errorInstance = processAdminClient.getError(CONTAINER_ID, errorInstance.getErrorId()); assertNotNull(errorInstance); assertNotNull(errorInstance.getErrorId());
List<ExecutionErrorInstance> errors = processAdminClient.getErrors(CONTAINER_ID, false, 0, 10); errors = filterErrorsByProcessId(errors, PROCESS_ID_TIMER); assertNotNull(errors); assertNull(errorInstance.getAcknowledgedBy()); processAdminClient.acknowledgeError(CONTAINER_ID, errorInstance.getErrorId()); errors = processAdminClient.getErrors(CONTAINER_ID, false, 0, 10); errors = filterErrorsByProcessId(errors, PROCESS_ID_TIMER); assertNotNull(errors); assertEquals(0, errors.size()); errorInstance = processAdminClient.getError(CONTAINER_ID, errorInstance.getErrorId()); assertNotNull(errorInstance); assertNotNull(errorInstance.getErrorId());
@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 void reTriggerProcessInstanceNode(ProcessInstanceKey processInstanceKey, Long nodeInstanceId) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return; } ProcessAdminServicesClient servicesClient = getClient(processInstanceKey.getServerTemplateId(), ProcessAdminServicesClient.class); servicesClient.retriggerNodeInstance(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId(), nodeInstanceId); }
@Override public void triggerProcessInstanceNode(ProcessInstanceKey processInstanceKey, Long nodeId) { if (processInstanceKey == null || processInstanceKey.isValid() == false) { return; } ProcessAdminServicesClient servicesClient = getClient(processInstanceKey.getServerTemplateId(), ProcessAdminServicesClient.class); servicesClient.triggerNode(processInstanceKey.getDeploymentId(), processInstanceKey.getProcessInstanceId(), nodeId); }
summary); verify(processAdminServicesClient).updateTimer(containerId, processInstanceId, summary.getId(), summary); verify(processAdminServicesClient).updateTimerRelative(containerId, processInstanceId, summary.getId(),