@Deployment public void testCatchingTimerEvent() throws Exception { // Set the clock fixed Date startTime = new Date(); // After process start, there should be timer created ProcessInstance pi = runtimeService.startProcessInstanceByKey("intermediateTimerEventExample"); JobQuery jobQuery = managementService.createJobQuery().processInstanceId(pi.getId()); assertEquals(1, jobQuery.count()); // After setting the clock to time '50minutes and 5 seconds', the second timer should fire processEngineConfiguration .getClock() .setCurrentTime(new Date(startTime.getTime() + ((50 * 60 * 1000) + 5000))); waitForJobExecutorToProcessAllJobs(5000L, 25L); assertEquals(0, jobQuery.count()); assertProcessEnded(pi.getProcessInstanceId()); }
@Deployment public void testTimerEventWithStartAndDuration() throws Exception { Date testStartTime = new Date(); processEngineConfiguration.getClock().setCurrentTime(testStartTime); ProcessInstance pi = runtimeService.startProcessInstanceByKey("timerEventWithStartAndDuration"); List<Task> tasks = taskService.createTaskQuery().list(); assertEquals(1, tasks.size()); Task task = tasks.get(0); assertEquals("Task A", task.getName()); JobQuery jobQuery = managementService.createJobQuery().processInstanceId(pi.getId()); assertEquals(0, jobQuery.count()); Date startDate = new Date(); runtimeService.setVariable(pi.getId(), "StartDate", startDate); taskService.complete(task.getId()); jobQuery = managementService.createJobQuery().processInstanceId(pi.getId()); assertEquals(1, jobQuery.count()); processEngineConfiguration.getClock().setCurrentTime(new Date(startDate.getTime() + 7000L)); jobQuery = managementService.createJobQuery().processInstanceId(pi.getId()); assertEquals(1, jobQuery.count()); jobQuery = managementService.createJobQuery().processInstanceId(pi.getId()).executable(); assertEquals(0, jobQuery.count()); processEngineConfiguration.getClock().setCurrentTime(new Date(startDate.getTime() + 11000L)); waitForJobExecutorToProcessAllJobs(15000L, 25L); jobQuery = managementService.createJobQuery().processInstanceId(pi.getId()); assertEquals(0, jobQuery.count()); tasks = taskService.createTaskQuery().list(); assertEquals(1, tasks.size()); task = tasks.get(0); assertEquals("Task B", task.getName()); taskService.complete(task.getId()); assertProcessEnded(pi.getProcessInstanceId()); }