@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testQueryByDecisionDefinitionKey() { startProcessInstanceAndEvaluateDecision(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.decisionDefinitionKey(DECISION_DEFINITION_KEY).count(), is(1L)); assertThat(query.decisionDefinitionKey("other key").count(), is(0L)); }
@Test public void createBatchDeletionByQuery() { // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); // when Batch batch = historyService.deleteHistoricDecisionInstancesAsync(query, null); // then assertBatchCreated(batch, 10); }
@Test public void createBatchDeletionByIdsAndQuery() { // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); // when Batch batch = historyService.deleteHistoricDecisionInstancesAsync(decisionInstanceIds, query, null); // then assertBatchCreated(batch, 10); }
@Test public void createBatchDeletionByInvalidQueryByKey() { // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey("foo"); // then thrown.expect(BadUserRequestException.class); // when historyService.deleteHistoricDecisionInstancesAsync(query, null); }
@Deployment(resources = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testDeleteHistoricDecisionInstances() { HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION_DEFINITION_KEY); startProcessInstanceAndEvaluateDecision(); assertThat(query.count(), is(1L)); DecisionDefinition decisionDefinition = repositoryService.createDecisionDefinitionQuery().singleResult(); historyService.deleteHistoricDecisionInstanceByDefinitionId(decisionDefinition.getId()); assertThat(query.count(), is(0L)); }
@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 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 testDecisionInstancePropertiesOfDrdDecision() { decisionService.evaluateDecisionTableByKey("dish-decision") .variables(Variables.createVariables().putValue("temperature", 21).putValue("dayType", "Weekend")) .evaluate(); DecisionRequirementsDefinition decisionRequirementsDefinition = repositoryService.createDecisionRequirementsDefinitionQuery().singleResult(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.count(), is(3L)); HistoricDecisionInstance rootHistoricDecisionInstance = query.decisionDefinitionKey("dish-decision").singleResult(); HistoricDecisionInstance requiredHistoricDecisionInstance1 = query.decisionDefinitionKey("season").singleResult(); HistoricDecisionInstance requiredHistoricDecisionInstance2 = query.decisionDefinitionKey("guestCount").singleResult(); assertThat(rootHistoricDecisionInstance.getRootDecisionInstanceId(), is(nullValue())); assertThat(rootHistoricDecisionInstance.getDecisionRequirementsDefinitionId(), is(decisionRequirementsDefinition.getId())); assertThat(rootHistoricDecisionInstance.getDecisionRequirementsDefinitionKey(), is(decisionRequirementsDefinition.getKey())); assertThat(requiredHistoricDecisionInstance1.getRootDecisionInstanceId(), is(rootHistoricDecisionInstance.getId())); assertThat(requiredHistoricDecisionInstance1.getDecisionRequirementsDefinitionId(), is(decisionRequirementsDefinition.getId())); assertThat(requiredHistoricDecisionInstance1.getDecisionRequirementsDefinitionKey(), is(decisionRequirementsDefinition.getKey())); assertThat(requiredHistoricDecisionInstance2.getRootDecisionInstanceId(), is(rootHistoricDecisionInstance.getId())); assertThat(requiredHistoricDecisionInstance2.getDecisionRequirementsDefinitionId(), is(decisionRequirementsDefinition.getId())); assertThat(requiredHistoricDecisionInstance2.getDecisionRequirementsDefinitionKey(), is(decisionRequirementsDefinition.getKey())); }
@Test public void testNoCreationOnJobExecutorBatchJobExecutionByIdsAndQuery() { // given // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); historyService.deleteHistoricDecisionInstancesAsync(decisionInstanceIds, query, null); // when testRule.waitForJobExecutorToProcessAllJobs(5000L); // then assertEquals(0, engineRule.getHistoryService().createUserOperationLogQuery().count()); }
@Test public void testNoCreationOnJobExecutorBatchJobExecutionByQuery() { // given // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); historyService.deleteHistoricDecisionInstancesAsync(query, null); // when testRule.waitForJobExecutorToProcessAllJobs(5000L); // then assertEquals(0, engineRule.getHistoryService().createUserOperationLogQuery().count()); }
@Test public void deleteInstancesByQuery() { // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); Batch batch = historyService.deleteHistoricDecisionInstancesAsync(query, null); helper.executeSeedJob(batch); List<Job> deletionJobs = helper.getExecutionJobs(batch); // when for (Job deletionJob : deletionJobs) { helper.executeJob(deletionJob); } // then assertEquals(0, historyService.createHistoricDecisionInstanceQuery().count()); }
@Test public void deleteInstancesByIdsAndQuery() { // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); Batch batch = historyService.deleteHistoricDecisionInstancesAsync(decisionInstanceIds, query, null); helper.executeSeedJob(batch); List<Job> deletionJobs = helper.getExecutionJobs(batch); // when for (Job deletionJob : deletionJobs) { helper.executeJob(deletionJob); } // then assertEquals(0, historyService.createHistoricDecisionInstanceQuery().count()); }
@Test public void testNoCreationOnSyncBatchJobExecutionByIds() { // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); Batch batch = historyService.deleteHistoricDecisionInstancesAsync(query, null); // when engineRule.getIdentityService().setAuthenticatedUserId(USER_ID); executeJobs(batch); engineRule.getIdentityService().clearAuthentication(); // then assertEquals(0, engineRule.getHistoryService().createUserOperationLogQuery().count()); }
@Test public void testNoCreationOnSyncBatchJobExecutionByIdsAndQuery() { // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); Batch batch = historyService.deleteHistoricDecisionInstancesAsync(decisionInstanceIds, query, null); // when engineRule.getIdentityService().setAuthenticatedUserId(USER_ID); executeJobs(batch); engineRule.getIdentityService().clearAuthentication(); // then assertEquals(0, engineRule.getHistoryService().createUserOperationLogQuery().count()); }
@Test @Deployment(resources = { "org/camunda/bpm/engine/test/api/dmn/Example.dmn"}) public void testCleanupHistory() { //given final List<String> ids = prepareHistoricDecisions(); // when authRule .init(scenario) .withUser("demo") .start(); historyService.deleteHistoricDecisionInstancesBulk(ids); //then if (authRule.assertScenario(scenario)) { assertEquals(0, historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION).count()); } }
@Test public void setNullTenantIdForHistoricDecisionInstance_BusinessRuleTask() { String tenantId = null; SetValueOnHistoricDecisionInstanceTenantIdProvider tenantIdProvider = new SetValueOnHistoricDecisionInstanceTenantIdProvider(tenantId); TestTenantIdProvider.delegate = tenantIdProvider; BpmnModelInstance process = Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .businessRuleTask() .camundaDecisionRef(DECISION_DEFINITION_KEY) .camundaAsyncAfter() .endEvent() .done(); testRule.deploy(process, DMN_FILE); // if a process instance is started engineRule.getRuntimeService().createProcessInstanceByKey(PROCESS_DEFINITION_KEY).setVariables(createVariables()).execute(); // then the tenant id provider can set the tenant id to a value HistoricDecisionInstance historicDecisionInstance = engineRule.getHistoryService().createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION_DEFINITION_KEY).singleResult(); assertThat(historicDecisionInstance.getTenantId(), is(nullValue())); }
@Test public void createMonitorJobByIdsAndQuery() { // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); Batch batch = historyService.deleteHistoricDecisionInstancesAsync(decisionInstanceIds, query, null); // when helper.executeSeedJob(batch); // then the seed job definition still exists but the seed job is removed JobDefinition seedJobDefinition = helper.getSeedJobDefinition(batch); assertNotNull(seedJobDefinition); Job seedJob = helper.getSeedJob(batch); assertNull(seedJob); // and a monitor job definition and job exists JobDefinition monitorJobDefinition = helper.getMonitorJobDefinition(batch); assertNotNull(monitorJobDefinition); Job monitorJob = helper.getMonitorJob(batch); assertNotNull(monitorJob); }
@Test public void createMonitorJobByQuery() { // given HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); Batch batch = historyService.deleteHistoricDecisionInstancesAsync(query, null); // when helper.executeSeedJob(batch); // then the seed job definition still exists but the seed job is removed JobDefinition seedJobDefinition = helper.getSeedJobDefinition(batch); assertNotNull(seedJobDefinition); Job seedJob = helper.getSeedJob(batch); assertNull(seedJob); // and a monitor job definition and job exists JobDefinition monitorJobDefinition = helper.getMonitorJobDefinition(batch); assertNotNull(monitorJobDefinition); Job monitorJob = helper.getMonitorJob(batch); assertNotNull(monitorJob); }
@Test public void setsTenantIdForHistoricDecisionInstance_BusinessRuleTask() { String tenantId = TENANT_ID; SetValueOnHistoricDecisionInstanceTenantIdProvider tenantIdProvider = new SetValueOnHistoricDecisionInstanceTenantIdProvider(tenantId); TestTenantIdProvider.delegate = tenantIdProvider; BpmnModelInstance process = Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .businessRuleTask() .camundaDecisionRef(DECISION_DEFINITION_KEY) .camundaAsyncAfter() .endEvent() .done(); testRule.deploy(process, DMN_FILE); // if a process instance is started engineRule.getRuntimeService().createProcessInstanceByKey(PROCESS_DEFINITION_KEY).setVariables(createVariables()).execute(); // then the tenant id provider can set the tenant id to a value HistoricDecisionInstance historicDecisionInstance = engineRule.getHistoryService().createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION_DEFINITION_KEY).singleResult(); assertThat(historicDecisionInstance.getTenantId(), is(tenantId)); }
@Test public void executeBatch() { // given authRule.init(scenario) .withUser("userId") .start(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); Batch batch = historyService.deleteHistoricDecisionInstancesAsync(decisionInstanceIds, query, null); if (batch != null) { Job job = managementService.createJobQuery().jobDefinitionId(batch.getSeedJobDefinitionId()).singleResult(); // seed job managementService.executeJob(job.getId()); for (Job pending : managementService.createJobQuery().jobDefinitionId(batch.getBatchJobDefinitionId()).list()) { managementService.executeJob(pending.getId()); } } // then if (authRule.assertScenario(scenario)) { assertEquals("userId", batch.getCreateUserId()); } } }