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())); }
dto.id = historicDecisionInstance.getId(); dto.decisionDefinitionId = historicDecisionInstance.getDecisionDefinitionId(); dto.decisionDefinitionKey = historicDecisionInstance.getDecisionDefinitionKey(); dto.decisionDefinitionName = historicDecisionInstance.getDecisionDefinitionName(); dto.evaluationTime = historicDecisionInstance.getEvaluationTime(); dto.removalTime = historicDecisionInstance.getRemovalTime(); dto.processDefinitionId = historicDecisionInstance.getProcessDefinitionId(); dto.processDefinitionKey = historicDecisionInstance.getProcessDefinitionKey(); dto.processInstanceId = historicDecisionInstance.getProcessInstanceId(); dto.caseDefinitionId = historicDecisionInstance.getCaseDefinitionId(); dto.caseDefinitionKey = historicDecisionInstance.getCaseDefinitionKey(); dto.caseInstanceId = historicDecisionInstance.getCaseInstanceId(); dto.activityId = historicDecisionInstance.getActivityId(); dto.activityInstanceId = historicDecisionInstance.getActivityInstanceId(); dto.userId = historicDecisionInstance.getUserId(); dto.collectResultValue = historicDecisionInstance.getCollectResultValue(); dto.rootDecisionInstanceId = historicDecisionInstance.getRootDecisionInstanceId(); dto.rootProcessInstanceId = historicDecisionInstance.getRootProcessInstanceId(); dto.decisionRequirementsDefinitionId = historicDecisionInstance.getDecisionRequirementsDefinitionId(); dto.decisionRequirementsDefinitionKey = historicDecisionInstance.getDecisionRequirementsDefinitionKey(); dto.tenantId = historicDecisionInstance.getTenantId(); for (HistoricDecisionInputInstance input : historicDecisionInstance.getInputs()) { HistoricDecisionInputInstanceDto inputDto = HistoricDecisionInputInstanceDto.fromHistoricDecisionInputInstance(input); inputs.add(inputDto); for (HistoricDecisionOutputInstance output : historicDecisionInstance.getOutputs()) { HistoricDecisionOutputInstanceDto outputDto = HistoricDecisionOutputInstanceDto.fromHistoricDecisionOutputInstance(output); outputs.add(outputDto);
@Override public void checkDeleteHistoricDecisionInstance(HistoricDecisionInstance decisionInstance) { if (decisionInstance != null && !getTenantManager().isAuthenticatedTenant(decisionInstance.getTenantId())) { throw LOG.exceptionCommandWithUnauthorizedTenant( "delete the historic decision instance '" + decisionInstance.getId() + "'" ); } }
@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())); }
@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()); }
protected List<String> collectHistoricDecisionInstanceIds() { Set<String> collectedDecisionInstanceIds = new HashSet<String>(); List<String> decisionInstanceIds = getHistoricDecisionInstanceIds(); if (decisionInstanceIds != null) { collectedDecisionInstanceIds.addAll(decisionInstanceIds); } final HistoricDecisionInstanceQueryImpl decisionInstanceQuery = (HistoricDecisionInstanceQueryImpl) historicDecisionInstanceQuery; if (decisionInstanceQuery != null) { for (HistoricDecisionInstance hdi : decisionInstanceQuery.list()) { collectedDecisionInstanceIds.add(hdi.getId()); } } return new ArrayList<String>(collectedDecisionInstanceIds); }
public void testQuerySortingAsc() { List<HistoricDecisionInstance> historicDecisionInstances = historyService.createHistoricDecisionInstanceQuery() .orderByTenantId() .asc() .list(); assertThat(historicDecisionInstances.size(), is(2)); assertThat(historicDecisionInstances.get(0).getTenantId(), is(TENANT_ONE)); assertThat(historicDecisionInstances.get(1).getTenantId(), is(TENANT_TWO)); }
public static HistoricDecisionInstance createMockHistoricDecisionInstanceWithInputs() { List<HistoricDecisionInputInstance> inputs = createMockHistoricDecisionInputInstances(); HistoricDecisionInstance mock = createMockHistoricDecisionInstanceBase(); when(mock.getInputs()).thenReturn(inputs); when(mock.getOutputs()).thenThrow(new ProcessEngineException("ENGINE-03061 The output instances for the historic decision instance are not fetched. You must call 'includeOutputs()' on the query to enable fetching.")); return mock; }
private void collectHistoricDecisionOutputIds(List<HistoricDecisionInstance> historicDecisionInstances, List<String> historicDecisionOutputIds, List<String> outputByteArrayId) { for (HistoricDecisionInstance historicDecisionInstance : historicDecisionInstances) { for (HistoricDecisionOutputInstance outputInstanceEntity : historicDecisionInstance.getOutputs()) { historicDecisionOutputIds.add(outputInstanceEntity.getId()); final String byteArrayValueId = ((HistoricDecisionOutputInstanceEntity) outputInstanceEntity).getByteArrayValueId(); if (byteArrayValueId != null) { outputByteArrayId.add(byteArrayValueId); } } } assertEquals(PROCESS_INSTANCE_COUNT, historicDecisionOutputIds.size()); }
private void collectHistoricDecisionInputIds(List<HistoricDecisionInstance> historicDecisionInstances, List<String> historicDecisionInputIds, List<String> inputByteArrayIds) { for (HistoricDecisionInstance historicDecisionInstance : historicDecisionInstances) { for (HistoricDecisionInputInstance inputInstanceEntity : historicDecisionInstance.getInputs()) { historicDecisionInputIds.add(inputInstanceEntity.getId()); final String byteArrayValueId = ((HistoricDecisionInputInstanceEntity) inputInstanceEntity).getByteArrayValueId(); if (byteArrayValueId != null) { inputByteArrayIds.add(byteArrayValueId); } } } assertEquals(PROCESS_INSTANCE_COUNT, historicDecisionInputIds.size()); }
@Test @Deployment(resources = {DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN}) public void decisionInputInstanceProperties() { // given start process and evaluate decision VariableMap variables = Variables.createVariables(); variables.put("input1", null); runtimeService.startProcessInstanceByKey("testProcess", variables); // when List<HistoricDecisionInstance> decisionInstances = optimizeService.getHistoricDecisionInstances(pastDate(), null, 10); // then assertThat(decisionInstances.size(), is(1)); HistoricDecisionInstance decisionInstance = decisionInstances.get(0); List<HistoricDecisionInputInstance> inputs = decisionInstance.getInputs(); assertThat(inputs, is(notNullValue())); assertThat(inputs.size(), is(1)); HistoricDecisionInputInstance input = inputs.get(0); assertThat(input.getDecisionInstanceId(), is(decisionInstance.getId())); assertThat(input.getClauseId(), is("in")); assertThat(input.getClauseName(), is("input")); }
@Test @Deployment(resources = {DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN}) public void decisionOutputInstanceProperties() { // given start process and evaluate decision VariableMap variables = Variables.createVariables(); variables.put("input1", null); runtimeService.startProcessInstanceByKey("testProcess", variables); // when List<HistoricDecisionInstance> decisionInstances = optimizeService.getHistoricDecisionInstances(pastDate(), null, 10); // then assertThat(decisionInstances.size(), is(1)); HistoricDecisionInstance decisionInstance = decisionInstances.get(0); List<HistoricDecisionOutputInstance> outputs = decisionInstance.getOutputs(); assertThat(outputs, is(notNullValue())); assertThat(outputs.size(), is(1)); HistoricDecisionOutputInstance output = outputs.get(0); assertThat(output.getDecisionInstanceId(), is(decisionInstance.getId())); assertThat(output.getClauseId(), is("out")); assertThat(output.getClauseName(), is("output")); assertThat(output.getRuleId(), is("rule")); assertThat(output.getRuleOrder(), is(1)); assertThat(output.getVariableName(), is("result")); }
public void checkDeleteHistoricDecisionInstance(HistoricDecisionInstance decisionInstance) { getAuthorizationManager().checkAuthorization( DELETE_HISTORY, DECISION_DEFINITION, decisionInstance.getDecisionDefinitionKey() ); }
@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())); }
protected List<String> collectHistoricDecisionInstanceIds() { Set<String> collectedDecisionInstanceIds = new HashSet<String>(); List<String> decisionInstanceIds = getHistoricDecisionInstanceIds(); if (decisionInstanceIds != null) { collectedDecisionInstanceIds.addAll(decisionInstanceIds); } final HistoricDecisionInstanceQueryImpl decisionInstanceQuery = (HistoricDecisionInstanceQueryImpl) historicDecisionInstanceQuery; if (decisionInstanceQuery != null) { for (HistoricDecisionInstance hdi : decisionInstanceQuery.list()) { collectedDecisionInstanceIds.add(hdi.getId()); } } return new ArrayList<String>(collectedDecisionInstanceIds); }
@Override public void checkDeleteHistoricDecisionInstance(HistoricDecisionInstance decisionInstance) { if (decisionInstance != null && !getTenantManager().isAuthenticatedTenant(decisionInstance.getTenantId())) { throw LOG.exceptionCommandWithUnauthorizedTenant( "delete the historic decision instance '" + decisionInstance.getId() + "'" ); } }
public void testQuerySortingDesc() { List<HistoricDecisionInstance> historicDecisionInstances = historyService.createHistoricDecisionInstanceQuery() .orderByTenantId() .desc() .list(); assertThat(historicDecisionInstances.size(), is(2)); assertThat(historicDecisionInstances.get(0).getTenantId(), is(TENANT_TWO)); assertThat(historicDecisionInstances.get(1).getTenantId(), is(TENANT_ONE)); }
public static HistoricDecisionInstance createMockHistoricDecisionInstanceWithOutputs() { List<HistoricDecisionOutputInstance> outputs = createMockHistoricDecisionOutputInstances(); HistoricDecisionInstance mock = createMockHistoricDecisionInstanceBase(); when(mock.getInputs()).thenThrow(new ProcessEngineException("ENGINE-03060 The input instances for the historic decision instance are not fetched. You must call 'includeInputs()' on the query to enable fetching.")); when(mock.getOutputs()).thenReturn(outputs); return mock; }