@Override protected void applyFilters(HistoricDecisionInstanceQuery query) { if (decisionInstanceId != null) { query.decisionInstanceId(decisionInstanceId); query.decisionInstanceIdIn(decisionInstanceIdIn); query.decisionDefinitionId(decisionDefinitionId); query.decisionDefinitionIdIn(decisionDefinitionIdIn); query.decisionDefinitionKey(decisionDefinitionKey); query.decisionDefinitionKeyIn(decisionDefinitionKeyIn); query.decisionDefinitionName(decisionDefinitionName); query.decisionDefinitionNameLike(decisionDefinitionNameLike); query.processDefinitionId(processDefinitionId); query.processDefinitionKey(processDefinitionKey); query.processInstanceId(processInstanceId); query.caseDefinitionId(caseDefinitionId); query.caseDefinitionKey(caseDefinitionKey); query.caseInstanceId(caseInstanceId);
protected void verifyStringParameterQueryInvocations() { Map<String, String> stringQueryParameters = getCompleteStringQueryParameters(); StringArrayConverter stringArrayConverter = new StringArrayConverter(); verify(mockedQuery).decisionInstanceId(stringQueryParameters.get("decisionInstanceId")); verify(mockedQuery).decisionInstanceIdIn(stringArrayConverter.convertQueryParameterToType(stringQueryParameters.get("decisionInstanceIdIn"))); verify(mockedQuery).decisionDefinitionId(stringQueryParameters.get("decisionDefinitionId")); verify(mockedQuery).decisionDefinitionIdIn(stringArrayConverter.convertQueryParameterToType(stringQueryParameters.get("decisionDefinitionIdIn"))); verify(mockedQuery).decisionDefinitionKey(stringQueryParameters.get("decisionDefinitionKey")); verify(mockedQuery).decisionDefinitionKeyIn(stringArrayConverter.convertQueryParameterToType(stringQueryParameters.get("decisionDefinitionKeyIn"))); verify(mockedQuery).decisionDefinitionName(stringQueryParameters.get("decisionDefinitionName")); verify(mockedQuery).decisionDefinitionNameLike(stringQueryParameters.get("decisionDefinitionNameLike")); verify(mockedQuery).processDefinitionId(stringQueryParameters.get("processDefinitionId")); verify(mockedQuery).processDefinitionKey(stringQueryParameters.get("processDefinitionKey")); verify(mockedQuery).processInstanceId(stringQueryParameters.get("processInstanceId")); verify(mockedQuery).caseDefinitionId(stringQueryParameters.get("caseDefinitionId")); verify(mockedQuery).caseDefinitionKey(stringQueryParameters.get("caseDefinitionKey")); verify(mockedQuery).caseInstanceId(stringQueryParameters.get("caseInstanceId")); verify(mockedQuery).activityIdIn(stringArrayConverter.convertQueryParameterToType(stringQueryParameters.get("activityIdIn"))); verify(mockedQuery).activityInstanceIdIn(stringArrayConverter.convertQueryParameterToType(stringQueryParameters.get("activityInstanceIdIn"))); verify(mockedQuery).evaluatedBefore(DateTimeUtil.parseDate(stringQueryParameters.get("evaluatedBefore"))); verify(mockedQuery).evaluatedAfter(DateTimeUtil.parseDate(stringQueryParameters.get("evaluatedAfter"))); verify(mockedQuery).userId(stringQueryParameters.get("userId")); verify(mockedQuery).rootDecisionInstanceId(stringQueryParameters.get("rootDecisionInstanceId")); verify(mockedQuery).decisionRequirementsDefinitionId(stringQueryParameters.get("decisionRequirementsDefinitionId")); verify(mockedQuery).decisionRequirementsDefinitionKey(stringQueryParameters.get("decisionRequirementsDefinitionKey")); verify(mockedQuery).list(); }
public HistoricDecisionInstanceDto getHistoricDecisionInstance(Boolean includeInputs, Boolean includeOutputs, Boolean disableBinaryFetching, Boolean disableCustomObjectDeserialization) { HistoryService historyService = engine.getHistoryService(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionInstanceId(decisionInstanceId); if (includeInputs != null && includeInputs) { query.includeInputs(); } if (includeOutputs != null && includeOutputs) { query.includeOutputs(); } if (disableBinaryFetching != null && disableBinaryFetching) { query.disableBinaryFetching(); } if (disableCustomObjectDeserialization != null && disableCustomObjectDeserialization) { query.disableCustomObjectDeserialization(); } HistoricDecisionInstance instance = query.singleResult(); if (instance == null) { throw new InvalidRequestException(Status.NOT_FOUND, "Historic decision instance with id '" + decisionInstanceId + "' does not exist"); } return HistoricDecisionInstanceDto.fromHistoricDecisionInstance(instance); } }
@SuppressWarnings("unchecked") public List<HistoricDecisionInstance> getHistoricDecisionInstances(Date evaluatedAfter, Date evaluatedAt, int maxResults) { checkIsAuthorizedToReadHistoryOfDecisionDefinitions(); Map<String, Object> params = new HashMap<>(); params.put("evaluatedAfter", evaluatedAfter); params.put("evaluatedAt", evaluatedAt); params.put("maxResults", maxResults); List<HistoricDecisionInstance> decisionInstances = getDbEntityManager().selectList("selectHistoricDecisionInstancePage", params); HistoricDecisionInstanceQueryImpl query = (HistoricDecisionInstanceQueryImpl) new HistoricDecisionInstanceQueryImpl() .disableBinaryFetching() .disableCustomObjectDeserialization() .includeInputs() .includeOutputs(); getHistoricDecisionInstanceManager() .enrichHistoricDecisionsWithInputsAndOutputs(query, decisionInstances); return decisionInstances; }
@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)); }
@Test public void deleteHistoricDecisionInstanceByInstanceIdWithDisabledTenantCheck() { // given testRule.deployForTenant(TENANT_ONE, DMN); testRule.deployForTenant(TENANT_TWO, DMN); evaluateDecisionTable(TENANT_ONE); evaluateDecisionTable(TENANT_TWO); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); List<HistoricDecisionInstance> historicDecisionInstances = query.includeInputs().includeOutputs().list(); assertThat(historicDecisionInstances.size(), is(2)); // when user has no authorization identityService.setAuthentication("user", null, null); // and when tenant check is disabled processEngineConfiguration.setTenantCheckEnabled(false); // and when all decision instances are deleted for(HistoricDecisionInstance in: historicDecisionInstances){ historyService.deleteHistoricDecisionInstanceByInstanceId(in.getId()); } // then identityService.clearAuthentication(); assertThat(query.count(), is(0L)); }
@Test public void testGetSingleHistoricDecisionInstanceWithInputs() { historicInstanceMock = MockProvider.createMockHistoricDecisionInstanceWithInputs(); when(historicQueryMock.singleResult()).thenReturn(historicInstanceMock); Response response = given() .pathParam("id", MockProvider.EXAMPLE_HISTORIC_DECISION_INSTANCE_ID) .queryParam("includeInputs", true) .then().expect() .statusCode(Status.OK.getStatusCode()) .when() .get(HISTORIC_SINGLE_DECISION_INSTANCE_URL); InOrder inOrder = inOrder(historicQueryMock); inOrder.verify(historicQueryMock).decisionInstanceId(MockProvider.EXAMPLE_HISTORIC_DECISION_INSTANCE_ID); inOrder.verify(historicQueryMock).includeInputs(); inOrder.verify(historicQueryMock, never()).includeOutputs(); inOrder.verify(historicQueryMock).singleResult(); String content = response.asString(); List<Map<String, Object>> returnedInputs = from(content).getList("inputs"); List<Map<String, Object>> returnedOutputs = from(content).getList("outputs"); assertThat(returnedInputs, is(notNullValue())); assertThat(returnedInputs, hasSize(3)); assertThat(returnedOutputs, is(nullValue())); }
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); }
@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 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()); }
@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 public void testIncludeInputs() { mockedQuery = setUpMockHistoricDecisionInstanceQuery(Collections.singletonList(MockProvider.createMockHistoricDecisionInstanceWithInputs())); String decisionDefinitionId = MockProvider.EXAMPLE_DECISION_DEFINITION_ID; Response response = given() .queryParam("decisionDefinitionId", decisionDefinitionId) .queryParam("includeInputs", true) .then().expect() .statusCode(Status.OK.getStatusCode()) .when() .get(HISTORIC_DECISION_INSTANCE_RESOURCE_URL); InOrder inOrder = inOrder(mockedQuery); inOrder.verify(mockedQuery).decisionDefinitionId(decisionDefinitionId); inOrder.verify(mockedQuery).includeInputs(); inOrder.verify(mockedQuery, never()).includeOutputs(); inOrder.verify(mockedQuery).list(); String content = response.asString(); List<String> instances = from(content).getList(""); assertEquals(1, instances.size()); Assert.assertNotNull(instances.get(0)); List<Map<String, Object>> returnedInputs = from(content).getList("[0].inputs"); List<Map<String, Object>> returnedOutputs = from(content).getList("[0].outputs"); assertThat(returnedInputs, is(notNullValue())); assertThat(returnedOutputs, is(nullValue())); verifyHistoricDecisionInputInstances(returnedInputs); }
@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 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 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)); }
@Deployment(resources = { DRG_DMN }) public void testQueryByRootDecisionInstanceId() { decisionService.evaluateDecisionTableByKey(DISH_DECISION) .variables(Variables.createVariables().putValue("temperature", 21).putValue("dayType", "Weekend")) .evaluate(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.count(), is(3L)); String rootDecisionInstanceId = query.decisionDefinitionKey(DISH_DECISION).singleResult().getId(); String requiredDecisionInstanceId1 = query.decisionDefinitionKey("season").singleResult().getId(); String requiredDecisionInstanceId2 = query.decisionDefinitionKey("guestCount").singleResult().getId(); query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.rootDecisionInstanceId(rootDecisionInstanceId).count(), is(3L)); assertThat(query.rootDecisionInstanceId(requiredDecisionInstanceId1).count(), is(0L)); assertThat(query.rootDecisionInstanceId(requiredDecisionInstanceId2).count(), is(0L)); }
@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 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_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())); }