if (caseFile.getUserAssignments() != null) { caseFile.getUserAssignments() .entrySet() .stream() if (caseFile.getGroupAssignments() != null) { caseFile.getGroupAssignments() .entrySet() .stream() if (caseFile.getAccessRestrictions() != null) { accessRestrictions = new HashMap<>(); for (Entry<String, String[]> entry : caseFile.getAccessRestrictions().entrySet()) { accessRestrictions.put(entry.getKey(), Arrays.asList(entry.getValue())); CaseFileInstance caseFileInstance = caseService.newCaseFileInstanceWithRestrictions(containerId, caseDefinitionId, caseFile.getData(), roleAssignments, accessRestrictions); caseId = caseService.startCase(containerId, caseDefinitionId, caseFileInstance);
@Override public String startCase(String containerId, String caseDefinitionId) { return startCase(containerId, caseDefinitionId, new CaseFile()); }
public Builder dataAccessRestrictions(Map<String, String[]> accessRestrictions) { caseFile.setAccessRestrictions(accessRestrictions); return this; }
@Override public String startCaseInstance(final String serverTemplateId, final String containerId, final String caseDefinitionId, final String owner, final List<CaseRoleAssignmentSummary> roleAssignments) { final CaseFile.Builder builder = CaseFile.builder(); builder.addUserAssignments(CASE_OWNER_ROLE, owner); roleAssignments.forEach(a -> { a.getGroups().forEach(g -> builder.addGroupAssignments(a.getName(), g)); a.getUsers().forEach(u -> builder.addUserAssignments(a.getName(), u)); }); return client.startCase(containerId, caseDefinitionId, builder.build()); }
public Builder addUserAssignments(String role, String user) { caseFile.getUserAssignments().put(role, user); return this; }
assertEquals("first case started", caseInstance.getCaseFile().getData().get("s"));
public Builder addGroupAssignments(String role, String group) { caseFile.getGroupAssignments().put(role, group); return this; }
public Builder addDataAccessRestrictions(String dataItem, String... roles) { String[] existingRestrictions = caseFile.getAccessRestrictions().get(dataItem); if (existingRestrictions == null) { existingRestrictions = roles; } else { String[] result = new String[existingRestrictions.length + roles.length]; System.arraycopy(existingRestrictions, 0, result, 0, existingRestrictions.length); System.arraycopy(roles, 0, result, existingRestrictions.length, roles.length); existingRestrictions = result; } caseFile.getAccessRestrictions().put(dataItem, existingRestrictions); return this; } }
@Override public String startCaseInstance(final String containerId, final String caseDefinitionId, final String owner, final List<CaseRoleAssignmentSummary> roleAssignments) { final CaseFile.Builder builder = CaseFile.builder(); builder.addUserAssignments(CASE_OWNER_ROLE, owner); roleAssignments.forEach(a -> { a.getGroups().forEach(g -> builder.addGroupAssignments(a.getName(), g)); a.getUsers().forEach(u -> builder.addUserAssignments(a.getName(), u)); }); return client.startCase(containerId, caseDefinitionId, builder.build()); }
@Test public void testStartCaseInstance() { final String owner = "userx"; final String role = "test"; final String user = "user1"; final List<CaseRoleAssignmentSummary> roles = singletonList(CaseRoleAssignmentSummary.builder().name(role).users(singletonList(user)).build()); testedService.startCaseInstance(containerId, caseDefinitionId, owner, roles); final ArgumentCaptor<CaseFile> caseFileCaptor = ArgumentCaptor.forClass(CaseFile.class); verify(clientMock).startCase(eq(containerId), eq(caseDefinitionId), caseFileCaptor.capture()); final CaseFile caseFile = caseFileCaptor.getValue(); assertEquals(owner, caseFile.getUserAssignments().get(CASE_OWNER_ROLE)); assertEquals(user, caseFile.getUserAssignments().get(role)); }
assertEquals("first case started", caseInstance.getCaseFile().getData().get("s"));
private String startUserTaskCase(String owner, String contact) { Map<String, Object> data = new HashMap<>(); data.put("s", "first case started"); CaseFile caseFile = CaseFile.builder() .addUserAssignments(CASE_OWNER_ROLE, owner) .addUserAssignments(CASE_CONTACT_ROLE, contact) .data(data) .build(); String caseId = caseClient.startCase(CONTAINER_ID, CASE_HR_DEF_ID, caseFile); assertNotNull(caseId); return caseId; }
@Test public void testStartCaseInstance() { final String owner = "userx"; final String role = "test"; final String user = "user1"; final List<CaseRoleAssignmentSummary> roles = singletonList(CaseRoleAssignmentSummary.builder().name(role).users(singletonList(user)).build()); testedService.startCaseInstance(serverTemplateId, containerId, caseDefinitionId, owner, roles); final ArgumentCaptor<CaseFile> caseFileCaptor = ArgumentCaptor.forClass(CaseFile.class); verify(clientMock).startCase(eq(containerId), eq(caseDefinitionId), caseFileCaptor.capture()); final CaseFile caseFile = caseFileCaptor.getValue(); assertEquals(owner, caseFile.getUserAssignments().get(CASE_OWNER_ROLE)); assertEquals(user, caseFile.getUserAssignments().get(role)); }
private String startUserTaskCase(String owner, String contact) { Map<String, Object> data = new HashMap<>(); data.put("s", "first case started"); CaseFile caseFile = CaseFile.builder() .addUserAssignments(CASE_OWNER_ROLE, owner) .addUserAssignments(CASE_CONTACT_ROLE, contact) .data(data) .build(); String caseId = caseClient.startCase(CONTAINER_ID, CASE_HR_DEF_ID, caseFile); assertNotNull(caseId); return caseId; } }
@Test public void testCreateCase() { CaseFile caseFileObj = CaseFile.builder() .addUserAssignments(CASE_OWNER_ROLE, USER_YODA) .addUserAssignments(CASE_CONTACT_ROLE, USER_JOHN) .build(); Entity<CaseFile> caseFile = Entity.entity(caseFileObj, getMediaType()); Map<String, Object> valuesMap = new HashMap<String, Object>(); valuesMap.put(RestURI.CONTAINER_ID, CONTAINER_ID); valuesMap.put(RestURI.CASE_DEF_ID, CASE_HR_DEF_ID); WebTarget clientRequest = newRequest(build(TestConfig.getKieServerHttpUrl(), RestURI.CASE_URI + "/" + RestURI.START_CASE_POST_URI, valuesMap)); logger.debug("Start case: [POST] " + clientRequest.getUri()); response = clientRequest.request(getMediaType()).post(caseFile); Assert.assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus()); String caseId = response.readEntity(JaxbString.class).getValue(); assertNotNull(caseId); }
private String startCarInsuranceClaimCase(String insured, String insuranceRep, String assessor) { Map<String, Object> data = new HashMap<>(); data.put("s", "first case started"); CaseFile caseFile = CaseFile.builder() .addUserAssignments(CASE_INSURED_ROLE, insured) .addUserAssignments(CASE_INS_REP_ROLE, insuranceRep) .addUserAssignments(CASE_ASSESSOR_ROLE, assessor) .data(data) .build(); String caseId = caseClient.startCase(CONTAINER_ID, CLAIM_CASE_DEF_ID, caseFile); assertNotNull(caseId); return caseId; }
@Test public void testCreateCaseWithEmptyCaseFileButWithRoleAssignments() { CaseFile caseFile = CaseFile.builder().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); Assertions.assertThat(caseId).isNotNull(); Assertions.assertThat(caseId).startsWith(CLAIM_CASE_ID_PREFIX); CaseInstance caseInstance = caseClient.getCaseInstance(CONTAINER_ID, caseId); assertCarInsuranceCaseInstance(caseInstance, caseId, USER_YODA); List<TaskSummary> tasks = taskClient.findTasksAssignedAsPotentialOwner(USER_YODA, 0, 10); assertEquals(1, tasks.size()); TaskSummary task = tasks.get(0); Assertions.assertThat(task).isNotNull(); Assertions.assertThat(task.getName()).isEqualTo(ACCIDENT_TASK_NAME); Assertions.assertThat(task.getActualOwner()).isNull(); Assertions.assertThat(task.getStatus()).isEqualTo("Ready"); }
private String startUserTaskCase(String owner, String contact) { Map<String, Object> data = new HashMap<>(); data.put("s", "first case started"); CaseFile caseFile = CaseFile.builder() .addUserAssignments(CASE_OWNER_ROLE, owner) .addUserAssignments(CASE_CONTACT_ROLE, contact) .data(data) .build(); String caseId = caseClient.startCase(CONTAINER_ID, CASE_HR_DEF_ID, caseFile); assertNotNull(caseId); return caseId; }
CaseFile caseFile = CaseFile.builder().addUserAssignments(CASE_INSURED_ROLE, USER_YODA) .addUserAssignments(CASE_INS_REP_ROLE, USER_JOHN) .data(caseData)
@Test public void testCustomCaseId() throws Exception { Assume.assumeFalse(TestConfig.isLocalServer()); Map<String, Object> data = new HashMap<>(); data.put("s", "first case started"); CaseFile caseFile = CaseFile.builder() .addUserAssignments(CASE_OWNER_ROLE, USER_YODA) .data(data) .build(); String caseId = caseClient.startCase(CONTAINER_ID, CASE_HR_DEF_ID, caseFile); assertNotNull(caseId); assertTrue("Created Case Id doesn't start with expected value, value is: " + caseId, caseId.startsWith("HR-01234")); } }