@Override public String startCaseInstance(final String serverTemplateId, final String containerId, final String caseDefinitionId) { return client.startCase(containerId, caseDefinitionId); }
@Override public void addComment(final String serverTemplateId, final String containerId, final String caseId, final String author, final String text) { client.addComment(containerId, caseId, author, text); }
@Override public void cancelCaseInstance(final String serverTemplateId, final String containerId, final String caseId) { client.cancelCaseInstance(containerId, caseId); }
caseClient.assignUserToRole(CONTAINER_ID, caseId, CASE_CONTACT_ROLE, USER_YODA); List<CaseComment> comments = caseClient.getComments(CONTAINER_ID, caseId, 0, 10); assertNotNull(comments); assertEquals(0, comments.size()); caseClient.addComment(CONTAINER_ID, caseId, USER_YODA, "first comment", restrictions); comments = caseClient.getComments(CONTAINER_ID, caseId, 0, 10); assertNotNull(comments); assertEquals(1, comments.size()); caseClient.removeUserFromRole(CONTAINER_ID, caseId, CASE_OWNER_ROLE, USER_YODA); comments = caseClient.getComments(CONTAINER_ID, caseId, 0, 10); assertNotNull(comments); assertEquals(0, comments.size()); assertClientException(() -> caseClient.updateComment(CONTAINER_ID, caseId, commentId, USER_YODA, "updated comment"), 403, ""); caseClient.assignUserToRole(CONTAINER_ID, caseId, CASE_OWNER_ROLE, USER_YODA); caseClient.updateComment(CONTAINER_ID, caseId, comment.getId(), USER_YODA, "updated comment"); comments = caseClient.getComments(CONTAINER_ID, caseId, 0, 10); assertNotNull(comments); assertEquals(1, comments.size()); caseClient.removeUserFromRole(CONTAINER_ID, caseId, CASE_OWNER_ROLE, USER_YODA);
CaseInstance caseInstance = caseClient.getCaseInstance(CONTAINER_ID, caseId); assertHrCaseInstance(caseInstance, caseId, USER_YODA); List<CaseInstance> caseInstances = caseClient.getCaseInstancesOwnedBy(USER_YODA, null, 0, 10); assertEquals(1, caseInstances.size()); List<CaseMilestone> milestones = caseClient.getMilestones(CONTAINER_ID, caseId, true, 0, 10); assertNotNull(milestones); assertEquals(0, milestones.size()); caseClient.triggerAdHocFragment(CONTAINER_ID, caseId, "Milestone1", null); milestones = caseClient.getMilestones(CONTAINER_ID, caseId, true, 0, 10); assertNotNull(milestones); assertEquals(1, milestones.size()); caseClient.triggerAdHocFragment(CONTAINER_ID, caseId, "Milestone2", null); milestones = caseClient.getMilestones(CONTAINER_ID, caseId, true, 0, 10); assertNotNull(milestones); assertEquals(1, milestones.size()); milestones = caseClient.getMilestones(CONTAINER_ID, caseId, false, 0, 10); assertNotNull(milestones); assertEquals(2, milestones.size()); caseInstances = caseClient.getCaseInstances(0, 10); assertEquals(1, caseInstances.size()); caseClient.putCaseInstanceData(CONTAINER_ID, caseId, "dataComplete", true);
assertTrue(caseId.startsWith(CASE_HR_ID_PREFIX)); List<CaseComment> comments = caseClient.getComments(CONTAINER_ID, caseId, 0, 10); assertNotNull(comments); assertEquals(0, comments.size()); String commentId = caseClient.addComment(CONTAINER_ID, caseId, USER_YODA, "first comment"); assertNotNull(commentId); comments = caseClient.getComments(CONTAINER_ID, caseId, 0, 10); assertNotNull(comments); assertEquals(1, comments.size()); caseClient.updateComment(CONTAINER_ID, caseId, comment.getId(), USER_YODA, "updated comment"); comments = caseClient.getComments(CONTAINER_ID, caseId, 0, 10); assertNotNull(comments); assertEquals(1, comments.size()); assertNotNull(comment.getId()); caseClient.removeComment(CONTAINER_ID, caseId, comment.getId()); comments = caseClient.getComments(CONTAINER_ID, caseId, 0, 10); assertNotNull(comments); assertEquals(0, comments.size());
@Test public void testTriggerNotExistingAdHocFragments() { String caseId = startUserTaskCase(USER_YODA, USER_JOHN); assertNotNull(caseId); assertTrue(caseId.startsWith(CASE_HR_ID_PREFIX)); CaseInstance caseInstance = caseClient.getCaseInstance(CONTAINER_ID, caseId); assertHrCaseInstance(caseInstance, caseId, USER_YODA); List<CaseInstance> caseInstances = caseClient.getCaseInstancesOwnedBy(USER_YODA, null, 0, 10); assertEquals(1, caseInstances.size()); List<CaseMilestone> milestones = caseClient.getMilestones(CONTAINER_ID, caseId, true, 0, 10); assertNotNull(milestones); assertEquals(0, milestones.size()); final String nonExistingAdHocFragment = "not existing"; assertClientException( () -> caseClient.triggerAdHocFragment(CONTAINER_ID, caseId, nonExistingAdHocFragment, Collections.EMPTY_MAP), 404, "AdHoc fragment '" + nonExistingAdHocFragment + "' not found in case " + caseId ); }
@Test public void testCreateCancelAndReopenCaseWithEmptyCaseFile() { String caseId = startCarInsuranceClaimCase(USER_YODA, USER_JOHN, USER_YODA); Assertions.assertThat(caseId).isNotNull(); Assertions.assertThat(caseId).startsWith(CLAIM_CASE_ID_PREFIX); CaseInstance caseInstance = caseClient.getCaseInstance(CONTAINER_ID, caseId); assertCarInsuranceCaseInstance(caseInstance, caseId, USER_YODA); caseClient.cancelCaseInstance(CONTAINER_ID, caseId); CaseInstance closed = caseClient.getCaseInstance(CONTAINER_ID, caseId); Assertions.assertThat(closed.getCaseStatus()).isEqualTo(3); Map<String, Object> data = new HashMap<>(); data.put("additionalComment", "reopening the case"); caseClient.reopenCase(caseId, CONTAINER_ID, CLAIM_CASE_DEF_ID, data); caseInstance = caseClient.getCaseInstance(CONTAINER_ID, caseId); Assertions.assertThat(caseInstance).isNotNull(); Assertions.assertThat(caseInstance.getCaseId()).isEqualTo(caseId); Object additionalComment = caseClient.getCaseInstanceData(CONTAINER_ID, caseId, "additionalComment"); Assertions.assertThat(additionalComment).isNotNull(); Assertions.assertThat(additionalComment).isEqualTo("reopening the case"); }
@Override public List<CaseDefinitionSummary> getCaseDefinitions() { final List<CaseDefinition> caseDefinitions = client.getCaseDefinitions(0, PAGE_SIZE_UNLIMITED, CaseServicesClient.SORT_BY_CASE_DEFINITION_NAME, true); return caseDefinitions.stream().map(new CaseDefinitionMapper()).collect(toList()); }
@Override public CaseDefinitionSummary getCaseDefinition(final String serverTemplateId, final String containerId, final String caseDefinitionId) { return ofNullable(client.getCaseDefinition(containerId, caseDefinitionId)).map(new CaseDefinitionMapper()).orElse(null); }
@Override public CaseInstanceSummary getCaseInstance(final String serverTemplateId, final String containerId, final String caseId) { return ofNullable(client.getCaseInstance(containerId, caseId, true, true, true, true)) .map(new CaseInstanceMapper()) .orElse(null); }
@Test public void testTriggerTaskInCanceledCase() throws Exception { String caseId = startUserTaskCase(USER_YODA, USER_JOHN); assertNotNull(caseId); assertTrue(caseId.startsWith(CASE_HR_ID_PREFIX)); List<TaskSummary> caseTasks = caseClient.findCaseTasksAssignedAsPotentialOwner(caseId, USER_YODA, 0, 10); assertNotNull(caseTasks); assertEquals(1, caseTasks.size()); caseClient.cancelCaseInstance(CONTAINER_ID, caseId); assertClientException( () -> caseClient.triggerAdHocFragment(CONTAINER_ID, caseId, HELLO_2_TASK, Collections.EMPTY_MAP), 404, "Could not find case instance \"" + caseId + "\"", "Case with id " + caseId + " was not found"); caseClient.destroyCaseInstance(CONTAINER_ID, caseId); }
@Override public List<CaseCommentSummary> getComments(final String serverTemplateId, final String containerId, final String caseId, final Integer page, final Integer pageSize) { final List<CaseComment> caseComments = client.getComments(containerId, caseId, page, pageSize); return caseComments.stream().map(new CaseCommentMapper()).collect(toList()); }
@Override public List<CaseInstanceSummary> getCaseInstances(final CaseInstanceSearchRequest request) { final List<CaseInstance> caseInstances = client.getCaseInstances(singletonList(request.getStatus()), 0, PAGE_SIZE_UNLIMITED); final Comparator<CaseInstanceSummary> comparator = getCaseInstanceSummaryComparator(request); return caseInstances.stream().map(new CaseInstanceMapper()).sorted(comparator).collect(toList()); }
assertTrue(caseId.startsWith(CASE_HR_ID_PREFIX)); caseClient.assignUserToRole(CONTAINER_ID, caseId, CASE_CONTACT_ROLE, USER_MARY); List<CaseComment> comments = caseClient.getComments(CONTAINER_ID, caseId, 0, 10); assertNotNull(comments); assertEquals(0, comments.size()); try { caseClient.addComment(CONTAINER_ID, caseId, USER_YODA, "yoda's comment"); changeUser(USER_JOHN); caseClient.addComment(CONTAINER_ID, caseId, USER_JOHN, "john's comment"); changeUser(USER_MARY); caseClient.addComment(CONTAINER_ID, caseId, USER_MARY, "mary's comment"); comments = caseClient.getComments(CONTAINER_ID, caseId, 0, 10); assertNotNull(comments); assertEquals(3, comments.size()); assertNotNull(comment.getId()); comments = caseClient.getComments(CONTAINER_ID, caseId, CaseServicesClient.COMMENT_SORT_BY_AUTHOR, 0, 10); assertNotNull(comments); assertEquals(3, comments.size()); comments = caseClient.getComments(CONTAINER_ID, caseId, CaseServicesClient.COMMENT_SORT_BY_DATE, 0, 10); assertNotNull(comments); assertEquals(3, comments.size());
@Override public void removeComment(final String serverTemplateId, final String containerId, final String caseId, final String commentId) { client.removeComment(containerId, caseId, commentId); }
@Test public void testGetCaseInstancesByStatus() { List<CaseInstance> caseInstances = caseClient.getCaseInstances(Arrays.asList(CaseStatus.CANCELLED.getName()), 0, 1000); assertNotNull(caseInstances); int abortedCaseInstanceCount = caseInstances.size(); String caseId = startUserTaskCase(USER_YODA, USER_JOHN); caseInstances = caseClient.getCaseInstances(Arrays.asList(CaseStatus.OPEN.getName()), 0, 10); assertEquals(1, caseInstances.size()); assertHrCaseInstance(caseInstances.get(0), caseId, USER_YODA); caseClient.cancelCaseInstance(CONTAINER_ID, caseId); caseInstances = caseClient.getCaseInstances(Arrays.asList(CaseStatus.CANCELLED.getName()), 0, 1000); assertNotNull(caseInstances); assertEquals(abortedCaseInstanceCount + 1, caseInstances.size()); }
@Override public List<CaseMilestoneSummary> getCaseMilestones(final String containerId, final String caseId, final CaseMilestoneSearchRequest request) { final List<CaseMilestone> caseMilestones = client.getMilestones(containerId, caseId, false, 0, PAGE_SIZE_UNLIMITED); final Comparator<CaseMilestoneSummary> comparator = getCaseMilestoneSummaryComparator(request); return caseMilestones.stream().map(new CaseMilestoneMapper()).sorted(comparator).collect(toList()); }
caseClient.addComment(CONTAINER_ID, caseId, USER_YODA, "comment" + i); List<CaseComment> firstPage = caseClient.getComments(CONTAINER_ID, caseId, 0, pageSize); assertNotNull(firstPage); assertEquals(20, firstPage.size()); List<CaseComment> secondPage = caseClient.getComments(CONTAINER_ID, caseId, 1, pageSize); assertNotNull(secondPage); assertEquals(20, secondPage.size()); List<CaseComment> thirdPage = caseClient.getComments(CONTAINER_ID, caseId, 2, pageSize); assertNotNull(thirdPage); assertEquals(15, thirdPage.size());
@Test public void testAddDynamicProcessToCaseNotExistingProcessDefinition() { String invalidProcessId = "not-existing-process-id"; Map<String, Object> data = new HashMap<>(); data.put("s", "first case started"); CaseFile caseFile = CaseFile.builder() .data(data) .addUserAssignments(CASE_INSURED_ROLE, USER_YODA) .addUserAssignments(CASE_INS_REP_ROLE, USER_JOHN) .build(); String caseId = caseClient.startCase(CONTAINER_ID, CLAIM_CASE_DEF_ID, caseFile); assertNotNull(caseId); assertClientException(() -> caseClient.addDynamicSubProcess(CONTAINER_ID, caseId, invalidProcessId, null), 404, "Could not find process definition \"" + invalidProcessId + "\" in container \"" + CONTAINER_ID + "\"", "No process definition found with id: " + invalidProcessId); }