private void verifyParameterQueryInvocations() { Map<String, Object> parameters = getCompleteParameters(); verify(mockQuery).jobId((String) parameters.get("jobId")); verify(mockQuery).processInstanceId((String) parameters.get("processInstanceId")); verify(mockQuery).processDefinitionId((String) parameters.get("processDefinitionId")); verify(mockQuery).processDefinitionKey((String) parameters.get("processDefinitionKey")); verify(mockQuery).executionId((String) parameters.get("executionId")); verify(mockQuery).activityId((String) parameters.get("activityId")); verify(mockQuery).withRetriesLeft(); verify(mockQuery).executable(); verify(mockQuery).timers(); verify(mockQuery).withException(); verify(mockQuery).exceptionMessage((String) parameters.get("exceptionMessage")); verify(mockQuery).noRetriesLeft(); verify(mockQuery).active(); verify(mockQuery).suspended(); verify(mockQuery).priorityLowerThanOrEquals(JOB_QUERY_MAX_PRIORITY); verify(mockQuery).priorityHigherThanOrEquals(JOB_QUERY_MIN_PRIORITY); verify(mockQuery).jobDefinitionId(MockProvider.EXAMPLE_JOB_DEFINITION_ID); }
private Date testExpression(String timeExpression) { // Set the clock fixed HashMap<String, Object> variables1 = new HashMap<String, Object>(); variables1.put("dueDate", timeExpression); // After process start, there should be timer created ProcessInstance pi1 = runtimeService.startProcessInstanceByKey("intermediateTimerEventExample", variables1); assertEquals(1, managementService.createJobQuery().processInstanceId(pi1.getId()).count()); List<Job> jobs = managementService.createJobQuery().executable().list(); assertEquals(1, jobs.size()); return jobs.get(0).getDuedate(); }
protected Job selectJobByProcessInstanceId(String processInstanceId) { Job job = managementService .createJobQuery() .processInstanceId(processInstanceId) .singleResult(); return job; } }
public static boolean areJobsAvailable(ProcessEngineConfigurationImpl processEngineConfiguration) { return !processEngineConfiguration .getManagementService() .createJobQuery() .executable() .list() .isEmpty(); }
public boolean isCompleted() { return Context.getCommandContext().getProcessEngineConfiguration() .getManagementService() .createJobQuery() .jobDefinitionId(batchJobDefinitionId) .count() == 0; }
@Test public void suspendProcessInstanceIncludingJobForTenant() { // given activated jobs JobQuery query = engineRule.getManagementService().createJobQuery(); assertThat(query.active().count(), is(3L)); assertThat(query.suspended().count(), is(0L)); engineRule.getRuntimeService() .updateProcessInstanceSuspensionState() .byProcessDefinitionKey(PROCESS_DEFINITION_KEY) .processDefinitionTenantId(TENANT_ONE) .suspend(); assertThat(query.active().count(), is(2L)); assertThat(query.suspended().count(), is(1L)); assertThat(query.suspended().tenantIdIn(TENANT_ONE).count(), is(1L)); }
protected void executeSeedAndBatchJobs(Batch batch) { 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()); } }
@Override public JobDto getJob() { ManagementService managementService = engine.getManagementService(); Job job = managementService.createJobQuery().jobId(jobId).singleResult(); if (job == null) { throw new InvalidRequestException(Status.NOT_FOUND, "Job with id " + jobId + " does not exist"); } return JobDto.fromJob(job); }
private static void causeIncident(ProcessEngine processEngine, String processInstanceId) { Job job = processEngine.getManagementService() .createJobQuery() .processInstanceId(processInstanceId) .withRetriesLeft() .singleResult(); if (job == null) { return; } try { processEngine.getManagementService().executeJob(job.getId()); } catch (Exception ex) { // noop } causeIncident(processEngine, processInstanceId); }
@Test public void testJobQueryWithExceptions() throws Throwable { createJobWithoutExceptionMsg(); Job job = managementService.createJobQuery().jobId(timerEntity.getId()).singleResult(); assertNotNull(job); List<Job> list = managementService.createJobQuery().withException().list(); assertEquals(list.size(), 1); deleteJobInDatabase(); createJobWithoutExceptionStacktrace(); job = managementService.createJobQuery().jobId(timerEntity.getId()).singleResult(); assertNotNull(job); list = managementService.createJobQuery().withException().list(); assertEquals(list.size(), 1); deleteJobInDatabase(); }
@Deployment(resources = "org/camunda/bpm/engine/test/bpmn/job/miBodyAsyncProcess.bpmn20.xml") public void FAILING_testMultiInstanceBodyActivityPriority() { // given a process instance that executes an async mi body runtimeService.startProcessInstanceByKey("miBodyAsyncPriorityProcess"); // then there is a job that has the priority as defined on the activity assertEquals(1, managementService.createJobQuery().count()); Job miBodyJob = managementService.createJobQuery().singleResult(); assertNotNull(miBodyJob); assertEquals(5, miBodyJob.getPriority()); }
@Test public void testQueryByExecutionId() { Job job = managementService.createJobQuery().processInstanceId(processInstanceIdOne).singleResult(); JobQuery query = managementService.createJobQuery().executionId(job.getExecutionId()); assertEquals(query.singleResult().getId(), job.getId()); verifyQueryResults(query, 1); }
protected void stillOneJobWithExceptionAndRetriesLeft(String jobId) { assertEquals(1, managementService.createJobQuery().jobId(jobId).withException().count()); assertEquals(1, managementService.createJobQuery().jobId(jobId).withRetriesLeft().count()); }
private void executeAvailableJobs(int jobsExecuted, int expectedExecutions, boolean ignoreLessExecutions) { List<Job> jobs = managementService.createJobQuery().withRetriesLeft().list(); if (jobs.isEmpty()) { assertTrue("executed less jobs than expected. expected <" + expectedExecutions + "> actual <" + jobsExecuted + ">", jobsExecuted == expectedExecutions || ignoreLessExecutions); return; } for (Job job : jobs) { try { managementService.executeJob(job.getId()); jobsExecuted += 1; } catch (Exception e) {} } assertTrue("executed more jobs than expected. expected <" + expectedExecutions + "> actual <" + jobsExecuted + ">", jobsExecuted <= expectedExecutions); executeAvailableJobs(jobsExecuted, expectedExecutions, ignoreLessExecutions); }
@Test @Deployment(resources = {"org/camunda/bpm/engine/test/api/mgmt/ManagementServiceTest.testGetJobExceptionStacktrace.bpmn20.xml"}) public void testQueryByExceptionMessage() { JobQuery query = managementService.createJobQuery().exceptionMessage(EXCEPTION_MESSAGE); verifyQueryResults(query, 0); ProcessInstance processInstance = startProcessInstanceWithFailingJob(); Job job = managementService.createJobQuery().processInstanceId(processInstance.getId()).singleResult(); query = managementService.createJobQuery().exceptionMessage(job.getExceptionMessage()); verifyFailedJob(query, processInstance); }
public Job getJobForDefinition(JobDefinition jobDefinition) { if (jobDefinition != null) { return getManagementService() .createJobQuery().jobDefinitionId(jobDefinition.getId()).singleResult(); } else { return null; } }
@Test public void suspendProcessInstanceIncludingJobForNonTenant() { // given activated jobs JobQuery query = engineRule.getManagementService().createJobQuery(); assertThat(query.active().count(), is(3L)); assertThat(query.suspended().count(), is(0L)); engineRule.getRuntimeService() .updateProcessInstanceSuspensionState() .byProcessDefinitionKey(PROCESS_DEFINITION_KEY) .processDefinitionWithoutTenantId() .suspend(); assertThat(query.active().count(), is(2L)); assertThat(query.suspended().count(), is(1L)); assertThat(query.suspended().singleResult().getTenantId(), is(nullValue())); }
@Test public void testFailingJobBoundaryTimerWithDelegateVariables() throws InterruptedException { ProcessInstance pi = runtimeService.startProcessInstanceByKey("ImmediatelyFailing"); List<Job> jobs = managementService.createJobQuery().list(); assertEquals(1, jobs.size()); assertEquals(3, jobs.get(0).getRetries()); assertEquals(1, runtimeService.createExecutionQuery().processInstanceId(pi.getProcessInstanceId()).activityId("usertask1").count()); assertEquals(2, runtimeService.createExecutionQuery().processInstanceId(pi.getProcessInstanceId()).count()); assertEquals(1, managementService.createJobQuery().executable().count()); waitForJobExecutorToProcessAllJobs(); assertEquals(0, managementService.createJobQuery().executable().count()); // should be 0, because it has failed 3 times assertEquals(1, managementService.createJobQuery().withException().count()); // should be 1, because job failed! assertEquals(1, runtimeService.createExecutionQuery().processInstanceId(pi.getProcessInstanceId()).activityId("usertask1").count()); assertEquals(2, runtimeService.createExecutionQuery().processInstanceId(pi.getProcessInstanceId()).count()); taskService.complete(taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult().getId()); // complete task with failed job => complete process assertEquals(0, runtimeService.createExecutionQuery().processInstanceId(pi.getProcessInstanceId()).count()); assertEquals(0, managementService.createJobQuery().count()); // should be 0, because process is finished. }
public Void call() throws Exception { List<Job> jobs = managementService.createJobQuery().processDefinitionKey(key).withRetriesLeft().list(); if (jobs.isEmpty()) { enableAuthorization(); return null; } for (Job job : jobs) { try { managementService.executeJob(job.getId()); } catch (Exception e) {} } executeAvailableJobs(key); return null; } });
@Test public void testJobRetriesDecremented_multiple() { for(int i = 0; i < 50; i++) { runtimeService.startProcessInstanceByKey("theProcess"); } Assert.assertEquals(50, managementService.createJobQuery().withRetriesLeft().count()); waitForJobExecutorToProcessAllJobs(6 * 60 * 1000); // now the retries = 0 Assert.assertEquals(0, managementService.createJobQuery().withRetriesLeft().count()); Assert.assertEquals(51, managementService.createJobQuery().noRetriesLeft().count()); }