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()); }
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; }
public static HistoricDecisionInstance createMockHistoricDecisionInstanceWithInputsAndOutputs() { List<HistoricDecisionInputInstance> inputs = createMockHistoricDecisionInputInstances(); List<HistoricDecisionOutputInstance> outputs = createMockHistoricDecisionOutputInstances(); HistoricDecisionInstance mock = createMockHistoricDecisionInstanceBase(); when(mock.getInputs()).thenReturn(inputs); when(mock.getOutputs()).thenReturn(outputs); return mock; }
public static HistoricDecisionInstance createMockHistoricDecisionInstance() { 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()).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; }
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; }
@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)); }
@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")); }
@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 testQueryIncludeInputsNoInput() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.includeInputs().singleResult().getInputs().size(), is(0)); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testMultipleDecisionInstances() { startProcessInstanceAndEvaluateDecision("a"); waitASignificantAmountOfTime(); startProcessInstanceAndEvaluateDecision("b"); List<HistoricDecisionInstance> historicDecisionInstances = historyService .createHistoricDecisionInstanceQuery() .includeInputs() .orderByEvaluationTime().asc() .list(); assertThat(historicDecisionInstances.size(), is(2)); List<HistoricDecisionInputInstance> inputsOfFirstDecision = historicDecisionInstances.get(0).getInputs(); assertThat(inputsOfFirstDecision.size(), is(1)); assertThat(inputsOfFirstDecision.get(0).getValue(), is((Object) "a")); List<HistoricDecisionInputInstance> inputsOfSecondDecision = historicDecisionInstances.get(1).getInputs(); assertThat(inputsOfSecondDecision.size(), is(1)); assertThat(inputsOfSecondDecision.get(0).getValue(), is((Object) "b")); }
@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")); }
@Test @Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void decisionInputInstanceValue() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS"); Date fixedDate = sdf.parse("01/01/2001 01:01:01.000"); ClockUtil.setCurrentTime(fixedDate); startProcessInstanceAndEvaluateDecision(inputValue); HistoricDecisionInstance historicDecisionInstance = engineRule.getHistoryService().createHistoricDecisionInstanceQuery().includeInputs().singleResult(); List<HistoricDecisionInputInstance> inputInstances = historicDecisionInstance.getInputs(); assertThat(inputInstances.size(), is(1)); HistoricDecisionInputInstance inputInstance = inputInstances.get(0); assertThat(inputInstance.getTypeName(), is(valueType)); assertThat(inputInstance.getValue(), is(inputValue)); assertThat(inputInstance.getCreateTime(), is(fixedDate)); }
@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())); }
@Test @Deployment(resources = { "org/camunda/bpm/engine/test/dmn/deployment/drdDish.dmn11.xml" }) public void shouldNotResolveHistoricDecisionInputInstance() { // given // when decisionService.evaluateDecisionTableByKey("dish-decision", Variables.createVariables() .putValue("temperature", 32) .putValue("dayType", "Weekend")); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery() .rootDecisionInstancesOnly() .includeInputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); List<HistoricDecisionInputInstance> historicDecisionInputInstances = historicDecisionInstance.getInputs(); // then assertThat(historicDecisionInputInstances.get(0).getRemovalTime(), nullValue()); assertThat(historicDecisionInputInstances.get(1).getRemovalTime(), nullValue()); }
@Test @Deployment(resources = { "org/camunda/bpm/engine/test/dmn/deployment/drdDish.dmn11.xml" }) public void shouldNotResolveHistoricDecisionInputInstance() { // given // when decisionService.evaluateDecisionTableByKey("dish-decision", Variables.createVariables() .putValue("temperature", 32) .putValue("dayType", "Weekend")); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery() .rootDecisionInstancesOnly() .includeInputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); List<HistoricDecisionInputInstance> historicDecisionInputInstances = historicDecisionInstance.getInputs(); // then assertThat(historicDecisionInputInstances.get(0).getRootProcessInstanceId(), nullValue()); assertThat(historicDecisionInputInstances.get(1).getRootProcessInstanceId(), nullValue()); }
@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 @Deployment(resources = { "org/camunda/bpm/engine/test/api/history/testDmnWithPojo.dmn11.xml" }) public void shouldResolveByteArray_StandaloneDecisionInput() { // given ClockUtil.setCurrentTime(START_DATE); DecisionDefinition decisionDefinition = repositoryService.createDecisionDefinitionQuery() .decisionDefinitionKey("testDecision") .singleResult(); repositoryService.updateDecisionDefinitionHistoryTimeToLive(decisionDefinition.getId(), 5); // when decisionService.evaluateDecisionTableByKey("testDecision", Variables.createVariables() .putValue("pojo", new TestPojo("okay", 13.37))); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery() .rootDecisionInstancesOnly() .includeInputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); HistoricDecisionInputInstanceEntity historicDecisionInputInstanceEntity = (HistoricDecisionInputInstanceEntity) historicDecisionInstance.getInputs().get(0); ByteArrayEntity byteArrayEntity = findByteArrayById(historicDecisionInputInstanceEntity.getByteArrayValueId()); Date removalTime = addDays(START_DATE, 5); // then assertThat(byteArrayEntity.getRemovalTime(), is(removalTime)); }
@Test @Deployment(resources = { "org/camunda/bpm/engine/test/api/history/testDmnWithPojo.dmn11.xml" }) public void shouldResolveByteArray_DecisionInput() { // given testRule.deploy(Bpmn.createExecutableProcess(CALLING_PROCESS_KEY) .startEvent() .businessRuleTask().camundaDecisionRef("testDecision") .endEvent().done()); // when ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(CALLING_PROCESS_KEY, Variables.createVariables() .putValue("pojo", new TestPojo("okay", 13.37))); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery() .rootDecisionInstancesOnly() .includeInputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); HistoricDecisionInputInstanceEntity historicDecisionInputInstanceEntity = (HistoricDecisionInputInstanceEntity) historicDecisionInstance.getInputs().get(0); ByteArrayEntity byteArrayEntity = findByteArrayById(historicDecisionInputInstanceEntity.getByteArrayValueId()); // then assertThat(byteArrayEntity.getRootProcessInstanceId(), is(processInstance.getProcessInstanceId())); }
@Test @Deployment(resources = { "org/camunda/bpm/engine/test/api/history/testDmnWithPojo.dmn11.xml" }) public void shouldResolveByteArray_DecisionInput() { // given ClockUtil.setCurrentTime(START_DATE); testRule.deploy(Bpmn.createExecutableProcess(CALLING_PROCESS_KEY) .camundaHistoryTimeToLive(5) .startEvent() .businessRuleTask().camundaDecisionRef("testDecision") .endEvent().done()); // when ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(CALLING_PROCESS_KEY, Variables.createVariables() .putValue("pojo", new TestPojo("okay", 13.37))); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery() .rootDecisionInstancesOnly() .includeInputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); HistoricDecisionInputInstanceEntity historicDecisionInputInstanceEntity = (HistoricDecisionInputInstanceEntity) historicDecisionInstance.getInputs().get(0); ByteArrayEntity byteArrayEntity = findByteArrayById(historicDecisionInputInstanceEntity.getByteArrayValueId()); Date removalTime = addDays(START_DATE, 5); // then assertThat(byteArrayEntity.getRemovalTime(), is(removalTime)); }