public Job build() { Job mockJob = mock(Job.class); when(mockJob.getId()).thenReturn(id); when(mockJob.getDuedate()).thenReturn(dueDate); when(mockJob.getExceptionMessage()).thenReturn(exceptionMessage); when(mockJob.getExecutionId()).thenReturn(executionId); when(mockJob.getProcessInstanceId()).thenReturn(processInstanceId); when(mockJob.getProcessDefinitionId()).thenReturn(processDefinitionId); when(mockJob.getProcessDefinitionKey()).thenReturn(processDefinitionKey); when(mockJob.getRetries()).thenReturn(retries); when(mockJob.isSuspended()).thenReturn(suspended); when(mockJob.getPriority()).thenReturn(priority); when(mockJob.getJobDefinitionId()).thenReturn(jobDefinitionId); when(mockJob.getTenantId()).thenReturn(tenantId); when(mockJob.getCreateTime()).thenReturn(createTime); return mockJob; }
public static JobDto fromJob(Job job) { JobDto dto = new JobDto(); dto.id = job.getId(); dto.jobDefinitionId = job.getJobDefinitionId(); dto.processInstanceId = job.getProcessInstanceId(); dto.processDefinitionId = job.getProcessDefinitionId(); dto.processDefinitionKey = job.getProcessDefinitionKey(); dto.executionId = job.getExecutionId(); dto.exceptionMessage = job.getExceptionMessage(); dto.retries = job.getRetries(); dto.dueDate = job.getDuedate(); dto.suspended = job.isSuspended(); dto.priority = job.getPriority(); dto.tenantId = job.getTenantId(); dto.createTime = job.getCreateTime(); return dto; }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testAsyncContinuation.bpmn20.xml"}) public void testQueryByProcessDefinitionId() { runtimeService.startProcessInstanceByKey("process"); String processDefinitionId = managementService.createJobQuery().singleResult().getProcessDefinitionId(); HistoricJobLogQuery query = historyService.createHistoricJobLogQuery().processDefinitionId(processDefinitionId); verifyQueryResults(query, 1); }
public static JobDto fromJob(Job job) { JobDto dto = new JobDto(); dto.id = job.getId(); dto.jobDefinitionId = job.getJobDefinitionId(); dto.processInstanceId = job.getProcessInstanceId(); dto.processDefinitionId = job.getProcessDefinitionId(); dto.processDefinitionKey = job.getProcessDefinitionKey(); dto.executionId = job.getExecutionId(); dto.exceptionMessage = job.getExceptionMessage(); dto.retries = job.getRetries(); dto.dueDate = job.getDuedate(); dto.suspended = job.isSuspended(); dto.priority = job.getPriority(); dto.tenantId = job.getTenantId(); dto.createTime = job.getCreateTime(); return dto; }
public void assertJobCreated(String activityId, String handlerType) { JobDefinition jobDefinitionAfter = snapshotAfterMigration.getJobDefinitionForActivityIdAndType(activityId, handlerType); assertNotNull("Expected that a job definition for activity '" + activityId + "' exists after migration", jobDefinitionAfter); Job jobAfter = snapshotAfterMigration.getJobForDefinitionId(jobDefinitionAfter.getId()); assertNotNull("Expected that a job for activity '" + activityId + "' exists after migration", jobAfter); assertTimerJob(jobAfter); assertEquals(jobDefinitionAfter.getProcessDefinitionId(), jobAfter.getProcessDefinitionId()); assertEquals(jobDefinitionAfter.getProcessDefinitionKey(), jobAfter.getProcessDefinitionKey()); for (Job job : snapshotBeforeMigration.getJobs()) { if (jobAfter.getId().equals(job.getId())) { fail("Expected job '" + jobAfter.getId() + "' to be created first after migration"); } } }
@Test public void createDeletionJobsByIds() { // given rule.getProcessEngineConfiguration().setBatchJobsPerSeed(5); Batch batch = historyService.deleteHistoricDecisionInstancesAsync(decisionInstanceIds, null); JobDefinition seedJobDefinition = helper.getSeedJobDefinition(batch); JobDefinition deletionJobDefinition = helper.getExecutionJobDefinition(batch);; // when helper.executeSeedJob(batch); // then List<Job> deletionJobs = helper.getJobsForDefinition(deletionJobDefinition); assertEquals(5, deletionJobs.size()); for (Job deletionJob : deletionJobs) { assertEquals(deletionJobDefinition.getId(), deletionJob.getJobDefinitionId()); assertEquals(currentTime, deletionJob.getDuedate()); assertNull(deletionJob.getProcessDefinitionId()); assertNull(deletionJob.getProcessDefinitionKey()); assertNull(deletionJob.getProcessInstanceId()); assertNull(deletionJob.getExecutionId()); } // and the seed job still exists Job seedJob = helper.getJobForDefinition(seedJobDefinition); assertNotNull(seedJob); }
@Test public void createModificationJobs() { ProcessDefinition processDefinition = testRule.deployAndGetDefinition(instance); rule.getProcessEngineConfiguration().setBatchJobsPerSeed(10); Batch batch = helper.startAfterAsync("process1", 20, "user1", processDefinition.getId()); JobDefinition seedJobDefinition = helper.getSeedJobDefinition(batch); JobDefinition modificationJobDefinition = helper.getExecutionJobDefinition(batch);; helper.executeSeedJob(batch); List<Job> modificationJobs = helper.getJobsForDefinition(modificationJobDefinition); assertEquals(10, modificationJobs.size()); for (Job modificationJob : modificationJobs) { assertEquals(modificationJobDefinition.getId(), modificationJob.getJobDefinitionId()); assertEquals(currentTime, modificationJob.getDuedate()); assertNull(modificationJob.getProcessDefinitionId()); assertNull(modificationJob.getProcessDefinitionKey()); assertNull(modificationJob.getProcessInstanceId()); assertNull(modificationJob.getExecutionId()); } // and the seed job still exists Job seedJob = helper.getJobForDefinition(seedJobDefinition); assertNotNull(seedJob); }
@Test public void createDeletionJobsByQuery() { // given rule.getProcessEngineConfiguration().setBatchJobsPerSeed(5); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); Batch batch = historyService.deleteHistoricDecisionInstancesAsync(query, null); JobDefinition seedJobDefinition = helper.getSeedJobDefinition(batch); JobDefinition deletionJobDefinition = helper.getExecutionJobDefinition(batch);; // when helper.executeSeedJob(batch); // then List<Job> deletionJobs = helper.getJobsForDefinition(deletionJobDefinition); assertEquals(5, deletionJobs.size()); for (Job deletionJob : deletionJobs) { assertEquals(deletionJobDefinition.getId(), deletionJob.getJobDefinitionId()); assertEquals(currentTime, deletionJob.getDuedate()); assertNull(deletionJob.getProcessDefinitionId()); assertNull(deletionJob.getProcessDefinitionKey()); assertNull(deletionJob.getProcessInstanceId()); assertNull(deletionJob.getExecutionId()); } // and the seed job still exists Job seedJob = helper.getJobForDefinition(seedJobDefinition); assertNotNull(seedJob); }
@Test public void createDeletionJobsByIdsAndQuery() { // given rule.getProcessEngineConfiguration().setBatchJobsPerSeed(5); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery().decisionDefinitionKey(DECISION); Batch batch = historyService.deleteHistoricDecisionInstancesAsync(decisionInstanceIds, query, null); JobDefinition seedJobDefinition = helper.getSeedJobDefinition(batch); JobDefinition deletionJobDefinition = helper.getExecutionJobDefinition(batch);; // when helper.executeSeedJob(batch); // then List<Job> deletionJobs = helper.getJobsForDefinition(deletionJobDefinition); assertEquals(5, deletionJobs.size()); for (Job deletionJob : deletionJobs) { assertEquals(deletionJobDefinition.getId(), deletionJob.getJobDefinitionId()); assertEquals(currentTime, deletionJob.getDuedate()); assertNull(deletionJob.getProcessDefinitionId()); assertNull(deletionJob.getProcessDefinitionKey()); assertNull(deletionJob.getProcessInstanceId()); assertNull(deletionJob.getExecutionId()); } // and the seed job still exists Job seedJob = helper.getJobForDefinition(seedJobDefinition); assertNotNull(seedJob); }
@Test public void testMigrationJobsCreation() { ClockUtil.setCurrentTime(TEST_DATE); // reduce number of batch jobs per seed to not have to create a lot of instances engineRule.getProcessEngineConfiguration().setBatchJobsPerSeed(10); Batch batch = helper.migrateProcessInstancesAsync(20); JobDefinition seedJobDefinition = helper.getSeedJobDefinition(batch); JobDefinition migrationJobDefinition = helper.getExecutionJobDefinition(batch); String sourceDeploymentId = helper.getSourceProcessDefinition().getDeploymentId(); // when helper.executeSeedJob(batch); // then there exist migration jobs List<Job> migrationJobs = helper.getJobsForDefinition(migrationJobDefinition); assertEquals(10, migrationJobs.size()); for (Job migrationJob : migrationJobs) { assertEquals(migrationJobDefinition.getId(), migrationJob.getJobDefinitionId()); assertEquals(currentTime, migrationJob.getDuedate()); assertEquals(sourceDeploymentId, migrationJob.getDeploymentId()); assertNull(migrationJob.getProcessDefinitionId()); assertNull(migrationJob.getProcessDefinitionKey()); assertNull(migrationJob.getProcessInstanceId()); assertNull(migrationJob.getExecutionId()); } // and the seed job still exists Job seedJob = helper.getJobForDefinition(seedJobDefinition); assertNotNull(seedJob); }
@Deployment(resources = TEST_PROCESS_ATTACHED_TIMER) public void testSetProcessDefinitionVersionAttachedTimer() { // given a process instance ProcessInstance instance = runtimeService.startProcessInstanceByKey("attachedTimer"); // and a second deployment of the process org.camunda.bpm.engine.repository.Deployment deployment = repositoryService .createDeployment() .addClasspathResource(TEST_PROCESS_ATTACHED_TIMER) .deploy(); ProcessDefinition newDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult(); assertNotNull(newDefinition); // when the process instance is migrated CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutorTxRequired(); commandExecutor.execute(new SetProcessDefinitionVersionCmd(instance.getId(), 2)); Job job = managementService.createJobQuery().singleResult(); assertNotNull(job); assertEquals(newDefinition.getId(), job.getProcessDefinitionId()); repositoryService.deleteDeployment(deployment.getId(), true); }
@Test public void createSeedJobByIds() { // when Batch batch = historyService.deleteHistoricDecisionInstancesAsync(decisionInstanceIds, null); // then there exists a seed job definition with the batch id as // configuration JobDefinition seedJobDefinition = helper.getSeedJobDefinition(batch); assertNotNull(seedJobDefinition); assertEquals(batch.getId(), seedJobDefinition.getJobConfiguration()); assertEquals(BatchSeedJobHandler.TYPE, seedJobDefinition.getJobType()); // and there exists a deletion job definition JobDefinition deletionJobDefinition = helper.getExecutionJobDefinition(batch); assertNotNull(deletionJobDefinition); assertEquals(Batch.TYPE_HISTORIC_DECISION_INSTANCE_DELETION, deletionJobDefinition.getJobType()); // and a seed job with no relation to a process or execution etc. Job seedJob = helper.getSeedJob(batch); assertNotNull(seedJob); assertEquals(seedJobDefinition.getId(), seedJob.getJobDefinitionId()); assertEquals(currentTime, seedJob.getDuedate()); assertNull(seedJob.getDeploymentId()); assertNull(seedJob.getProcessDefinitionId()); assertNull(seedJob.getProcessDefinitionKey()); assertNull(seedJob.getProcessInstanceId()); assertNull(seedJob.getExecutionId()); // but no deletion jobs where created List<Job> deletionJobs = helper.getExecutionJobs(batch); assertEquals(0, deletionJobs.size()); }
@Test public void testSeedJobCreation() { ClockUtil.setCurrentTime(TEST_DATE); // when Batch batch = helper.migrateProcessInstancesAsync(10); // then there exists a seed job definition with the batch id as configuration JobDefinition seedJobDefinition = helper.getSeedJobDefinition(batch); assertNotNull(seedJobDefinition); assertEquals(batch.getId(), seedJobDefinition.getJobConfiguration()); assertEquals(BatchSeedJobHandler.TYPE, seedJobDefinition.getJobType()); // and there exists a migration job definition JobDefinition migrationJobDefinition = helper.getExecutionJobDefinition(batch); assertNotNull(migrationJobDefinition); assertEquals(Batch.TYPE_PROCESS_INSTANCE_MIGRATION, migrationJobDefinition.getJobType()); // and a seed job with no relation to a process or execution etc. Job seedJob = helper.getSeedJob(batch); assertNotNull(seedJob); assertEquals(seedJobDefinition.getId(), seedJob.getJobDefinitionId()); assertEquals(currentTime, seedJob.getDuedate()); assertNull(seedJob.getDeploymentId()); assertNull(seedJob.getProcessDefinitionId()); assertNull(seedJob.getProcessDefinitionKey()); assertNull(seedJob.getProcessInstanceId()); assertNull(seedJob.getExecutionId()); // but no migration jobs where created List<Job> migrationJobs = helper.getExecutionJobs(batch); assertEquals(0, migrationJobs.size()); }
public void assertJobMigrated(Job jobBefore, String activityIdAfter, Date dueDateAfter) { Job jobAfter = snapshotAfterMigration.getJobById(jobBefore.getId()); assertNotNull("Expected that a job with id '" + jobBefore.getId() + "' exists after migration", jobAfter); JobDefinition jobDefinitionAfter = snapshotAfterMigration.getJobDefinitionForActivityIdAndType(activityIdAfter, ((JobEntity) jobBefore).getJobHandlerType()); assertNotNull("Expected that a job definition for activity '" + activityIdAfter + "' exists after migration", jobDefinitionAfter); assertEquals(jobBefore.getId(), jobAfter.getId()); assertEquals("Expected that job is assigned to job definition '" + jobDefinitionAfter.getId() + "' after migration", jobDefinitionAfter.getId(), jobAfter.getJobDefinitionId()); assertEquals("Expected that job is assigned to deployment '" + snapshotAfterMigration.getDeploymentId() + "' after migration", snapshotAfterMigration.getDeploymentId(), jobAfter.getDeploymentId()); assertEquals(dueDateAfter, jobAfter.getDuedate()); assertEquals(((JobEntity) jobBefore).getType(), ((JobEntity) jobAfter).getType()); assertEquals(jobBefore.getPriority(), jobAfter.getPriority()); assertEquals(jobDefinitionAfter.getProcessDefinitionId(), jobAfter.getProcessDefinitionId()); assertEquals(jobDefinitionAfter.getProcessDefinitionKey(), jobAfter.getProcessDefinitionKey()); }
@Deployment(resources = { "org/camunda/bpm/engine/test/bpmn/event/signal/SignalEventTest.signalStartEvent.bpmn20.xml", "org/camunda/bpm/engine/test/bpmn/event/signal/SignalEventTests.throwAlertSignalAsync.bpmn20.xml"}) @Test public void testAsyncSignalStartEventJobProperties() { processEngineConfiguration.setEnsureJobDueDateNotNull(false); ProcessDefinition catchingProcessDefinition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("startBySignal") .singleResult(); // given a process instance that throws a signal asynchronously runtimeService.startProcessInstanceByKey("throwSignalAsync"); // where the throwing instance ends immediately // then there is not yet a catching process instance assertEquals(0, runtimeService.createProcessInstanceQuery().count()); // but there is a job for the asynchronous continuation Job asyncJob = managementService.createJobQuery().singleResult(); assertEquals(catchingProcessDefinition.getId(), asyncJob.getProcessDefinitionId()); assertEquals(catchingProcessDefinition.getKey(), asyncJob.getProcessDefinitionKey()); assertNull(asyncJob.getExceptionMessage()); assertNull(asyncJob.getExecutionId()); assertNull(asyncJob.getJobDefinitionId()); assertEquals(0, asyncJob.getPriority()); assertNull(asyncJob.getProcessInstanceId()); assertEquals(3, asyncJob.getRetries()); assertNull(asyncJob.getDuedate()); assertNull(asyncJob.getDeploymentId()); }
assertEquals(job.getProcessDefinitionId(), userOperationLogEntry.getProcessDefinitionId()); assertEquals(job.getProcessDefinitionKey(), userOperationLogEntry.getProcessDefinitionKey()); assertEquals(deploymentId, userOperationLogEntry.getDeploymentId());
@Deployment(resources = TEST_PROCESS_ONE_JOB) public void testSetProcessDefinitionVersionMigrateJob() { // given a process instance ProcessInstance instance = runtimeService.startProcessInstanceByKey("oneJobProcess"); // with a job Job job = managementService.createJobQuery().singleResult(); assertNotNull(job); // and a second deployment of the process org.camunda.bpm.engine.repository.Deployment deployment = repositoryService .createDeployment() .addClasspathResource(TEST_PROCESS_ONE_JOB) .deploy(); ProcessDefinition newDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult(); assertNotNull(newDefinition); // when the process instance is migrated CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutorTxRequired(); commandExecutor.execute(new SetProcessDefinitionVersionCmd(instance.getId(), 2)); // then the the job should also be migrated Job migratedJob = managementService.createJobQuery().singleResult(); assertNotNull(migratedJob); assertEquals(job.getId(), migratedJob.getId()); assertEquals(newDefinition.getId(), migratedJob.getProcessDefinitionId()); assertEquals(deployment.getId(), migratedJob.getDeploymentId()); JobDefinition newJobDefinition = managementService .createJobDefinitionQuery().processDefinitionId(newDefinition.getId()).singleResult(); assertNotNull(newJobDefinition); assertEquals(newJobDefinition.getId(), migratedJob.getJobDefinitionId()); repositoryService.deleteDeployment(deployment.getId(), true); }
@Deployment(resources = { "org/camunda/bpm/engine/test/bpmn/async/FoxJobRetryCmdTest.testFailedServiceTask.bpmn20.xml" }) public void testQueryJobRetryOperationsById() { // given process = runtimeService.startProcessInstanceByKey("failedServiceTask"); Job job = managementService.createJobQuery().processInstanceId(process.getProcessInstanceId()).singleResult(); managementService.setJobRetries(job.getId(), 10); // then assertEquals(1, query().entityType(JOB).operationType(OPERATION_TYPE_SET_JOB_RETRIES).count()); UserOperationLogEntry jobRetryEntry = query() .entityType(JOB) .jobId(job.getId()) .operationType(OPERATION_TYPE_SET_JOB_RETRIES) .singleResult(); assertNotNull(jobRetryEntry); assertEquals(job.getId(), jobRetryEntry.getJobId()); assertEquals("3", jobRetryEntry.getOrgValue()); assertEquals("10", jobRetryEntry.getNewValue()); assertEquals("retries", jobRetryEntry.getProperty()); assertEquals(job.getJobDefinitionId(), jobRetryEntry.getJobDefinitionId()); assertEquals(job.getProcessInstanceId(), jobRetryEntry.getProcessInstanceId()); assertEquals(job.getProcessDefinitionKey(), jobRetryEntry.getProcessDefinitionKey()); assertEquals(job.getProcessDefinitionId(), jobRetryEntry.getProcessDefinitionId()); assertEquals(deploymentId, jobRetryEntry.getDeploymentId()); }
@Test @Deployment(resources = { "org/camunda/bpm/engine/test/bpmn/async/FoxJobRetryCmdTest.testFailedServiceTask.bpmn20.xml" }) public void testQueryJobRetryOperationsById() { // given process = runtimeService.startProcessInstanceByKey("failedServiceTask"); Job job = managementService.createJobQuery().processInstanceId(process.getProcessInstanceId()).singleResult(); managementService.setJobRetries(job.getId(), 10); // then assertEquals(1, query().entityType(JOB).operationType(OPERATION_TYPE_SET_JOB_RETRIES).count()); UserOperationLogEntry jobRetryEntry = query() .entityType(JOB) .jobId(job.getId()) .operationType(OPERATION_TYPE_SET_JOB_RETRIES) .singleResult(); assertNotNull(jobRetryEntry); assertEquals(job.getId(), jobRetryEntry.getJobId()); assertEquals("3", jobRetryEntry.getOrgValue()); assertEquals("10", jobRetryEntry.getNewValue()); assertEquals("retries", jobRetryEntry.getProperty()); assertEquals(job.getJobDefinitionId(), jobRetryEntry.getJobDefinitionId()); assertEquals(job.getProcessInstanceId(), jobRetryEntry.getProcessInstanceId()); assertEquals(job.getProcessDefinitionKey(), jobRetryEntry.getProcessDefinitionKey()); assertEquals(job.getProcessDefinitionId(), jobRetryEntry.getProcessDefinitionId()); }
assertEquals(job.getExecutionId(), historicJob.getExecutionId()); assertEquals(job.getProcessInstanceId(), historicJob.getProcessInstanceId()); assertEquals(job.getProcessDefinitionId(), historicJob.getProcessDefinitionId()); assertEquals(job.getProcessDefinitionKey(), historicJob.getProcessDefinitionKey()); assertEquals(job.getDeploymentId(), historicJob.getDeploymentId());