@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()); }
@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()); }
.addUserAssignments(CASE_INS_REP_ROLE, USER_JOHN) .data(caseData) .build();
.addDataAccessRestrictions("car", CASE_INSURED_ROLE) .data(caseData) .build();
@Test public void testAddAndRemoveMultipleDataFromCaseFile() { Map<String, Object> caseData = new HashMap<>(); caseData.put("car", "ford"); caseData.put("location", "prague"); CaseFile caseFile = CaseFile.builder() .addUserAssignments(CASE_INSURED_ROLE, USER_YODA) .addUserAssignments(CASE_INS_REP_ROLE, USER_JOHN) .data(caseData) .build(); String caseId = caseClient.startCase(CONTAINER_ID, CLAIM_CASE_DEF_ID, caseFile); Assertions.assertThat(caseId).isNotNull(); Assertions.assertThat(caseId).startsWith(CLAIM_CASE_ID_PREFIX); caseData = caseClient.getCaseInstanceData(CONTAINER_ID, caseId); Assertions.assertThat(caseData).containsOnly(entry("car", "ford"), entry("location", "prague")); caseData = caseClient.getCaseInstanceData(CONTAINER_ID, caseId, Arrays.asList("car", "nonexisting")); Assertions.assertThat(caseData).containsOnly(entry("car", "ford")); caseData = new HashMap<>(); caseData.put("car", "fiat"); caseData.put("location", "brno"); caseData.put("conditions", "sunny"); caseClient.putCaseInstanceData(CONTAINER_ID, caseId, caseData); caseData = caseClient.getCaseInstanceData(CONTAINER_ID, caseId); Assertions.assertThat(caseData).containsOnly(entry("car", "fiat"), entry("location", "brno"), entry("conditions", "sunny")); caseClient.removeCaseInstanceData(CONTAINER_ID, caseId, "location", "conditions", "nonexisting"); caseData = caseClient.getCaseInstanceData(CONTAINER_ID, caseId); Assertions.assertThat(caseData).containsOnly(entry("car", "fiat")); }
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; } }
public String getCaseInstance(String containerId, String caseId, boolean withData, boolean withRoles, boolean withMilestones, boolean withStages, String marshallingType) { verifyContainerId(containerId, caseId); CaseInstance actualCaseInstance = caseService.getCaseInstance(caseId, withData, withRoles, withMilestones, withStages); org.kie.server.api.model.cases.CaseInstance caseInstance = ConvertUtils.transformCaseInstance(actualCaseInstance); if (actualCaseInstance.getStatus().equals(ProcessInstance.STATE_ACTIVE)) { if (withData) { caseInstance.setCaseFile(CaseFile.builder().data(actualCaseInstance.getCaseFile().getData()).build()); } if (withMilestones) { caseInstance.setMilestones(ConvertUtils.transformMilestones(actualCaseInstance.getCaseMilestones())); } if (withStages) { caseInstance.setStages(ConvertUtils.transformStages(actualCaseInstance.getCaseStages())); } if (withRoles) { caseInstance.setRoleAssignments(ConvertUtils.transformRoleAssignment(actualCaseInstance.getCaseRoles())); } } logger.debug("About to marshal case instance with id '{}' {}", caseId, caseInstance); return marshallerHelper.marshal(containerId, marshallingType, caseInstance, new ByCaseIdContainerLocator(caseId)); }
@Test public void testDestroyCaseInstance() { Map<String, Object> caseData = new HashMap<>(); caseData.put("car", "ford"); CaseFile caseFile = CaseFile.builder() .data(caseData) .addUserAssignments(CASE_INSURED_ROLE, USER_YODA) .addUserAssignments(CASE_INS_REP_ROLE, USER_JOHN) .addUserAssignments(CASE_ASSESSOR_ROLE, USER_YODA) .build(); String caseId = caseClient.startCase(CONTAINER_ID, CLAIM_CASE_DEF_ID, caseFile); Assertions.assertThat(caseId).isNotNull(); CaseInstance caseInstance = caseClient.getCaseInstance(CONTAINER_ID, caseId); assertCarInsuranceCaseInstance(caseInstance, caseId, USER_YODA); caseClient.destroyCaseInstance(CONTAINER_ID, caseId); CaseInstance closed = caseClient.getCaseInstance(CONTAINER_ID, caseId); Assertions.assertThat(closed.getCaseStatus()).isEqualTo(3); // Should throw exception because destroyed case cannot be reopen. assertClientException(() -> caseClient.reopenCase(caseId, CONTAINER_ID, CLAIM_CASE_DEF_ID), 404 , 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"); }
@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); }
@Test public void testCaseRolesCardinality() { 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); // Try to add second user to insured role with cardinality 1 assertClientException( () -> caseClient.assignUserToRole(CONTAINER_ID, caseId, CASE_INSURED_ROLE, USER_YODA), 400, "Cannot add more users for role " + CASE_INSURED_ROLE); }
@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 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; }
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; } }
private String startCarInsuranceClaimCase(String insured, String insuranceRep) { CaseFile caseFile = CaseFile.builder() .addUserAssignments(CASE_INSURED_ROLE, insured) .addUserAssignments(CASE_INS_REP_ROLE, insuranceRep) .addUserAssignments(CASE_INS_ASSESSOR_ROLE, insuranceRep) .build(); String caseId = caseClient.startCase(CONTAINER_ID, CLAIM_CASE_DEF_ID, caseFile); assertNotNull(caseId); return caseId; } }
private String startCarInsuranceClaimCase(String insured, String insuranceRep) { CaseFile caseFile = CaseFile.builder() .addUserAssignments(CASE_INSURED_ROLE, insured) .addUserAssignments(CASE_INS_REP_ROLE, insuranceRep) .addUserAssignments(CASE_INS_ASSESSOR_ROLE, insuranceRep) .build(); String caseId = caseClient.startCase(CONTAINER_ID, CLAIM_CASE_DEF_ID, caseFile); assertNotNull(caseId); return caseId; }
private String startCarInsuranceClaimCase(String insured, String insuranceRep, String assessor, Map<String, Object> data) { 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 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")); } }
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; }
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; }