public Job getJobForDefinitionId(String jobDefinitionId) { List<Job> collectedJobs = new ArrayList<Job>(); for (Job job : getJobs()) { if (jobDefinitionId.equals(job.getJobDefinitionId())) { collectedJobs.add(job); } } if (collectedJobs.isEmpty()) { return null; } else if (collectedJobs.size() == 1) { return collectedJobs.get(0); } else { throw new RuntimeException("There is more than one job for job definition " + jobDefinitionId); } }
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; }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testAsyncContinuation.bpmn20.xml"}) public void testQueryByJobDefinitionId() { runtimeService.startProcessInstanceByKey("process"); String jobDefinitionId = managementService.createJobQuery().singleResult().getJobDefinitionId(); HistoricJobLogQuery query = historyService.createHistoricJobLogQuery().jobDefinitionId(jobDefinitionId); 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 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; }
@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); }
@Deployment public void testTimerStartEvent() { // given ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().singleResult(); JobDefinition jobDefinition = managementService.createJobDefinitionQuery().processDefinitionKey("testProcess").singleResult(); // then assert assertNotNull(jobDefinition); assertEquals(TimerStartEventJobHandler.TYPE, jobDefinition.getJobType()); assertEquals("theStart", jobDefinition.getActivityId()); assertEquals("DATE: 2036-11-14T11:12:22", jobDefinition.getJobConfiguration()); assertEquals(processDefinition.getId(), jobDefinition.getProcessDefinitionId()); // there exists a job with the correct job definition id: Job timerStartJob = managementService.createJobQuery().singleResult(); assertEquals(jobDefinition.getId(), timerStartJob.getJobDefinitionId()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testAsyncContinuation.bpmn20.xml"}) public void testAsyncBeforeJobHandlerType() { processEngineConfiguration.setEnsureJobDueDateNotNull(false); runtimeService.startProcessInstanceByKey("process"); Job job = managementService .createJobQuery() .singleResult(); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(job.getId()) .singleResult(); assertNotNull(historicJob); assertNull(historicJob.getJobDueDate()); assertEquals(job.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("serviceTask", historicJob.getActivityId()); assertEquals(AsyncContinuationJobHandler.TYPE, historicJob.getJobDefinitionType()); assertEquals(MessageJobDeclaration.ASYNC_BEFORE, historicJob.getJobDefinitionConfiguration()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testStartTimerEvent.bpmn20.xml"}) public void testStartTimerEventJobHandlerType() { Job job = managementService .createJobQuery() .singleResult(); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(job.getId()) .singleResult(); assertNotNull(historicJob); assertEquals(job.getId(), historicJob.getJobId()); assertEquals(job.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("theStart", historicJob.getActivityId()); assertEquals(TimerStartEventJobHandler.TYPE, historicJob.getJobDefinitionType()); assertEquals("CYCLE: 0 0/5 * * * ?", historicJob.getJobDefinitionConfiguration()); assertEquals(job.getDuedate(), historicJob.getJobDueDate()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testAsyncContinuation.bpmn20.xml"}) public void testAsyncBeforeJobHandlerTypeDueDateSet() { processEngineConfiguration.setEnsureJobDueDateNotNull(true); Date testDate = ClockTestUtil.setClockToDateWithoutMilliseconds(); runtimeService.startProcessInstanceByKey("process"); Job job = managementService .createJobQuery() .singleResult(); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(job.getId()) .singleResult(); assertNotNull(historicJob); assertEquals(testDate, historicJob.getJobDueDate()); assertEquals(job.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("serviceTask", historicJob.getActivityId()); assertEquals(AsyncContinuationJobHandler.TYPE, historicJob.getJobDefinitionType()); assertEquals(MessageJobDeclaration.ASYNC_BEFORE, historicJob.getJobDefinitionConfiguration()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testAsyncContinuation.bpmn20.xml"}) public void testAsyncAfterJobHandlerType() { processEngineConfiguration.setEnsureJobDueDateNotNull(false); runtimeService.startProcessInstanceByKey("process", Variables.createVariables().putValue("fail", false)); Job job = managementService .createJobQuery() .singleResult(); managementService.executeJob(job.getId()); Job anotherJob = managementService .createJobQuery() .singleResult(); assertFalse(job.getId().equals(anotherJob.getId())); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(anotherJob.getId()) .singleResult(); assertNotNull(historicJob); assertNull(historicJob.getJobDueDate()); assertEquals(anotherJob.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("serviceTask", historicJob.getActivityId()); assertEquals(AsyncContinuationJobHandler.TYPE, historicJob.getJobDefinitionType()); assertEquals(MessageJobDeclaration.ASYNC_AFTER, historicJob.getJobDefinitionConfiguration()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testAsyncContinuation.bpmn20.xml"}) public void testAsyncAfterJobHandlerTypeDueDateSet() { processEngineConfiguration.setEnsureJobDueDateNotNull(true); Date testDate = ClockTestUtil.setClockToDateWithoutMilliseconds(); runtimeService.startProcessInstanceByKey("process", Variables.createVariables().putValue("fail", false)); Job job = managementService .createJobQuery() .singleResult(); managementService.executeJob(job.getId()); Job anotherJob = managementService .createJobQuery() .singleResult(); assertFalse(job.getId().equals(anotherJob.getId())); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(anotherJob.getId()) .singleResult(); assertNotNull(historicJob); assertEquals(testDate, historicJob.getJobDueDate()); assertEquals(anotherJob.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("serviceTask", historicJob.getActivityId()); assertEquals(AsyncContinuationJobHandler.TYPE, historicJob.getJobDefinitionType()); assertEquals(MessageJobDeclaration.ASYNC_AFTER, historicJob.getJobDefinitionConfiguration()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testBoundaryTimerEvent.bpmn20.xml"}) public void testBoundaryTimerEventJobHandlerType() { runtimeService.startProcessInstanceByKey("process"); Job job = managementService .createJobQuery() .singleResult(); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(job.getId()) .singleResult(); assertNotNull(historicJob); assertEquals(job.getId(), historicJob.getJobId()); assertEquals(job.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("timer", historicJob.getActivityId()); assertEquals(TimerExecuteNestedActivityJobHandler.TYPE, historicJob.getJobDefinitionType()); assertEquals("DURATION: PT5M", historicJob.getJobDefinitionConfiguration()); assertEquals(job.getDuedate(), historicJob.getJobDueDate()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testStartTimerEventInsideEventSubProcess.bpmn20.xml"}) public void testStartTimerEventInsideEventSubProcessJobHandlerType() { runtimeService.startProcessInstanceByKey("process"); Job job = managementService .createJobQuery() .singleResult(); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(job.getId()) .singleResult(); assertNotNull(historicJob); assertEquals(job.getId(), historicJob.getJobId()); assertEquals(job.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("subprocessStartEvent", historicJob.getActivityId()); assertEquals(TimerStartEventSubprocessJobHandler.TYPE, historicJob.getJobDefinitionType()); assertEquals("DURATION: PT1M", historicJob.getJobDefinitionConfiguration()); assertEquals(job.getDuedate(), historicJob.getJobDueDate()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricJobLogTest.testIntermediateTimerEvent.bpmn20.xml"}) public void testIntermediateTimerEventJobHandlerType() { runtimeService.startProcessInstanceByKey("process"); Job job = managementService .createJobQuery() .singleResult(); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(job.getId()) .singleResult(); assertNotNull(historicJob); assertEquals(job.getId(), historicJob.getJobId()); assertEquals(job.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("timer", historicJob.getActivityId()); assertEquals(TimerCatchIntermediateEventJobHandler.TYPE, historicJob.getJobDefinitionType()); assertEquals("DURATION: PT1M", historicJob.getJobDefinitionConfiguration()); assertEquals(job.getDuedate(), historicJob.getJobDueDate()); }
@Deployment(resources = { "org/camunda/bpm/engine/test/history/HistoricJobLogTest.testCatchingSignalEvent.bpmn20.xml", "org/camunda/bpm/engine/test/history/HistoricJobLogTest.testThrowingSignalEventAsync.bpmn20.xml" }) public void testCatchingSignalEventJobHandlerType() { processEngineConfiguration.setEnsureJobDueDateNotNull(false); runtimeService.startProcessInstanceByKey("catchSignal"); runtimeService.startProcessInstanceByKey("throwSignal"); Job job = managementService .createJobQuery() .singleResult(); HistoricJobLog historicJob = historyService .createHistoricJobLogQuery() .jobId(job.getId()) .singleResult(); assertNotNull(historicJob); assertNull(historicJob.getJobDueDate()); assertEquals(job.getId(), historicJob.getJobId()); assertEquals(job.getJobDefinitionId(), historicJob.getJobDefinitionId()); assertEquals("signalEvent", historicJob.getActivityId()); assertEquals(ProcessEventJobHandler.TYPE, historicJob.getJobDefinitionType()); assertNull(historicJob.getJobDefinitionConfiguration()); }
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/api/mgmt/IncidentTest.testShouldCreateOneIncidentForNestedExecution.bpmn"}) public void testShouldCreateOneIncidentForNestedExecution() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("failingProcessWithNestedExecutions"); executeAvailableJobs(); Incident incident = runtimeService.createIncidentQuery().processInstanceId(processInstance.getId()).singleResult(); assertNotNull(incident); Job job = managementService.createJobQuery().processInstanceId(processInstance.getId()).singleResult(); assertNotNull(job); String executionIdOfNestedFailingExecution = job.getExecutionId(); assertFalse(processInstance.getId() == executionIdOfNestedFailingExecution); assertNotNull(incident.getId()); assertNotNull(incident.getIncidentTimestamp()); assertEquals(Incident.FAILED_JOB_HANDLER_TYPE, incident.getIncidentType()); assertEquals(AlwaysFailingDelegate.MESSAGE, incident.getIncidentMessage()); assertEquals(executionIdOfNestedFailingExecution, incident.getExecutionId()); assertEquals("theServiceTask", incident.getActivityId()); assertEquals(processInstance.getId(), incident.getProcessInstanceId()); assertEquals(incident.getId(), incident.getCauseIncidentId()); assertEquals(incident.getId(), incident.getRootCauseIncidentId()); assertEquals(job.getId(), incident.getConfiguration()); assertEquals(job.getJobDefinitionId(), incident.getJobDefinitionId()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/api/mgmt/IncidentTest.testShouldCreateOneIncident.bpmn"}) public void testShouldCreateOneIncident() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("failingProcess"); executeAvailableJobs(); Incident incident = runtimeService.createIncidentQuery().processInstanceId(processInstance.getId()).singleResult(); assertNotNull(incident); assertNotNull(incident.getId()); assertNotNull(incident.getIncidentTimestamp()); assertEquals(Incident.FAILED_JOB_HANDLER_TYPE, incident.getIncidentType()); assertEquals(AlwaysFailingDelegate.MESSAGE, incident.getIncidentMessage()); assertEquals(processInstance.getId(), incident.getExecutionId()); assertEquals("theServiceTask", incident.getActivityId()); assertEquals(processInstance.getId(), incident.getProcessInstanceId()); assertEquals(processInstance.getProcessDefinitionId(), incident.getProcessDefinitionId()); assertEquals(incident.getId(), incident.getCauseIncidentId()); assertEquals(incident.getId(), incident.getRootCauseIncidentId()); Job job = managementService.createJobQuery().processInstanceId(processInstance.getId()).singleResult(); assertNotNull(job); assertEquals(job.getId(), incident.getConfiguration()); assertEquals(job.getJobDefinitionId(), incident.getJobDefinitionId()); }