public void activateJobDefinitionByProcessDefinitionKey(String processDefinitionKey, boolean activateJobs, Date activationDate) { updateJobDefinitionSuspensionState() .byProcessDefinitionKey(processDefinitionKey) .includeJobs(activateJobs) .executionDate(activationDate) .activate(); }
public void suspendJobDefinitionByProcessDefinitionKey(String processDefinitionKey, boolean suspendJobs, Date suspensionDate) { updateJobDefinitionSuspensionState() .byProcessDefinitionKey(processDefinitionKey) .includeJobs(suspendJobs) .executionDate(suspensionDate) .suspend(); }
public void suspendJobDefinitionByProcessDefinitionKey(String processDefinitionKey, boolean suspendJobs, Date suspensionDate) { updateJobDefinitionSuspensionState() .byProcessDefinitionKey(processDefinitionKey) .includeJobs(suspendJobs) .executionDate(suspensionDate) .suspend(); }
public void activateJobDefinitionById(String jobDefinitionId, boolean activateJobs, Date activationDate) { updateJobDefinitionSuspensionState() .byJobDefinitionId(jobDefinitionId) .includeJobs(activateJobs) .executionDate(activationDate) .activate(); }
public void activateJobDefinitionByProcessDefinitionId(String processDefinitionId, boolean activateJobs, Date activationDate) { updateJobDefinitionSuspensionState() .byProcessDefinitionId(processDefinitionId) .includeJobs(activateJobs) .executionDate(activationDate) .activate(); }
public void activateJobDefinitionByProcessDefinitionKey(String processDefinitionKey, boolean activateJobs, Date activationDate) { updateJobDefinitionSuspensionState() .byProcessDefinitionKey(processDefinitionKey) .includeJobs(activateJobs) .executionDate(activationDate) .activate(); }
public void activateJobDefinitionById(String jobDefinitionId, boolean activateJobs, Date activationDate) { updateJobDefinitionSuspensionState() .byJobDefinitionId(jobDefinitionId) .includeJobs(activateJobs) .executionDate(activationDate) .activate(); }
public void suspendJobDefinitionById(String jobDefinitionId, boolean suspendJobs, Date suspensionDate) { updateJobDefinitionSuspensionState() .byJobDefinitionId(jobDefinitionId) .includeJobs(suspendJobs) .executionDate(suspensionDate) .suspend(); }
public void activateJobDefinitionByProcessDefinitionId(String processDefinitionId, boolean activateJobs, Date activationDate) { updateJobDefinitionSuspensionState() .byProcessDefinitionId(processDefinitionId) .includeJobs(activateJobs) .executionDate(activationDate) .activate(); }
public void suspendJobDefinitionByProcessDefinitionId(String processDefinitionId, boolean suspendJobs, Date suspensionDate) { updateJobDefinitionSuspensionState() .byProcessDefinitionId(processDefinitionId) .includeJobs(suspendJobs) .executionDate(suspensionDate) .suspend(); }
public void suspendJobDefinitionById(String jobDefinitionId, boolean suspendJobs, Date suspensionDate) { updateJobDefinitionSuspensionState() .byJobDefinitionId(jobDefinitionId) .includeJobs(suspendJobs) .executionDate(suspensionDate) .suspend(); }
public void suspendJobDefinitionByProcessDefinitionId(String processDefinitionId, boolean suspendJobs, Date suspensionDate) { updateJobDefinitionSuspensionState() .byProcessDefinitionId(processDefinitionId) .includeJobs(suspendJobs) .executionDate(suspensionDate) .suspend(); }
@Override public void updateSuspensionState(ProcessEngine engine) { int params = (jobDefinitionId != null ? 1 : 0) + (processDefinitionId != null ? 1 : 0) + (processDefinitionKey != null ? 1 : 0); if (params > 1) { String message = "Only one of jobDefinitionId, processDefinitionId or processDefinitionKey should be set to update the suspension state."; throw new InvalidRequestException(Status.BAD_REQUEST, message); } else if (params == 0) { String message = "Either jobDefinitionId, processDefinitionId or processDefinitionKey should be set to update the suspension state."; throw new InvalidRequestException(Status.BAD_REQUEST, message); } UpdateJobDefinitionSuspensionStateBuilder updateSuspensionStateBuilder = createUpdateSuspensionStateBuilder(engine); if (executionDate != null && !executionDate.equals("")) { Date delayedExecutionDate = DateTimeUtil.parseDate(executionDate); updateSuspensionStateBuilder.executionDate(delayedExecutionDate); } updateSuspensionStateBuilder.includeJobs(includeJobs); if (getSuspended()) { updateSuspensionStateBuilder.suspend(); } else { updateSuspensionStateBuilder.activate(); } }
@Override public void updateSuspensionState(ProcessEngine engine) { int params = (jobDefinitionId != null ? 1 : 0) + (processDefinitionId != null ? 1 : 0) + (processDefinitionKey != null ? 1 : 0); if (params > 1) { String message = "Only one of jobDefinitionId, processDefinitionId or processDefinitionKey should be set to update the suspension state."; throw new InvalidRequestException(Status.BAD_REQUEST, message); } else if (params == 0) { String message = "Either jobDefinitionId, processDefinitionId or processDefinitionKey should be set to update the suspension state."; throw new InvalidRequestException(Status.BAD_REQUEST, message); } UpdateJobDefinitionSuspensionStateBuilder updateSuspensionStateBuilder = createUpdateSuspensionStateBuilder(engine); if (executionDate != null && !executionDate.equals("")) { Date delayedExecutionDate = DateTimeUtil.parseDate(executionDate); updateSuspensionStateBuilder.executionDate(delayedExecutionDate); } updateSuspensionStateBuilder.includeJobs(includeJobs); if (getSuspended()) { updateSuspensionStateBuilder.suspend(); } else { updateSuspensionStateBuilder.activate(); } }
@Test public void delayedSuspendJobDefinitionsForTenant() { // given activated job definitions engineRule.getManagementService() .updateJobDefinitionSuspensionState() .byProcessDefinitionKey(PROCESS_DEFINITION_KEY) .processDefinitionTenantId(TENANT_ONE) .executionDate(tomorrow()) .suspend(); JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); assertThat(query.active().count(), is(3L)); assertThat(query.suspended().count(), is(0L)); // when execute the job to suspend the job definitions Job job = engineRule.getManagementService().createJobQuery().timers().singleResult(); assertThat(job, is(notNullValue())); engineRule.getManagementService().executeJob(job.getId()); assertThat(query.active().count(), is(2L)); assertThat(query.suspended().count(), is(1L)); assertThat(query.suspended().tenantIdIn(TENANT_ONE).count(), is(1L)); }
@Test public void delayedSuspendJobDefinitionsForNonTenant() { // given activated job definitions engineRule.getManagementService() .updateJobDefinitionSuspensionState() .byProcessDefinitionKey(PROCESS_DEFINITION_KEY) .processDefinitionWithoutTenantId() .executionDate(tomorrow()) .suspend(); JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); assertThat(query.active().count(), is(3L)); assertThat(query.suspended().count(), is(0L)); // when execute the job to suspend the job definitions Job job = engineRule.getManagementService().createJobQuery().timers().singleResult(); assertThat(job, is(notNullValue())); engineRule.getManagementService().executeJob(job.getId()); assertThat(query.active().count(), is(2L)); assertThat(query.suspended().count(), is(1L)); assertThat(query.suspended().withoutTenantId().count(), is(1L)); }
@Test public void delayedActivateJobDefinitionsForTenant() { // given suspend job definitions engineRule.getManagementService() .updateJobDefinitionSuspensionState() .byProcessDefinitionKey(PROCESS_DEFINITION_KEY) .suspend(); engineRule.getManagementService() .updateJobDefinitionSuspensionState() .byProcessDefinitionKey(PROCESS_DEFINITION_KEY) .processDefinitionTenantId(TENANT_ONE) .executionDate(tomorrow()) .activate(); JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); assertThat(query.active().count(), is(0L)); assertThat(query.suspended().count(), is(3L)); // when execute the job to activate the job definitions Job job = engineRule.getManagementService().createJobQuery().timers().singleResult(); assertThat(job, is(notNullValue())); engineRule.getManagementService().executeJob(job.getId()); assertThat(query.suspended().count(), is(2L)); assertThat(query.active().count(), is(1L)); assertThat(query.active().tenantIdIn(TENANT_ONE).count(), is(1L)); }
@Test public void delayedActivateJobDefinitionsForNonTenant() { // given suspend job definitions engineRule.getManagementService() .updateJobDefinitionSuspensionState() .byProcessDefinitionKey(PROCESS_DEFINITION_KEY) .suspend(); engineRule.getManagementService() .updateJobDefinitionSuspensionState() .byProcessDefinitionKey(PROCESS_DEFINITION_KEY) .processDefinitionWithoutTenantId() .executionDate(tomorrow()) .activate(); JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); assertThat(query.active().count(), is(0L)); assertThat(query.suspended().count(), is(3L)); // when execute the job to activate the job definitions Job job = engineRule.getManagementService().createJobQuery().timers().singleResult(); assertThat(job, is(notNullValue())); engineRule.getManagementService().executeJob(job.getId()); assertThat(query.suspended().count(), is(2L)); assertThat(query.active().count(), is(1L)); assertThat(query.active().withoutTenantId().count(), is(1L)); }
@Deployment(resources = {"org/camunda/bpm/engine/test/api/mgmt/SuspensionTest.testBase.bpmn"}) public void testDelayedSuspensionUsingBuilder() { // given // a deployed process definition with asynchronous continuation // a running process instance with a failed job runtimeService.startProcessInstanceByKey("suspensionProcess", Variables.createVariables().putValue("fail", true)); // a job definition (which was created for the asynchronous continuation) JobDefinitionQuery query = managementService.createJobDefinitionQuery(); JobDefinition jobDefinition = query.singleResult(); // when // suspend the job definition in one week managementService .updateJobDefinitionSuspensionState() .byJobDefinitionId(jobDefinition.getId()) .executionDate(oneWeekLater()) .suspend(); // then // the job definition is still active assertEquals(1, query.active().count()); assertEquals(0, query.suspended().count()); // there exists a job for the delayed suspension execution Job delayedSuspensionJob = managementService.createJobQuery().timers().active().singleResult(); assertNotNull(delayedSuspensionJob); // execute job managementService.executeJob(delayedSuspensionJob.getId()); // the job definition should be suspended assertEquals(0, query.active().count()); assertEquals(1, query.suspended().count()); }
.updateJobDefinitionSuspensionState() .byJobDefinitionId(jobDefinition.getId()) .executionDate(oneWeekLater()) .activate();