RemoteProcessRuntimeDataServiceImpl extends AbstractKieServerService implements ProcessRuntimeDataService { @Override public WorkItemSummary getWorkItemByProcessInstanceId(final String serverTemplateId, final String containerId, final Long processInstanceId, final Long workItemId) { if (serverTemplateId == null || serverTemplateId.isEmpty()) { return null; } ProcessServicesClient processServicesClient = getClient(serverTemplateId, ProcessServicesClient.class); try { final WorkItemInstance workItem = processServicesClient.getWorkItem(containerId, processInstanceId, workItemId); return new WorkItemSummaryMapper().apply(workItem); } catch (KieServicesHttpException kieException) { if (kieException.getHttpCode() == NOT_FOUND_ERROR_CODE) { return null; } else { throw kieException; } } }  @Override ProcessInstanceSummary getProcessInstance(ProcessInstanceKey processInstanceKey); @Override List<NodeInstanceSummary> getProcessInstanceActiveNodes(ProcessInstanceKey processInstanceKey); @Override List<NodeInstanceSummary> getProcessInstanceCompletedNodes(ProcessInstanceKey processInstanceKey); @Override ProcessInstanceDiagramSummary getProcessInstanceDiagramSummary(ProcessInstanceKey processInstanceKey, String completedNodeColor,
                                                                          String completedNodeBorderColor, String activeNodeBorderColor); @Override List<TimerInstanceSummary> getProcessInstanceTimerInstances(ProcessInstanceKey processInstanceKey); @Override void triggerProcessInstanceNode(ProcessInstanceKey processInstanceKey,
                                           Long nodeId); @Override void cancelProcessInstanceNode(ProcessInstanceKey processInstanceKey,
                                          Long nodeInstanceId); @Override void reTriggerProcessInstanceNode(ProcessInstanceKey processInstanceKey,
                                             Long nodeInstanceId); @Override void rescheduleTimerInstance(ProcessInstanceKey processInstanceKey,
                                        TimerInstanceSummary summary); @Override List<ProcessSummary> getProcesses(String serverTemplateId,
                                             Integer page,
                                             Integer pageSize,
                                             String sort,
                                             Boolean sortOrder); @Override ProcessSummary getProcess(final ProcessDefinitionKey processDefinitionKey); @Override List<ProcessSummary> getProcessesByFilter(String serverTemplateId,
                                                     String textSearch,
                                                     Integer page,
                                                     Integer pageSize,
                                                     String sort,
                                                     Boolean sortOrder); @Override List<TaskDefSummary> getProcessUserTasks(final String serverTemplateId,
                                                    final String containerId,
                                                    final String processId); @Override WorkItemSummary getWorkItemByProcessInstanceId(final String serverTemplateId,
                                                          final String containerId,
                                                          final Long processInstanceId,
                                                          final Long workItemId); @Override ProcessInstanceSummary getProcessInstanceByCorrelationKey(String serverTemplateId, String correlationKey); static int NOT_FOUND_ERROR_CODE; }
@Test public void testGetWorkItemByProcessInstanceId() { Long workItemId = 1L; Long processInstanceId = 2L; WorkItemInstance workItem = WorkItemInstance.builder() .id(workItemId) .parameters(singletonMap("key", "value")) .build(); when(processServicesClient.getWorkItem(containerId, processInstanceId, workItemId)).thenReturn(workItem); final WorkItemSummary summary = service.getWorkItemByProcessInstanceId(serverTemplateId, containerId, processInstanceId, workItemId); assertNotNull(summary); assertWorkItemSummary(workItem, summary); }