private void assertThatDecisionsHaveAllImportantInformation(List<HistoricDecisionInstance> decisionInstances) { assertThat(decisionInstances.size(), is(1)); HistoricDecisionInstance decisionInstance = decisionInstances.get(0); assertThat(decisionInstance, notNullValue()); assertThat(decisionInstance.getProcessDefinitionKey(), is("testProcess")); assertThat(decisionInstance.getProcessDefinitionId(), notNullValue()); assertThat(decisionInstance.getDecisionDefinitionId(), notNullValue()); assertThat(decisionInstance.getDecisionDefinitionKey(), is("testDecision")); assertThat(decisionInstance.getDecisionDefinitionName(), is("sample decision")); assertThat(decisionInstance.getActivityId(), is("task")); assertThat(decisionInstance.getActivityInstanceId(), notNullValue()); assertThat(decisionInstance.getProcessInstanceId(), is(notNullValue())); assertThat(decisionInstance.getRootProcessInstanceId(), is(notNullValue())); assertThat(decisionInstance.getCaseDefinitionKey(), is(nullValue())); assertThat(decisionInstance.getCaseDefinitionId(), is(nullValue())); assertThat(decisionInstance.getCaseInstanceId(), is(nullValue())); assertThat(decisionInstance.getRootDecisionInstanceId(), is(nullValue())); assertThat(decisionInstance.getDecisionRequirementsDefinitionId(), is(nullValue())); assertThat(decisionInstance.getDecisionRequirementsDefinitionKey(), is(nullValue())); assertThat(decisionInstance.getEvaluationTime(), is(notNullValue())); }
public static HistoricDecisionInstance createMockHistoricDecisionInstanceBase(String tenantId) { HistoricDecisionInstance mock = mock(HistoricDecisionInstance.class); when(mock.getId()).thenReturn(EXAMPLE_HISTORIC_DECISION_INSTANCE_ID); when(mock.getDecisionDefinitionId()).thenReturn(EXAMPLE_DECISION_DEFINITION_ID); when(mock.getDecisionDefinitionKey()).thenReturn(EXAMPLE_DECISION_DEFINITION_KEY); when(mock.getDecisionDefinitionName()).thenReturn(EXAMPLE_DECISION_DEFINITION_NAME); when(mock.getProcessDefinitionId()).thenReturn(EXAMPLE_PROCESS_DEFINITION_ID); when(mock.getProcessDefinitionKey()).thenReturn(EXAMPLE_PROCESS_DEFINITION_KEY); when(mock.getProcessInstanceId()).thenReturn(EXAMPLE_PROCESS_INSTANCE_ID); when(mock.getCaseDefinitionId()).thenReturn(EXAMPLE_CASE_DEFINITION_ID); when(mock.getCaseDefinitionKey()).thenReturn(EXAMPLE_CASE_DEFINITION_KEY); when(mock.getCaseInstanceId()).thenReturn(EXAMPLE_CASE_INSTANCE_ID); when(mock.getActivityId()).thenReturn(EXAMPLE_HISTORIC_DECISION_INSTANCE_ACTIVITY_ID); when(mock.getActivityInstanceId()).thenReturn(EXAMPLE_HISTORIC_DECISION_INSTANCE_ACTIVITY_INSTANCE_ID); when(mock.getEvaluationTime()).thenReturn(DateTimeUtil.parseDate(EXAMPLE_HISTORIC_DECISION_INSTANCE_EVALUATION_TIME)); when(mock.getRemovalTime()).thenReturn(DateTimeUtil.parseDate(EXAMPLE_HISTORIC_DECISION_INSTANCE_REMOVAL_TIME)); when(mock.getUserId()).thenReturn(EXAMPLE_HISTORIC_DECISION_INSTANCE_USER_ID); when(mock.getCollectResultValue()).thenReturn(EXAMPLE_HISTORIC_DECISION_INSTANCE_COLLECT_RESULT_VALUE); when(mock.getRootDecisionInstanceId()).thenReturn(EXAMPLE_HISTORIC_DECISION_INSTANCE_ID); when(mock.getRootProcessInstanceId()).thenReturn(EXAMPLE_ROOT_HISTORIC_PROCESS_INSTANCE_ID); when(mock.getDecisionRequirementsDefinitionId()).thenReturn(EXAMPLE_DECISION_REQUIREMENTS_DEFINITION_ID); when(mock.getDecisionRequirementsDefinitionKey()).thenReturn(EXAMPLE_DECISION_REQUIREMENTS_DEFINITION_KEY); when(mock.getTenantId()).thenReturn(tenantId); return mock; }
@Deployment(resources = { DECISION_SINGLE_OUTPUT_DMN }) public void testDecisionEvaluatedWithDecisionService() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("input1", "test"); decisionService.evaluateDecisionTableByKey(DECISION_DEFINITION_KEY, variables); String decisionDefinitionId = repositoryService.createDecisionDefinitionQuery().decisionDefinitionKey(DECISION_DEFINITION_KEY).singleResult().getId(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().singleResult(); assertThat(historicDecisionInstance, is(notNullValue())); assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision")); assertThat(historicDecisionInstance.getEvaluationTime(), is(notNullValue())); // references to process instance should be null since the decision is not evaluated while executing a process instance assertThat(historicDecisionInstance.getProcessDefinitionKey(), is(nullValue())); assertThat(historicDecisionInstance.getProcessDefinitionId(), is(nullValue())); assertThat(historicDecisionInstance.getProcessInstanceId(), is(nullValue())); assertThat(historicDecisionInstance.getActivityId(), is(nullValue())); assertThat(historicDecisionInstance.getActivityInstanceId(), is(nullValue())); // the user should be null since no user was authenticated during evaluation assertThat(historicDecisionInstance.getUserId(), is(nullValue())); }
@Test public void testHistoricDecisionInstance() { VariableMap variables = Variables.createVariables().putValue("status", "bronze").putValue("sum", 100); ProcessInstance pi = runtimeService.startProcessInstanceByKey("testProcess", variables); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().includeInputs().includeOutputs().singleResult(); assertThat(historicDecisionInstance, is(notNullValue())); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is("decision")); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("Check Order")); assertThat(historicDecisionInstance.getInputs().size(), is(2)); assertThat(historicDecisionInstance.getOutputs().size(), is(2)); Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult(); taskService.complete(task.getId()); }
@Deployment(resources = DECISION_LITERAL_EXPRESSION_DMN) public void testDecisionInstancePropertiesOfDecisionLiteralExpression() { DecisionDefinition decisionDefinition = repositoryService.createDecisionDefinitionQuery().singleResult(); decisionService.evaluateDecisionByKey("decision") .variables(Variables.createVariables().putValue("sum", 2205)) .evaluate(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().includeInputs().includeOutputs(); assertThat(query.count(), is(1L)); HistoricDecisionInstance historicDecisionInstance = query.singleResult(); assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinition.getId())); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is("decision")); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("Decision with Literal Expression")); assertThat(historicDecisionInstance.getEvaluationTime(), is(notNullValue())); assertThat(historicDecisionInstance.getInputs().size(), is(0)); List<HistoricDecisionOutputInstance> outputs = historicDecisionInstance.getOutputs(); assertThat(outputs.size(), is(1)); HistoricDecisionOutputInstance output = outputs.get(0); assertThat(output.getVariableName(), is("result")); assertThat(output.getTypeName(), is("string")); assertThat((String) output.getValue(), is("ok")); assertThat(output.getClauseId(), is(nullValue())); assertThat(output.getClauseName(), is(nullValue())); assertThat(output.getRuleId(), is(nullValue())); assertThat(output.getRuleOrder(), is(nullValue())); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testDecisionInstanceProperties() { startProcessInstanceAndEvaluateDecision(); ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().singleResult(); ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processInstance.getProcessDefinitionId()).singleResult(); String decisionDefinitionId = repositoryService.createDecisionDefinitionQuery().decisionDefinitionKey(DECISION_DEFINITION_KEY).singleResult().getId(); String activityInstanceId = historyService.createHistoricActivityInstanceQuery().activityId("task").singleResult().getId(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().singleResult(); assertThat(historicDecisionInstance, is(notNullValue())); assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision")); assertThat(historicDecisionInstance.getProcessDefinitionKey(), is(processDefinition.getKey())); assertThat(historicDecisionInstance.getProcessDefinitionId(), is(processDefinition.getId())); assertThat(historicDecisionInstance.getProcessInstanceId(), is(processInstance.getId())); assertThat(historicDecisionInstance.getCaseDefinitionKey(), is(nullValue())); assertThat(historicDecisionInstance.getCaseDefinitionId(), is(nullValue())); assertThat(historicDecisionInstance.getCaseInstanceId(), is(nullValue())); assertThat(historicDecisionInstance.getActivityId(), is("task")); assertThat(historicDecisionInstance.getActivityInstanceId(), is(activityInstanceId)); assertThat(historicDecisionInstance.getRootDecisionInstanceId(), is(nullValue())); assertThat(historicDecisionInstance.getDecisionRequirementsDefinitionId(), is(nullValue())); assertThat(historicDecisionInstance.getDecisionRequirementsDefinitionKey(), is(nullValue())); assertThat(historicDecisionInstance.getEvaluationTime(), is(notNullValue())); }
dto.decisionDefinitionId = historicDecisionInstance.getDecisionDefinitionId(); dto.decisionDefinitionKey = historicDecisionInstance.getDecisionDefinitionKey(); dto.decisionDefinitionName = historicDecisionInstance.getDecisionDefinitionName(); dto.evaluationTime = historicDecisionInstance.getEvaluationTime(); dto.removalTime = historicDecisionInstance.getRemovalTime();
@Test public void evaluateDecisionWithDecisionService() { runtimeService.startProcessInstanceByKey("testProcess", Variables.createVariables() .putValue("input1", null) .putValue("myBean", new DecisionServiceDelegate())); ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().singleResult(); ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processInstance.getProcessDefinitionId()).singleResult(); String decisionDefinitionId = repositoryService.createDecisionDefinitionQuery().decisionDefinitionKey(DECISION_DEFINITION_KEY).singleResult().getId(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().singleResult(); assertThat(historicDecisionInstance, is(notNullValue())); assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision")); // references to process instance should be set since the decision is evaluated while executing a process instance assertThat(historicDecisionInstance.getProcessDefinitionKey(), is(processDefinition.getKey())); assertThat(historicDecisionInstance.getProcessDefinitionId(), is(processDefinition.getId())); assertThat(historicDecisionInstance.getProcessInstanceId(), is(processInstance.getId())); assertThat(historicDecisionInstance.getCaseDefinitionKey(), is(nullValue())); assertThat(historicDecisionInstance.getCaseDefinitionId(), is(nullValue())); assertThat(historicDecisionInstance.getCaseInstanceId(), is(nullValue())); assertThat(historicDecisionInstance.getActivityId(), is(activityId)); assertThat(historicDecisionInstance.getEvaluationTime(), is(notNullValue())); }
dto.decisionDefinitionId = historicDecisionInstance.getDecisionDefinitionId(); dto.decisionDefinitionKey = historicDecisionInstance.getDecisionDefinitionKey(); dto.decisionDefinitionName = historicDecisionInstance.getDecisionDefinitionName(); dto.evaluationTime = historicDecisionInstance.getEvaluationTime(); dto.removalTime = historicDecisionInstance.getRemovalTime();
assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision"));
assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision"));
assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision"));
assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision"));
private void assertThatDecisionsHaveAllImportantInformation(List<HistoricDecisionInstance> decisionInstances) { assertThat(decisionInstances.size(), is(1)); HistoricDecisionInstance decisionInstance = decisionInstances.get(0); assertThat(decisionInstance, notNullValue()); assertThat(decisionInstance.getProcessDefinitionKey(), is("testProcess")); assertThat(decisionInstance.getProcessDefinitionId(), notNullValue()); assertThat(decisionInstance.getDecisionDefinitionId(), notNullValue()); assertThat(decisionInstance.getDecisionDefinitionKey(), is("testDecision")); assertThat(decisionInstance.getDecisionDefinitionName(), is("sample decision")); assertThat(decisionInstance.getActivityId(), is("task")); assertThat(decisionInstance.getActivityInstanceId(), notNullValue()); assertThat(decisionInstance.getProcessInstanceId(), is(notNullValue())); assertThat(decisionInstance.getRootProcessInstanceId(), is(notNullValue())); assertThat(decisionInstance.getCaseDefinitionKey(), is(nullValue())); assertThat(decisionInstance.getCaseDefinitionId(), is(nullValue())); assertThat(decisionInstance.getCaseInstanceId(), is(nullValue())); assertThat(decisionInstance.getRootDecisionInstanceId(), is(nullValue())); assertThat(decisionInstance.getDecisionRequirementsDefinitionId(), is(nullValue())); assertThat(decisionInstance.getDecisionRequirementsDefinitionKey(), is(nullValue())); assertThat(decisionInstance.getEvaluationTime(), is(notNullValue())); }
@Deployment(resources = { DECISION_SINGLE_OUTPUT_DMN }) public void testDecisionEvaluatedWithDecisionService() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("input1", "test"); decisionService.evaluateDecisionTableByKey(DECISION_DEFINITION_KEY, variables); String decisionDefinitionId = repositoryService.createDecisionDefinitionQuery().decisionDefinitionKey(DECISION_DEFINITION_KEY).singleResult().getId(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().singleResult(); assertThat(historicDecisionInstance, is(notNullValue())); assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision")); assertThat(historicDecisionInstance.getEvaluationTime(), is(notNullValue())); // references to process instance should be null since the decision is not evaluated while executing a process instance assertThat(historicDecisionInstance.getProcessDefinitionKey(), is(nullValue())); assertThat(historicDecisionInstance.getProcessDefinitionId(), is(nullValue())); assertThat(historicDecisionInstance.getProcessInstanceId(), is(nullValue())); assertThat(historicDecisionInstance.getActivityId(), is(nullValue())); assertThat(historicDecisionInstance.getActivityInstanceId(), is(nullValue())); // the user should be null since no user was authenticated during evaluation assertThat(historicDecisionInstance.getUserId(), is(nullValue())); }
@Deployment(resources = DECISION_LITERAL_EXPRESSION_DMN) public void testDecisionInstancePropertiesOfDecisionLiteralExpression() { DecisionDefinition decisionDefinition = repositoryService.createDecisionDefinitionQuery().singleResult(); decisionService.evaluateDecisionByKey("decision") .variables(Variables.createVariables().putValue("sum", 2205)) .evaluate(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().includeInputs().includeOutputs(); assertThat(query.count(), is(1L)); HistoricDecisionInstance historicDecisionInstance = query.singleResult(); assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinition.getId())); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is("decision")); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("Decision with Literal Expression")); assertThat(historicDecisionInstance.getEvaluationTime(), is(notNullValue())); assertThat(historicDecisionInstance.getInputs().size(), is(0)); List<HistoricDecisionOutputInstance> outputs = historicDecisionInstance.getOutputs(); assertThat(outputs.size(), is(1)); HistoricDecisionOutputInstance output = outputs.get(0); assertThat(output.getVariableName(), is("result")); assertThat(output.getTypeName(), is("string")); assertThat((String) output.getValue(), is("ok")); assertThat(output.getClauseId(), is(nullValue())); assertThat(output.getClauseName(), is(nullValue())); assertThat(output.getRuleId(), is(nullValue())); assertThat(output.getRuleOrder(), is(nullValue())); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testDecisionInstanceProperties() { startProcessInstanceAndEvaluateDecision(); ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().singleResult(); ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processInstance.getProcessDefinitionId()).singleResult(); String decisionDefinitionId = repositoryService.createDecisionDefinitionQuery().decisionDefinitionKey(DECISION_DEFINITION_KEY).singleResult().getId(); String activityInstanceId = historyService.createHistoricActivityInstanceQuery().activityId("task").singleResult().getId(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().singleResult(); assertThat(historicDecisionInstance, is(notNullValue())); assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision")); assertThat(historicDecisionInstance.getProcessDefinitionKey(), is(processDefinition.getKey())); assertThat(historicDecisionInstance.getProcessDefinitionId(), is(processDefinition.getId())); assertThat(historicDecisionInstance.getProcessInstanceId(), is(processInstance.getId())); assertThat(historicDecisionInstance.getCaseDefinitionKey(), is(nullValue())); assertThat(historicDecisionInstance.getCaseDefinitionId(), is(nullValue())); assertThat(historicDecisionInstance.getCaseInstanceId(), is(nullValue())); assertThat(historicDecisionInstance.getActivityId(), is("task")); assertThat(historicDecisionInstance.getActivityInstanceId(), is(activityInstanceId)); assertThat(historicDecisionInstance.getRootDecisionInstanceId(), is(nullValue())); assertThat(historicDecisionInstance.getDecisionRequirementsDefinitionId(), is(nullValue())); assertThat(historicDecisionInstance.getDecisionRequirementsDefinitionKey(), is(nullValue())); assertThat(historicDecisionInstance.getEvaluationTime(), is(notNullValue())); }
@Test public void evaluateDecisionWithDecisionService() { runtimeService.startProcessInstanceByKey("testProcess", Variables.createVariables() .putValue("input1", null) .putValue("myBean", new DecisionServiceDelegate())); ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().singleResult(); ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processInstance.getProcessDefinitionId()).singleResult(); String decisionDefinitionId = repositoryService.createDecisionDefinitionQuery().decisionDefinitionKey(DECISION_DEFINITION_KEY).singleResult().getId(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().singleResult(); assertThat(historicDecisionInstance, is(notNullValue())); assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision")); // references to process instance should be set since the decision is evaluated while executing a process instance assertThat(historicDecisionInstance.getProcessDefinitionKey(), is(processDefinition.getKey())); assertThat(historicDecisionInstance.getProcessDefinitionId(), is(processDefinition.getId())); assertThat(historicDecisionInstance.getProcessInstanceId(), is(processInstance.getId())); assertThat(historicDecisionInstance.getCaseDefinitionKey(), is(nullValue())); assertThat(historicDecisionInstance.getCaseDefinitionId(), is(nullValue())); assertThat(historicDecisionInstance.getCaseInstanceId(), is(nullValue())); assertThat(historicDecisionInstance.getActivityId(), is(activityId)); assertThat(historicDecisionInstance.getEvaluationTime(), is(notNullValue())); }
assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision"));
assertThat(historicDecisionInstance.getDecisionDefinitionId(), is(decisionDefinitionId)); assertThat(historicDecisionInstance.getDecisionDefinitionKey(), is(DECISION_DEFINITION_KEY)); assertThat(historicDecisionInstance.getDecisionDefinitionName(), is("sample decision"));