@Test public void shouldCheckCreateTimeOnTimer() { // given testRule.deploy(Bpmn.createExecutableProcess("process") .startEvent() .timerWithDuration("PT5S") .endEvent() .done()); runtimeService.startProcessInstanceByKey("process"); // when Job timerJob = managementService.createJobQuery().singleResult(); // then assertThat(timerJob.getCreateTime(), is(CREATE_DATE)); assertThat(timerJob.getClass().getSimpleName(), is("TimerEntity")); // cleanup jobIds.add(timerJob.getId()); }
public void testPropagateTenantIdToStartTimerJobDefinition() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .timerWithDuration("PT1M") .endEvent() .done()); // the job definition is created on deployment JobDefinition jobDefinition = managementService.createJobDefinitionQuery().singleResult(); assertThat(jobDefinition, is(notNullValue())); // inherit the tenant id from process definition assertThat(jobDefinition.getTenantId(), is(TENANT_ID)); }
public void testPropagateTenantIdToFailedStartTimerIncident() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .timerWithDuration("PT1M") .serviceTask() .camundaExpression("${failing}") .endEvent() .done()); executeAvailableJobs(); Incident incident = runtimeService.createIncidentQuery().singleResult(); assertThat(incident, is(notNullValue())); // inherit the tenant id from job assertThat(incident.getTenantId(), is(TENANT_ID)); }
@Override protected void setUp() { BpmnModelInstance process = Bpmn.createExecutableProcess("testProcess") .startEvent() .timerWithDuration("PT1M") .userTask() .endEvent() .done(); deployment(process); deploymentForTenant(TENANT_ONE, process); deploymentForTenant(TENANT_TWO, process); // the deployed process definition contains a timer start event // - so a job definition is created on deployment. }
@Test public void setAuthenticatedTenantForTimerStartEvent() { testRule.deployForTenant(TENANT_ID, Bpmn.createExecutableProcess("process") .startEvent() .timerWithDuration("PT1M") .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .userTask() .endEvent() .done()); AssertingJavaDelegate.addAsserts(hasAuthenticatedTenantId(TENANT_ID)); ClockUtil.setCurrentTime(tomorrow()); testRule.waitForJobExecutorToProcessAllJobs(); assertThat(engineRule.getTaskService().createTaskQuery().count(), is(1L)); }
@Override public MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, String parentId, String subProcessId, String startEventId) { ModifiableBpmnModelInstance.wrap(modelInstance) .addSubProcessTo(parentId) .id(subProcessId) .triggerByEvent() .embeddedSubProcess() .startEvent(startEventId).timerWithDuration("PT10M") .subProcessDone() .done(); TimerEventTrigger trigger = new TimerEventTrigger(); trigger.engine = engine; trigger.activityId = startEventId; trigger.handlerType = TimerStartEventSubprocessJobHandler.TYPE; return trigger; }
.removeChildren(EVENT_SUB_PROCESS_START_ID) .startEventBuilder(EVENT_SUB_PROCESS_START_ID) .timerWithDuration("PT50M") .done();
@Test public void failedJobRetryTimeCycle() { testRule.deployForTenant(TENANT_ONE, Bpmn.createExecutableProcess("failingProcess") .startEvent() .timerWithDuration("PT1M") .camundaFailedJobRetryTimeCycle("R5/PT1M") .serviceTask() .camundaExpression("${failing}") .endEvent() .done()); testRule.deployForTenant(TENANT_TWO, Bpmn.createExecutableProcess("failingProcess") .startEvent() .timerWithDuration("PT1M") .camundaFailedJobRetryTimeCycle("R4/PT1M") .serviceTask() .camundaExpression("${failing}") .endEvent() .done()); List<Job> jobs = managementService.createJobQuery().timers().list(); executeFailingJobs(jobs); Job jobTenantOne = managementService.createJobQuery().tenantIdIn(TENANT_ONE).singleResult(); Job jobTenantTwo = managementService.createJobQuery().tenantIdIn(TENANT_TWO).singleResult(); assertThat(jobTenantOne.getRetries(), is(4)); assertThat(jobTenantTwo.getRetries(), is(3)); }
public void testInterruptingWithDurationExpression() { // given Mocks.register("duration", "PT60S"); ProcessBuilder processBuilder = Bpmn.createExecutableProcess("process"); BpmnModelInstance modelInstance = processBuilder .startEvent().timerWithDuration("${duration}") .userTask("aTaskName") .endEvent() .done(); deploymentId = repositoryService.createDeployment() .addModelInstance("process.bpmn", modelInstance).deploy() .getId(); // when String jobId = managementService.createJobQuery() .singleResult() .getId(); managementService.executeJob(jobId); // then assertEquals(1, taskService.createTaskQuery().taskName("aTaskName").list().size()); // cleanup Mocks.reset(); }
public void testRetryOnTimerStartEventWithExpression() { BpmnModelInstance bpmnModelInstance = Bpmn.createExecutableProcess("process") .startEvent() .camundaFailedJobRetryTimeCycle("${var}") .timerWithDuration("PT5M") .serviceTask() .camundaClass("bar") .endEvent() .done(); deployment(bpmnModelInstance); Job job = managementService.createJobQuery().singleResult(); // when job fails try { managementService.executeJob(job.getId()); } catch (Exception e) { // ignore } // then job = managementService.createJobQuery().singleResult(); Assert.assertEquals(2, job.getRetries()); // default behaviour }
public void testInterruptingWithDurationExpressionInEventSubprocess() { // given ProcessBuilder processBuilder = Bpmn.createExecutableProcess("process"); BpmnModelInstance modelInstance = processBuilder .startEvent() .userTask() .endEvent() .done(); processBuilder.eventSubProcess() .startEvent().timerWithDuration("${duration}") .userTask("taskInSubprocess") .endEvent(); deploymentId = repositoryService.createDeployment() .addModelInstance("process.bpmn", modelInstance).deploy() .getId(); // when runtimeService.startProcessInstanceByKey("process", Variables.createVariables() .putValue("duration", "PT60S")); String jobId = managementService.createJobQuery() .singleResult() .getId(); managementService.executeJob(jobId); // then assertEquals(1, taskService.createTaskQuery().taskName("taskInSubprocess").list().size()); }
public void testNonInterruptingWithDurationExpressionInEventSubprocess() { // given ProcessBuilder processBuilder = Bpmn.createExecutableProcess("process"); BpmnModelInstance modelInstance = processBuilder .startEvent() .userTask() .endEvent().done(); processBuilder.eventSubProcess() .startEvent().interrupting(false).timerWithDuration("${duration}") .userTask("taskInSubprocess") .endEvent(); deploymentId = repositoryService.createDeployment() .addModelInstance("process.bpmn", modelInstance).deploy() .getId(); // when runtimeService.startProcessInstanceByKey("process", Variables.createVariables() .putValue("duration", "PT60S")); String jobId = managementService.createJobQuery() .singleResult() .getId(); managementService.executeJob(jobId); // then assertEquals(1, taskService.createTaskQuery().taskName("taskInSubprocess").list().size()); }
@Test public void shouldCheckCreateTimeOnTimer() { // given testRule.deploy(Bpmn.createExecutableProcess("process") .startEvent() .timerWithDuration("PT5S") .endEvent() .done()); runtimeService.startProcessInstanceByKey("process"); // when Job timerJob = managementService.createJobQuery().singleResult(); // then assertThat(timerJob.getCreateTime(), is(CREATE_DATE)); assertThat(timerJob.getClass().getSimpleName(), is("TimerEntity")); // cleanup jobIds.add(timerJob.getId()); }
public void testPropagateTenantIdToStartTimerJobDefinition() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .timerWithDuration("PT1M") .endEvent() .done()); // the job definition is created on deployment JobDefinition jobDefinition = managementService.createJobDefinitionQuery().singleResult(); assertThat(jobDefinition, is(notNullValue())); // inherit the tenant id from process definition assertThat(jobDefinition.getTenantId(), is(TENANT_ID)); }
public void testPropagateTenantIdToFailedStartTimerIncident() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .timerWithDuration("PT1M") .serviceTask() .camundaExpression("${failing}") .endEvent() .done()); executeAvailableJobs(); Incident incident = runtimeService.createIncidentQuery().singleResult(); assertThat(incident, is(notNullValue())); // inherit the tenant id from job assertThat(incident.getTenantId(), is(TENANT_ID)); }
@Override protected void setUp() { BpmnModelInstance process = Bpmn.createExecutableProcess("testProcess") .startEvent() .timerWithDuration("PT1M") .userTask() .endEvent() .done(); deployment(process); deploymentForTenant(TENANT_ONE, process); deploymentForTenant(TENANT_TWO, process); // the deployed process definition contains a timer start event // - so a job definition is created on deployment. }
@Test public void setAuthenticatedTenantForTimerStartEvent() { testRule.deployForTenant(TENANT_ID, Bpmn.createExecutableProcess("process") .startEvent() .timerWithDuration("PT1M") .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .userTask() .endEvent() .done()); AssertingJavaDelegate.addAsserts(hasAuthenticatedTenantId(TENANT_ID)); ClockUtil.setCurrentTime(tomorrow()); testRule.waitForJobExecutorToProcessAllJobs(); assertThat(engineRule.getTaskService().createTaskQuery().count(), is(1L)); }
@Override public MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, String parentId, String subProcessId, String startEventId) { ModifiableBpmnModelInstance.wrap(modelInstance) .addSubProcessTo(parentId) .id(subProcessId) .triggerByEvent() .embeddedSubProcess() .startEvent(startEventId).timerWithDuration("PT10M") .subProcessDone() .done(); TimerEventTrigger trigger = new TimerEventTrigger(); trigger.engine = engine; trigger.activityId = startEventId; trigger.handlerType = TimerStartEventSubprocessJobHandler.TYPE; return trigger; }
public void testInterruptingWithDurationExpression() { // given Mocks.register("duration", "PT60S"); ProcessBuilder processBuilder = Bpmn.createExecutableProcess("process"); BpmnModelInstance modelInstance = processBuilder .startEvent().timerWithDuration("${duration}") .userTask("aTaskName") .endEvent() .done(); deploymentId = repositoryService.createDeployment() .addModelInstance("process.bpmn", modelInstance).deploy() .getId(); // when String jobId = managementService.createJobQuery() .singleResult() .getId(); managementService.executeJob(jobId); // then assertEquals(1, taskService.createTaskQuery().taskName("aTaskName").list().size()); // cleanup Mocks.reset(); }
public void testRetryOnTimerStartEventWithExpression() { BpmnModelInstance bpmnModelInstance = Bpmn.createExecutableProcess("process") .startEvent() .camundaFailedJobRetryTimeCycle("${var}") .timerWithDuration("PT5M") .serviceTask() .camundaClass("bar") .endEvent() .done(); deployment(bpmnModelInstance); Job job = managementService.createJobQuery().singleResult(); // when job fails try { managementService.executeJob(job.getId()); } catch (Exception e) { // ignore } // then job = managementService.createJobQuery().singleResult(); Assert.assertEquals(2, job.getRetries()); // default behaviour }