@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testQueryIncludeInputsForNonExistingDecision() { HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().includeInputs(); assertThat(query.singleResult(), is(nullValue())); startProcessInstanceAndEvaluateDecision(); assertThat(query.decisionInstanceId("nonExisting").singleResult(), is(nullValue())); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testQueryIncludeOutputsForNonExistingDecision() { HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().includeOutputs(); assertThat(query.singleResult(), is(nullValue())); startProcessInstanceAndEvaluateDecision(); assertThat(query.decisionInstanceId("nonExisting").singleResult(), is(nullValue())); }
@Deployment(resources = { DECISION_PROCESS, DECISION_MULTIPLE_INPUT_DMN}) public void testMultipleDecisionInputInstances() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("input1", "a"); variables.put("input2", 1); runtimeService.startProcessInstanceByKey("testProcess", variables); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().includeInputs().singleResult(); List<HistoricDecisionInputInstance> inputs = historicDecisionInstance.getInputs(); assertThat(inputs.size(), is(2)); assertThat(inputs.get(0).getValue(), is((Object) "a")); assertThat(inputs.get(1).getValue(), is((Object) 1)); }
@Deployment(resources = { DECISION_CASE_WITH_DECISION_SERVICE, DECISION_SINGLE_OUTPUT_DMN }) public void testDecisionEvaluatedWithAuthenticatedUserFromCase() { identityService.setAuthenticatedUserId("demo"); createCaseInstanceAndEvaluateDecision(); HistoricDecisionInstance historicDecisionInstance = historyService .createHistoricDecisionInstanceQuery() .singleResult(); assertThat(historicDecisionInstance, is(notNullValue())); // the user should be null since decision was evaluated by the case assertThat(historicDecisionInstance.getUserId(), is(nullValue())); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testQueryIncludeOutputs() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); try { query.singleResult().getOutputs(); fail("expected exception: output not fetched"); } catch (ProcessEngineException e) { // should throw exception if output is not fetched } assertThat(query.includeOutputs().singleResult().getOutputs().size(), is(1)); }
@Deployment(resources = { DECISION_PROCESS, DECISION_COLLECT_SUM_DMN }) public void testCollectResultValue() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().singleResult(); assertThat(historicDecisionInstance.getCollectResultValue(), is(notNullValue())); assertThat(historicDecisionInstance.getCollectResultValue(), is(3.0)); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testDisableDecisionInputInstanceByteValue() { byte[] bytes = "object".getBytes(); startProcessInstanceAndEvaluateDecision(bytes); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().includeInputs().disableBinaryFetching().singleResult(); List<HistoricDecisionInputInstance> inputs = historicDecisionInstance.getInputs(); assertThat(inputs.size(), is(1)); HistoricDecisionInputInstance input = inputs.get(0); assertThat(input.getTypeName(), is("bytes")); assertThat(input.getValue(), is(nullValue())); }
@Deployment(resources = { DECISION_PROCESS, DECISION_NO_INPUT_DMN }) public void testQueryIncludeOutputsNoInput() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.includeOutputs().singleResult().getOutputs().size(), is(0)); }
@Deployment(resources = { DECISION_PROCESS, DECISION_NO_INPUT_DMN }) public void testQueryIncludeInputsNoInput() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.includeInputs().singleResult().getInputs().size(), is(0)); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testDecisionInputInstanceProperties() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().includeInputs().singleResult(); List<HistoricDecisionInputInstance> inputs = historicDecisionInstance.getInputs(); assertThat(inputs, is(notNullValue())); assertThat(inputs.size(), is(1)); HistoricDecisionInputInstance input = inputs.get(0); assertThat(input.getDecisionInstanceId(), is(historicDecisionInstance.getId())); assertThat(input.getClauseId(), is("in")); assertThat(input.getClauseName(), is("input")); }
@Deployment(resources = { DECISION_SINGLE_OUTPUT_DMN }) public void testDecisionEvaluatedWithAuthenticatedUser() { identityService.setAuthenticatedUserId("demo"); VariableMap variables = Variables.putValue("input1", "test"); decisionService.evaluateDecisionTableByKey(DECISION_DEFINITION_KEY, variables); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().singleResult(); assertThat(historicDecisionInstance, is(notNullValue())); // the user should be set since the decision was evaluated with the decision service assertThat(historicDecisionInstance.getUserId(), is("demo")); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testQueryByDecisionInstanceIds() { ProcessInstance pi1 = startProcessInstanceAndEvaluateDecision(); ProcessInstance pi2 = startProcessInstanceAndEvaluateDecision(); String decisionInstanceId1 = historyService.createHistoricDecisionInstanceQuery().processInstanceId(pi1.getId()).singleResult().getId(); String decisionInstanceId2 = historyService.createHistoricDecisionInstanceQuery().processInstanceId(pi2.getId()).singleResult().getId(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.decisionInstanceIdIn(decisionInstanceId1).count(), is(1L)); assertThat(query.decisionInstanceIdIn(decisionInstanceId2).count(), is(1L)); assertThat(query.decisionInstanceIdIn(decisionInstanceId1, decisionInstanceId2).count(), is(2L)); }
@Test public void setNullTenantIdForHistoricDecisionInstance() { String tenantId = null; StaticTenantIdTestProvider tenantIdProvider = new StaticTenantIdTestProvider(tenantId); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(DMN_FILE); // if a decision definition is evaluated engineRule.getDecisionService().evaluateDecisionTableByKey(DECISION_DEFINITION_KEY).variables(createVariables()).evaluate(); // then the tenant id provider can set the tenant id to null HistoricDecisionInstance historicDecisionInstance = engineRule.getHistoryService().createHistoricDecisionInstanceQuery().singleResult(); assertThat(historicDecisionInstance.getTenantId(), is(nullValue())); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testQueryByDecisionInstanceId() { ProcessInstance pi1 = startProcessInstanceAndEvaluateDecision(); ProcessInstance pi2 = startProcessInstanceAndEvaluateDecision(); String decisionInstanceId1 = historyService.createHistoricDecisionInstanceQuery().processInstanceId(pi1.getId()).singleResult().getId(); String decisionInstanceId2 = historyService.createHistoricDecisionInstanceQuery().processInstanceId(pi2.getId()).singleResult().getId(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.decisionInstanceId(decisionInstanceId1).count(), is(1L)); assertThat(query.decisionInstanceId(decisionInstanceId2).count(), is(1L)); assertThat(query.decisionInstanceId("unknown").count(), is(0L)); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testDeleteHistoricDecisionInstanceByInstanceId() { // given startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION_DEFINITION_KEY); assertThat(query.count(), is(1L)); HistoricDecisionInstance historicDecisionInstance = query.includeInputs().includeOutputs().singleResult(); // when historyService.deleteHistoricDecisionInstanceByInstanceId(historicDecisionInstance.getId()); // then assertThat(query.count(), is(0L)); }
@Deployment(resources = { DRG_DMN }) public void testQueryByRootDecisionInstancesOnly() { decisionService.evaluateDecisionTableByKey(DISH_DECISION) .variables(Variables.createVariables().putValue("temperature", 21).putValue("dayType", "Weekend")) .evaluate(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.count(), is(3L)); assertThat(query.rootDecisionInstancesOnly().count(), is(1L)); assertThat(query.rootDecisionInstancesOnly().singleResult().getDecisionDefinitionKey(), is(DISH_DECISION)); }
@Test public void testHistoricDecisionInputInstanceBinary() { testRule.deploy(DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN); startProcessInstanceAndEvaluateDecision(new JavaSerializable("foo")); HistoricDecisionInstance historicDecisionInstance = engineRule.getHistoryService().createHistoricDecisionInstanceQuery().includeInputs().singleResult(); List<HistoricDecisionInputInstance> inputInstances = historicDecisionInstance.getInputs(); assertEquals(1, inputInstances.size()); String byteArrayValueId = ((HistoricDecisionInputInstanceEntity) inputInstances.get(0)).getByteArrayValueId(); // when ByteArrayEntity byteArrayEntity = configuration.getCommandExecutorTxRequired().execute(new GetByteArrayCommand(byteArrayValueId)); checkBinary(byteArrayEntity); }
@Test public void testHistoricDecisionOutputInstanceBinary() { testRule.deploy(DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN); startProcessInstanceAndEvaluateDecision(new JavaSerializable("foo")); HistoricDecisionInstance historicDecisionInstance = engineRule.getHistoryService().createHistoricDecisionInstanceQuery().includeOutputs().singleResult(); List<HistoricDecisionOutputInstance> outputInstances = historicDecisionInstance.getOutputs(); assertEquals(1, outputInstances.size()); String byteArrayValueId = ((HistoricDecisionOutputInstanceEntity) outputInstances.get(0)).getByteArrayValueId(); // when ByteArrayEntity byteArrayEntity = configuration.getCommandExecutorTxRequired().execute(new GetByteArrayCommand(byteArrayValueId)); checkBinary(byteArrayEntity); }
@Test public void setsTenantIdForHistoricDecisionInstance() { String tenantId = TENANT_ID; StaticTenantIdTestProvider tenantIdProvider = new StaticTenantIdTestProvider(tenantId); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(DMN_FILE); // if a decision definition is evaluated engineRule.getDecisionService().evaluateDecisionTableByKey(DECISION_DEFINITION_KEY).variables(createVariables()).evaluate(); // then the tenant id provider can set the tenant id to a value HistoricDecisionInstance historicDecisionInstance = engineRule.getHistoryService().createHistoricDecisionInstanceQuery().singleResult(); assertThat(historicDecisionInstance.getTenantId(), is(tenantId)); }
public void testDeleteHistoricDecisionInstanceByInstanceIdWithDeleteHistoryPermissionOnDecisionDefinition() { // given createGrantAuthorization(DECISION_DEFINITION, DECISION_DEFINITION_KEY, userId, DELETE_HISTORY, READ_HISTORY); startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); verifyQueryResults(query, 1); HistoricDecisionInstance historicDecisionInstance = query.includeInputs().includeOutputs().singleResult(); // when historyService.deleteHistoricDecisionInstanceByInstanceId(historicDecisionInstance.getId()); // then verifyQueryResults(query, 0); }