public JobDefinition build() { JobDefinition mockJobDefinition = mock(JobDefinition.class); when(mockJobDefinition.getId()).thenReturn(id); when(mockJobDefinition.getActivityId()).thenReturn(activityId); when(mockJobDefinition.getJobConfiguration()).thenReturn(jobConfiguration); when(mockJobDefinition.getOverridingJobPriority()).thenReturn(jobPriority); when(mockJobDefinition.getJobType()).thenReturn(jobType); when(mockJobDefinition.getProcessDefinitionId()).thenReturn(processDefinitionId); when(mockJobDefinition.getProcessDefinitionKey()).thenReturn(processDefinitionKey); when(mockJobDefinition.isSuspended()).thenReturn(suspended); when(mockJobDefinition.getTenantId()).thenReturn(tenantId); return mockJobDefinition; }
public static JobDefinitionDto fromJobDefinition(JobDefinition definition) { JobDefinitionDto dto = new JobDefinitionDto(); dto.id = definition.getId(); dto.processDefinitionId = definition.getProcessDefinitionId(); dto.processDefinitionKey = definition.getProcessDefinitionKey(); dto.jobType = definition.getJobType(); dto.jobConfiguration = definition.getJobConfiguration(); dto.activityId = definition.getActivityId(); dto.suspended = definition.isSuspended(); dto.overridingJobPriority = definition.getOverridingJobPriority(); dto.tenantId = definition.getTenantId(); return dto; }
@Test public void testCreateBothAsyncJobDefinitionWithParseListener() { //given String modelFileName = "jobCreationWithinParseListener.bpmn20.xml"; InputStream in = JobDefinitionCreationWithParseListenerTest.class.getResourceAsStream(modelFileName); DeploymentBuilder builder = engineRule.getRepositoryService().createDeployment().addInputStream(modelFileName, in); //when the asyncBefore and asyncAfter is set to true in the parse listener Deployment deployment = builder.deploy(); engineRule.manageDeployment(deployment); //then there exists two job definitions JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); List<JobDefinition> definitions = query.orderByJobConfiguration().asc().list(); assertEquals(definitions.size(), 2); //asyncAfter JobDefinition asyncAfterAfter = definitions.get(0); assertEquals(asyncAfterAfter.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(asyncAfterAfter.getActivityId(), "servicetask1"); assertEquals(asyncAfterAfter.getJobConfiguration(), MessageJobDeclaration.ASYNC_AFTER); //asyncBefore JobDefinition asyncAfterBefore = definitions.get(1); assertEquals(asyncAfterBefore.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(asyncAfterBefore.getActivityId(), "servicetask1"); assertEquals(asyncAfterBefore.getJobConfiguration(), MessageJobDeclaration.ASYNC_BEFORE); }
@Test public void testCreateBothJobDefinitionWithParseListenerAndAsyncBeforeInXml() { //given the asyncBefore is set in the xml String modelFileName = "jobAsyncBeforeCreationWithinParseListener.bpmn20.xml"; InputStream in = JobDefinitionCreationWithParseListenerTest.class.getResourceAsStream(modelFileName); DeploymentBuilder builder = engineRule.getRepositoryService().createDeployment().addInputStream(modelFileName, in); //when the asyncBefore and asyncAfter is set to true in the parse listener Deployment deployment = builder.deploy(); engineRule.manageDeployment(deployment); //then there exists two job definitions JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); List<JobDefinition> definitions = query.orderByJobConfiguration().asc().list(); assertEquals(definitions.size(), 2); //asyncAfter JobDefinition asyncAfterAfter = definitions.get(0); assertEquals(asyncAfterAfter.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(asyncAfterAfter.getActivityId(), "servicetask1"); assertEquals(asyncAfterAfter.getJobConfiguration(), MessageJobDeclaration.ASYNC_AFTER); //asyncBefore JobDefinition asyncAfterBefore = definitions.get(1); assertEquals(asyncAfterBefore.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(asyncAfterBefore.getActivityId(), "servicetask1"); assertEquals(asyncAfterBefore.getJobConfiguration(), MessageJobDeclaration.ASYNC_BEFORE); }
@Test public void testCreateBothJobDefinitionWithParseListenerAndAsynBothInXml() { //given the asyncBefore AND asyncAfter is set in the xml String modelFileName = "jobAsyncBothCreationWithinParseListener.bpmn20.xml"; InputStream in = JobDefinitionCreationWithParseListenerTest.class.getResourceAsStream(modelFileName); DeploymentBuilder builder = engineRule.getRepositoryService().createDeployment().addInputStream(modelFileName, in); //when the asyncBefore and asyncAfter is set to true in the parse listener Deployment deployment = builder.deploy(); engineRule.manageDeployment(deployment); //then there exists two job definitions JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); List<JobDefinition> definitions = query.orderByJobConfiguration().asc().list(); assertEquals(definitions.size(), 2); //asyncAfter JobDefinition asyncAfterAfter = definitions.get(0); assertEquals(asyncAfterAfter.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(asyncAfterAfter.getActivityId(), "servicetask1"); assertEquals(asyncAfterAfter.getJobConfiguration(), MessageJobDeclaration.ASYNC_AFTER); //asyncBefore JobDefinition asyncAfterBefore = definitions.get(1); assertEquals(asyncAfterBefore.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(asyncAfterBefore.getActivityId(), "servicetask1"); assertEquals(asyncAfterBefore.getJobConfiguration(), MessageJobDeclaration.ASYNC_BEFORE); } }
public static JobDefinitionDto fromJobDefinition(JobDefinition definition) { JobDefinitionDto dto = new JobDefinitionDto(); dto.id = definition.getId(); dto.processDefinitionId = definition.getProcessDefinitionId(); dto.processDefinitionKey = definition.getProcessDefinitionKey(); dto.jobType = definition.getJobType(); dto.jobConfiguration = definition.getJobConfiguration(); dto.activityId = definition.getActivityId(); dto.suspended = definition.isSuspended(); dto.overridingJobPriority = definition.getOverridingJobPriority(); dto.tenantId = definition.getTenantId(); return dto; }
@Test public void testCreateJobDefinitionWithParseListener() { //given String modelFileName = "jobCreationWithinParseListener.bpmn20.xml"; InputStream in = JobDefinitionCreationWithParseListenerTest.class.getResourceAsStream(modelFileName); DeploymentBuilder builder = engineRule.getRepositoryService().createDeployment().addInputStream(modelFileName, in); //when the asyncBefore is set in the parse listener Deployment deployment = builder.deploy(); engineRule.manageDeployment(deployment); //then there exists a new job definition JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); JobDefinition jobDef = query.singleResult(); assertNotNull(jobDef); assertEquals(jobDef.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(jobDef.getActivityId(), "servicetask1"); }
@Test public void testCreateJobDefinitionWithParseListenerAndAsyncInXml() { //given the asyncBefore is set in the xml String modelFileName = "jobAsyncBeforeCreationWithinParseListener.bpmn20.xml"; InputStream in = JobDefinitionCreationWithParseListenerTest.class.getResourceAsStream(modelFileName); DeploymentBuilder builder = engineRule.getRepositoryService().createDeployment().addInputStream(modelFileName, in); //when the asyncBefore is set in the parse listener Deployment deployment = builder.deploy(); engineRule.manageDeployment(deployment); //then there exists only one job definition JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); JobDefinition jobDef = query.singleResult(); assertNotNull(jobDef); assertEquals(jobDef.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(jobDef.getActivityId(), "servicetask1"); } }
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 testDeleteJobDefinitionWithParseListenerAndAsyncInXml() { //given the asyncBefore is set in the xml String modelFileName = "jobAsyncBeforeCreationWithinParseListener.bpmn20.xml"; InputStream in = JobDefinitionCreationWithParseListenerTest.class.getResourceAsStream(modelFileName); DeploymentBuilder builder = engineRule.getRepositoryService().createDeployment().addInputStream(modelFileName, in); //when the asyncBefore is set to false and the asyncAfter to true in the parse listener Deployment deployment = builder.deploy(); engineRule.manageDeployment(deployment); //then there exists one job definition JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); JobDefinition jobDef = query.singleResult(); assertNotNull(jobDef); assertEquals(jobDef.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(jobDef.getActivityId(), "servicetask1"); assertEquals(jobDef.getJobConfiguration(), MessageJobDeclaration.ASYNC_AFTER); }
@Test public void testDeleteNonExistingAndCreateNewJobDefinitionWithParseListener() { //given String modelFileName = "jobCreationWithinParseListener.bpmn20.xml"; InputStream in = JobDefinitionCreationWithParseListenerTest.class.getResourceAsStream(modelFileName); DeploymentBuilder builder = engineRule.getRepositoryService().createDeployment().addInputStream(modelFileName, in); //when the asyncBefore is set to false and the asyncAfter to true in the parse listener Deployment deployment = builder.deploy(); engineRule.manageDeployment(deployment); //then there exists one job definition JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); JobDefinition jobDef = query.singleResult(); assertNotNull(jobDef); assertEquals(jobDef.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(jobDef.getActivityId(), "servicetask1"); assertEquals(jobDef.getJobConfiguration(), MessageJobDeclaration.ASYNC_AFTER); }
@Test public void testDeleteJobDefinitionWithParseListenerAndAsyncBothInXml() { //given the asyncBefore AND asyncAfter is set in the xml String modelFileName = "jobAsyncBothCreationWithinParseListener.bpmn20.xml"; InputStream in = JobDefinitionCreationWithParseListenerTest.class.getResourceAsStream(modelFileName); DeploymentBuilder builder = engineRule.getRepositoryService().createDeployment().addInputStream(modelFileName, in); //when the asyncBefore is set to false and the asyncAfter to true in the parse listener Deployment deployment = builder.deploy(); engineRule.manageDeployment(deployment); //then there exists one job definition JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); JobDefinition jobDef = query.singleResult(); assertNotNull(jobDef); assertEquals(jobDef.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(jobDef.getActivityId(), "servicetask1"); assertEquals(jobDef.getJobConfiguration(), MessageJobDeclaration.ASYNC_AFTER); } }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/asyncTaskProcess.bpmn20.xml"}) public void testClearOverridingPriority() { // given a job definition JobDefinition jobDefinition = managementService.createJobDefinitionQuery().singleResult(); // with an overriding priority ClockUtil.setCurrentTime(new Date(System.currentTimeMillis())); managementService.setOverridingJobPriorityForJobDefinition(jobDefinition.getId(), 42); // when I clear that priority ClockUtil.setCurrentTime(new Date(System.currentTimeMillis() + 10000)); managementService.clearOverridingJobPriorityForJobDefinition(jobDefinition.getId()); // then this is accessible via the op log UserOperationLogEntry userOperationLogEntry = historyService.createUserOperationLogQuery() .orderByTimestamp().desc().listPage(0, 1).get(0); assertNotNull(userOperationLogEntry); assertEquals(EntityTypes.JOB_DEFINITION, userOperationLogEntry.getEntityType()); assertEquals(jobDefinition.getId(), userOperationLogEntry.getJobDefinitionId()); assertEquals(UserOperationLogEntry.OPERATION_TYPE_SET_PRIORITY, userOperationLogEntry.getOperationType()); assertEquals("overridingPriority", userOperationLogEntry.getProperty()); assertNull(userOperationLogEntry.getNewValue()); assertEquals("42", userOperationLogEntry.getOrgValue()); assertEquals(USER_ID, userOperationLogEntry.getUserId()); assertEquals(jobDefinition.getProcessDefinitionId(), userOperationLogEntry.getProcessDefinitionId()); assertEquals(jobDefinition.getProcessDefinitionKey(), userOperationLogEntry.getProcessDefinitionKey()); assertEquals(deploymentId, userOperationLogEntry.getDeploymentId()); }
public void testSetJobRetriesByJobDefinitionIdWithoutAuthorization() { // given disableAuthorization(); JobDefinition jobDefinition = managementService.createJobDefinitionQuery().listPage(0, 1).get(0); enableAuthorization(); String jobDefinitionId = jobDefinition.getId(); try { // when managementService.setJobRetriesByJobDefinitionId(jobDefinitionId, 1); fail("Exception expected: It should not be possible to set job retries"); } catch (AuthorizationException e) { // then String message = e.getMessage(); assertTextPresent(userId, message); assertTextPresent(UPDATE.getName(), message); assertTextPresent(PROCESS_INSTANCE.resourceName(), message); assertTextPresent(UPDATE_INSTANCE.getName(), message); assertTextPresent(jobDefinition.getProcessDefinitionKey(), message); assertTextPresent(PROCESS_DEFINITION.resourceName(), message); assertTextPresent(ProcessInstancePermissions.RETRY_JOB.getName(), message); assertTextPresent(ProcessDefinitionPermissions.RETRY_JOB.getName(), message); } }
public void testSetJobRetriesByJobDefinitionIdWithRevokeRetryJobPermission() { // given String processInstanceId = startProcessInstanceByKey(TIMER_BOUNDARY_PROCESS_KEY).getId(); createGrantAuthorization(PROCESS_DEFINITION, processInstanceId, userId, UPDATE); createRevokeAuthorization(PROCESS_DEFINITION, processInstanceId, userId, ProcessDefinitionPermissions.RETRY_JOB); JobDefinition jobDefinition = selectJobDefinitionByProcessDefinitionKey(TIMER_BOUNDARY_PROCESS_KEY); try { // when managementService.setJobRetriesByJobDefinitionId(jobDefinition.getId(), 1); fail("Exception expected: It should not be possible to set job retries"); } catch (AuthorizationException e) { // then String message = e.getMessage(); assertTextPresent(userId, message); assertTextPresent(UPDATE.getName(), message); assertTextPresent(PROCESS_INSTANCE.resourceName(), message); assertTextPresent(UPDATE_INSTANCE.getName(), message); assertTextPresent(jobDefinition.getProcessDefinitionKey(), message); assertTextPresent(PROCESS_DEFINITION.resourceName(), message); assertTextPresent(ProcessInstancePermissions.RETRY_JOB.getName(), message); assertTextPresent(ProcessDefinitionPermissions.RETRY_JOB.getName(), message); } }
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/history/asyncTaskProcess.bpmn20.xml"}) public void testSetOverridingPriority() { // given a job definition JobDefinition jobDefinition = managementService.createJobDefinitionQuery().singleResult(); // when I set a job priority managementService.setOverridingJobPriorityForJobDefinition(jobDefinition.getId(), 42); // then an op log entry is written UserOperationLogEntry userOperationLogEntry = historyService.createUserOperationLogQuery().singleResult(); assertNotNull(userOperationLogEntry); assertEquals(EntityTypes.JOB_DEFINITION, userOperationLogEntry.getEntityType()); assertEquals(jobDefinition.getId(), userOperationLogEntry.getJobDefinitionId()); assertEquals(UserOperationLogEntry.OPERATION_TYPE_SET_PRIORITY, userOperationLogEntry.getOperationType()); assertEquals("overridingPriority", userOperationLogEntry.getProperty()); assertEquals("42", userOperationLogEntry.getNewValue()); assertEquals(null, userOperationLogEntry.getOrgValue()); assertEquals(USER_ID, userOperationLogEntry.getUserId()); assertEquals(jobDefinition.getProcessDefinitionId(), userOperationLogEntry.getProcessDefinitionId()); assertEquals(jobDefinition.getProcessDefinitionKey(), userOperationLogEntry.getProcessDefinitionKey()); assertEquals(deploymentId, userOperationLogEntry.getDeploymentId()); }
public static JobDefinitionDto fromJobDefinition(JobDefinition definition) { JobDefinitionDto dto = new JobDefinitionDto(); dto.id = definition.getId(); dto.processDefinitionId = definition.getProcessDefinitionId(); dto.processDefinitionKey = definition.getProcessDefinitionKey(); dto.jobType = definition.getJobType(); dto.jobConfiguration = definition.getJobConfiguration(); dto.activityId = definition.getActivityId(); dto.suspended = definition.isSuspended(); dto.overridingJobPriority = definition.getOverridingJobPriority(); dto.tenantId = definition.getTenantId(); return dto; }
@Test public void testCreateJobDefinitionWithParseListener() { //given String modelFileName = "jobCreationWithinParseListener.bpmn20.xml"; InputStream in = JobDefinitionCreationWithParseListenerTest.class.getResourceAsStream(modelFileName); DeploymentBuilder builder = engineRule.getRepositoryService().createDeployment().addInputStream(modelFileName, in); //when the asyncBefore is set in the parse listener Deployment deployment = builder.deploy(); engineRule.manageDeployment(deployment); //then there exists a new job definition JobDefinitionQuery query = engineRule.getManagementService().createJobDefinitionQuery(); JobDefinition jobDef = query.singleResult(); assertNotNull(jobDef); assertEquals(jobDef.getProcessDefinitionKey(), "oneTaskProcess"); assertEquals(jobDef.getActivityId(), "servicetask1"); }
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"); } } }