@Override public CaseStageSummary apply(final CaseStage stage) { if (stage == null) { return null; } final CaseStageSummary stageSummary = CaseStageSummary.builder() .name(stage.getName()) .identifier(stage.getIdentifier()) .status(stage.getStatus()) .build(); stageSummary.setAdHocActions(ofNullable(stage.getAdHocFragments()).orElse(emptyList()) .stream() .map(new CaseActionAdHocMapper(stageSummary)) .collect(toList())); return stageSummary; } }
@Override public CaseStageSummary apply(final CaseStage stage) { if (stage == null) { return null; } final CaseStageSummary stageSummary = CaseStageSummary.builder() .name(stage.getName()) .identifier(stage.getIdentifier()) .status(stage.getStatus()) .build(); stageSummary.setAdHocActions(ofNullable(stage.getAdHocFragments()).orElse(emptyList()) .stream() .map(new CaseActionAdHocMapper(stageSummary)) .collect(toList())); return stageSummary; } }
@Test public void testAddDynamicSubProcessToInactiveStage() { String caseId = startCarInsuranceClaimCase(USER_YODA, USER_JOHN, USER_YODA); List<CaseStage> caseStages = caseClient.getStages(CONTAINER_ID, caseId, false, 0, 50); Assertions.assertThat(caseStages).isNotEmpty(); String inactiveStageId = caseStages.stream().filter(stage -> !STAGE_ACTIVE_STATE.equals(stage.getStatus())) .findFirst() .orElseThrow(() -> new IllegalStateException("No inactive stage found.")) .getIdentifier(); assertClientException( () -> caseClient.addDynamicSubProcessToStage( CONTAINER_ID, caseId, inactiveStageId, DATA_VERIFICATION_DEF_ID, Collections.emptyMap()), 404, "No stage found with id " + inactiveStageId ); }
@Test public void testAddDynamicTaskToStageInvalidContainer() { String caseId = startCarInsuranceClaimCase(USER_YODA, USER_JOHN, USER_YODA); Assertions.assertThat(caseId).isNotNull(); List<CaseStage> caseStages = caseClient.getStages(CONTAINER_ID, caseId, false, 0, 100); Assertions.assertThat(caseStages).isNotNull(); Assertions.assertThat(caseStages).isNotEmpty(); CaseStage firstCaseStage = caseStages.iterator().next(); String firstStageId = firstCaseStage.getIdentifier(); assertClientException( () -> caseClient.addDynamicTaskToStage(BAD_CONTAINER_ID, caseId, firstStageId, "ContactCarProducer", "Contact car producer", null), 404, BAD_CONTAINER_ID); }
@Test public void testAddDynamicSubProcessToStage() { String caseId = startCarInsuranceClaimCase(USER_YODA, USER_JOHN, USER_YODA); Assertions.assertThat(caseId).isNotNull(); List<CaseStage> caseStages = caseClient.getStages(CONTAINER_ID, caseId, false, 0, 50); String activeStageId = caseStages.stream().filter(stage -> STAGE_ACTIVE_STATE.equals(stage.getStatus())) .findFirst() .orElseThrow(() -> new IllegalStateException("No active stage found.")) .getIdentifier(); List<ProcessInstance> instances = caseClient.getProcessInstances(CONTAINER_ID, caseId, Arrays.asList(1, 2, 3), 0, 10); Assertions.assertThat(instances).hasSize(1); final long originalCaseProcessInstanceId = instances.get(0).getId(); caseClient.addDynamicSubProcessToStage( CONTAINER_ID, caseId, activeStageId, DATA_VERIFICATION_DEF_ID, Collections.emptyMap()); instances = caseClient.getProcessInstances(CONTAINER_ID, caseId, Arrays.asList(1, 2, 3), 0, 10); Assertions.assertThat(instances).hasSize(2); final ProcessInstance newlyCreatedProcessInstance = instances.stream().filter((pi) -> pi.getId() != originalCaseProcessInstanceId) .findFirst() .get(); Assertions.assertThat(newlyCreatedProcessInstance.getProcessId()).isEqualTo(DATA_VERIFICATION_DEF_ID); Assertions.assertThat(newlyCreatedProcessInstance.getState()).isEqualTo(STATE_COMPLETED); }
@Override public CaseStageSummary apply(CaseStage stage) { if (stage == null) { return null; } return CaseStageSummary.builder() .name(stage.getName()) .identifier(stage.getIdentifier()) .status(stage.getStatus()) .build(); }
@Test public void testAddDynamicUserTaskToInactiveStage() { String caseId = startCarInsuranceClaimCase(USER_YODA, USER_JOHN, USER_YODA); List<CaseStage> caseStages = caseClient.getStages(CONTAINER_ID, caseId, false, 0, 50); Assertions.assertThat(caseStages).isNotEmpty(); String inactiveStageId = caseStages.stream().filter(stage -> !STAGE_ACTIVE_STATE.equals(stage.getStatus())) .findFirst() .orElseThrow(() -> new IllegalStateException("No inactive stage found.")) .getIdentifier(); assertClientException( () -> caseClient.addDynamicUserTaskToStage( CONTAINER_ID, caseId, inactiveStageId, "ContactCarProducer", "Contact car producer", USER_JOHN, "mygroup", Collections.emptyMap()), 404, "No stage found" ); }
@Test public void testAddDynamicUserTaskToActiveStage() { String caseId = startCarInsuranceClaimCase(USER_YODA, USER_JOHN, USER_YODA); List<CaseStage> caseStages = caseClient.getStages(CONTAINER_ID, caseId, false, 0, 50); Assertions.assertThat(caseStages).isNotEmpty(); String activeStageId = caseStages.stream().filter(stage -> STAGE_ACTIVE_STATE.equals(stage.getStatus())) .findFirst() .orElseThrow(() -> new IllegalStateException("No active stage found.")) .getIdentifier(); final String taskName = "ContactCarProducer"; caseClient.addDynamicUserTaskToStage( CONTAINER_ID, caseId, activeStageId, taskName, "Contact car producer", USER_YODA, "NO GROUP", Collections.emptyMap()); List<TaskSummary> activeTasks = taskClient.findTasksAssignedAsPotentialOwner(USER_YODA,0, 50); Assertions.assertThat(activeTasks).isNotEmpty(); Optional<TaskSummary> addedTask = activeTasks .stream() .filter(task -> taskName.equals(task.getName())) .findFirst(); Assertions.assertThat(addedTask).isNotEmpty(); taskClient.completeAutoProgress(CONTAINER_ID, addedTask.get().getId(), USER_YODA, Collections.emptyMap()); }
public static void assertCaseStages(final List<CaseStage> csl, final List<CaseStageSummary> cssl) { assertNotNull(cssl); if (csl == null) { assertEquals(0, cssl.size()); } else { assertEquals(cssl.size(), csl.size()); CaseStage caseStage; CaseStageSummary caseStageSummary; for (int i = 0; i < csl.size(); i++) { caseStage = csl.get(i); caseStageSummary = cssl.get(i); assertEquals(caseStageSummary.getName(), caseStage.getName()); assertEquals(caseStageSummary.getIdentifier(), caseStage.getIdentifier()); assertEquals(caseStageSummary.getStatus(), caseStage.getStatus()); assertCaseStageAdHocFragments(caseStage.getAdHocFragments(), caseStageSummary.getAdHocActions(), caseStage.getIdentifier()); } } }
public static void assertCaseStages(final List<CaseStage> csl, final List<CaseStageSummary> cssl) { assertNotNull(cssl); if (csl == null) { assertEquals(0, cssl.size()); } else { assertEquals(cssl.size(), csl.size()); CaseStage caseStage; CaseStageSummary caseStageSummary; for (int i = 0; i < csl.size(); i++) { caseStage = csl.get(i); caseStageSummary = cssl.get(i); assertEquals(caseStageSummary.getName(), caseStage.getName()); assertEquals(caseStageSummary.getIdentifier(), caseStage.getIdentifier()); assertEquals(caseStageSummary.getStatus(), caseStage.getStatus()); assertCaseStageAdHocFragments(caseStage.getAdHocFragments(), caseStageSummary.getAdHocActions(), caseStage.getIdentifier()); } } }
private void assertEscalateRejectedClaimCaseStage(CaseStage stage, String status) { assertEquals("Escalate rejected claim", stage.getName()); assertNotNull(stage.getIdentifier()); assertEquals(status, stage.getStatus()); KieServerAssert.assertNullOrEmpty("Active nodes should be null or empty.", stage.getActiveNodes()); List<CaseAdHocFragment> adHocFragments = stage.getAdHocFragments(); assertEquals(1, adHocFragments.size()); assertEquals("Negotiation meeting", adHocFragments.get(0).getName()); assertEquals("HumanTaskNode", adHocFragments.get(0).getType()); }
int countOfTaskBefore = tasks.size(); assertNotNull(stage.getIdentifier()); caseClient.triggerAdHocFragmentInStage(CONTAINER_ID, caseClaimId, stage.getIdentifier(), SUBMIT_POLICE_REPORT_TASK, Collections.EMPTY_MAP); () -> caseClient.triggerAdHocFragmentInStage(CONTAINER_ID, caseClaimId, stage.getIdentifier(), SUBMIT_POLICE_REPORT_TASK, Collections.EMPTY_MAP), 404, "No stage found with id " + stage.getIdentifier() );
private void assertClaimAssesmentCaseStage(CaseStage stage, String status) { assertEquals("Claim assesment", stage.getName()); assertNotNull(stage.getIdentifier()); assertEquals(status, stage.getStatus()); if (status.endsWith("Active")) { List<NodeInstance> activeNodes = stage.getActiveNodes(); assertEquals(1, activeNodes.size()); assertEquals("Assessor evaluation", activeNodes.get(0).getName()); assertEquals("HumanTaskNode", activeNodes.get(0).getNodeType()); } else { KieServerAssert.assertNullOrEmpty("Active nodes should be null or empty.", stage.getActiveNodes()); } List<CaseAdHocFragment> adHocFragments = stage.getAdHocFragments(); assertEquals(2, adHocFragments.size()); assertEquals("Classify claim", adHocFragments.get(0).getName()); assertEquals("RuleSetNode", adHocFragments.get(0).getType()); assertEquals("Calculate claim", adHocFragments.get(1).getName()); assertEquals("WorkItemNode", adHocFragments.get(1).getType()); }
private void assertBuildClaimReportCaseStage(CaseStage stage, String status) { assertEquals("Build claim report", stage.getName()); assertNotNull(stage.getIdentifier()); assertEquals(status, stage.getStatus()); if (status.endsWith("Active")) { List<NodeInstance> activeNodes = stage.getActiveNodes(); assertEquals(1, activeNodes.size()); assertEquals("Provide accident information", activeNodes.get(0).getName()); assertEquals("HumanTaskNode", activeNodes.get(0).getNodeType()); } else { KieServerAssert.assertNullOrEmpty("Active nodes should be null or empty.", stage.getActiveNodes()); } List<CaseAdHocFragment> adHocFragments = stage.getAdHocFragments(); assertEquals(2, adHocFragments.size()); assertEquals("Provide accident information", adHocFragments.get(0).getName()); assertEquals("HumanTaskNode", adHocFragments.get(0).getType()); assertEquals("Submit police report", adHocFragments.get(1).getName()); assertEquals("HumanTaskNode", adHocFragments.get(1).getType()); }
assertNotNull(stage.getIdentifier()); assertEquals("Build claim report", stage.getName()); assertEquals("Active", stage.getStatus());