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()); }
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; }
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; }
@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)); }
@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")); }
@Deployment(resources = { DECISION_PROCESS, DECISION_NO_INPUT_DMN }) public void testQueryIncludeOutputsNoInput() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.includeOutputs().singleResult().getOutputs().size(), is(0)); }
@Test @Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void decisionOutputInstanceValue() 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().includeOutputs().singleResult(); List<HistoricDecisionOutputInstance> outputInstances = historicDecisionInstance.getOutputs(); assertThat(outputInstances.size(), is(1)); HistoricDecisionOutputInstance outputInstance = outputInstances.get(0); assertThat(outputInstance.getTypeName(), is(valueType)); assertThat(outputInstance.getValue(), is(inputValue)); assertThat(outputInstance.getCreateTime(), is(fixedDate)); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testDecisionOutputInstanceProperties() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().includeOutputs().singleResult(); List<HistoricDecisionOutputInstance> outputs = historicDecisionInstance.getOutputs(); assertThat(outputs, is(notNullValue())); assertThat(outputs.size(), is(1)); HistoricDecisionOutputInstance output = outputs.get(0); assertThat(output.getDecisionInstanceId(), is(historicDecisionInstance.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")); }
@Deployment(resources = { DECISION_PROCESS, DECISION_COMPOUND_OUTPUT_DMN }) public void testCompoundDecisionOutputInstances() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().includeOutputs().singleResult(); List<HistoricDecisionOutputInstance> outputs = historicDecisionInstance.getOutputs(); assertThat(outputs.size(), is(2)); HistoricDecisionOutputInstance firstOutput = outputs.get(0); assertThat(firstOutput.getClauseId(), is("out1")); assertThat(firstOutput.getRuleId(), is("rule1")); assertThat(firstOutput.getRuleOrder(), is(1)); assertThat(firstOutput.getVariableName(), is("result1")); assertThat(firstOutput.getValue(), is((Object) "okay")); HistoricDecisionOutputInstance secondOutput = outputs.get(1); assertThat(secondOutput.getClauseId(), is("out2")); assertThat(secondOutput.getRuleId(), is("rule1")); assertThat(secondOutput.getRuleOrder(), is(1)); assertThat(secondOutput.getVariableName(), is("result2")); assertThat(secondOutput.getValue(), is((Object) "not okay")); }
@Deployment(resources = { DECISION_PROCESS, DECISION_MULTIPLE_OUTPUT_DMN }) public void testMultipleDecisionOutputInstances() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery().includeOutputs().singleResult(); List<HistoricDecisionOutputInstance> outputs = historicDecisionInstance.getOutputs(); assertThat(outputs.size(), is(2)); HistoricDecisionOutputInstance firstOutput = outputs.get(0); assertThat(firstOutput.getClauseId(), is("out1")); assertThat(firstOutput.getRuleId(), is("rule1")); assertThat(firstOutput.getRuleOrder(), is(1)); assertThat(firstOutput.getVariableName(), is("result1")); assertThat(firstOutput.getValue(), is((Object) "okay")); HistoricDecisionOutputInstance secondOutput = outputs.get(1); assertThat(secondOutput.getClauseId(), is("out1")); assertThat(secondOutput.getRuleId(), is("rule2")); assertThat(secondOutput.getRuleOrder(), is(2)); assertThat(secondOutput.getVariableName(), is("result1")); assertThat(secondOutput.getValue(), is((Object) "not okay")); }
@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()); }
@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 @Deployment(resources = { "org/camunda/bpm/engine/test/dmn/deployment/drdDish.dmn11.xml" }) public void shouldNotResolveHistoricDecisionOutputInstance() { // given // when decisionService.evaluateDecisionTableByKey("dish-decision", Variables.createVariables() .putValue("temperature", 32) .putValue("dayType", "Weekend")); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery() .rootDecisionInstancesOnly() .includeOutputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); List<HistoricDecisionOutputInstance> historicDecisionOutputInstances = historicDecisionInstance.getOutputs(); // then assertThat(historicDecisionOutputInstances.get(0).getRootProcessInstanceId(), nullValue()); }
@Test @Deployment(resources = { "org/camunda/bpm/engine/test/dmn/deployment/drdDish.dmn11.xml" }) public void shouldNotResolveHistoricDecisionOutputInstance() { // given // when decisionService.evaluateDecisionTableByKey("dish-decision", Variables.createVariables() .putValue("temperature", 32) .putValue("dayType", "Weekend")); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery() .rootDecisionInstancesOnly() .includeOutputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); List<HistoricDecisionOutputInstance> historicDecisionOutputInstances = historicDecisionInstance.getOutputs(); // then assertThat(historicDecisionOutputInstances.get(0).getRemovalTime(), nullValue()); }
@Test @Deployment public void shouldResolveByteArray_DecisionOutputLiteralExpression() { // 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() .includeOutputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); HistoricDecisionOutputInstanceEntity historicDecisionOutputInstanceEntity = (HistoricDecisionOutputInstanceEntity) historicDecisionInstance.getOutputs().get(0); ByteArrayEntity byteArrayEntity = findByteArrayById(historicDecisionOutputInstanceEntity.getByteArrayValueId()); // then assertThat(byteArrayEntity.getRootProcessInstanceId(), is(processInstance.getProcessInstanceId())); }
@Test @Deployment(resources = { "org/camunda/bpm/engine/test/dmn/deployment/drdDish.dmn11.xml" }) public void shouldResolveHistoricDecisionOutputInstance() { // given ClockUtil.setCurrentTime(START_DATE); testRule.deploy(Bpmn.createExecutableProcess(CALLING_PROCESS_KEY) .camundaHistoryTimeToLive(5) .startEvent() .businessRuleTask() .camundaDecisionRef("dish-decision") .endEvent().done()); // when runtimeService.startProcessInstanceByKey(CALLING_PROCESS_KEY, Variables.createVariables() .putValue("temperature", 32) .putValue("dayType", "Weekend")); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery() .rootDecisionInstancesOnly() .includeOutputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); List<HistoricDecisionOutputInstance> historicDecisionOutputInstances = historicDecisionInstance.getOutputs(); Date removalTime = addDays(START_DATE, 5); // then assertThat(historicDecisionOutputInstances.get(0).getRemovalTime(), is(removalTime)); }
@Test @Deployment(resources = { "org/camunda/bpm/engine/test/dmn/deployment/drdDish.dmn11.xml" }) public void shouldResolveStandaloneHistoricDecisionOutputInstance() { // given ClockUtil.setCurrentTime(START_DATE); testRule.deploy(Bpmn.createExecutableProcess(CALLING_PROCESS_KEY) .camundaHistoryTimeToLive(5) .startEvent() .businessRuleTask() .camundaDecisionRef("dish-decision") .endEvent().done()); // when runtimeService.startProcessInstanceByKey(CALLING_PROCESS_KEY, Variables.createVariables() .putValue("temperature", 32) .putValue("dayType", "Weekend")); HistoricDecisionInstance historicDecisionInstance = historyService.createHistoricDecisionInstanceQuery() .rootDecisionInstancesOnly() .includeOutputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); List<HistoricDecisionOutputInstance> historicDecisionOutputInstances = historicDecisionInstance.getOutputs(); Date removalTime = addDays(START_DATE, 5); // then assertThat(historicDecisionOutputInstances.get(0).getRemovalTime(), is(removalTime)); }
@Test @Deployment(resources = { "org/camunda/bpm/engine/test/api/history/testDmnWithPojo.dmn11.xml" }) public void shouldResolveByteArray_DecisionOutput() { // 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() .includeOutputs() .singleResult(); // assume assertThat(historicDecisionInstance, notNullValue()); HistoricDecisionOutputInstanceEntity historicDecisionOutputInstanceEntity = (HistoricDecisionOutputInstanceEntity) historicDecisionInstance.getOutputs().get(0); ByteArrayEntity byteArrayEntity = findByteArrayById(historicDecisionOutputInstanceEntity.getByteArrayValueId()); // then assertThat(byteArrayEntity.getRootProcessInstanceId(), is(processInstance.getProcessInstanceId())); }