if (task == null || task.getDeadlines() == null) { return null; if (task.getDeadlines().getStartDeadlines() != null) { deadlineService.unschedule(taskId, DeadlineType.START); it = task.getDeadlines().getStartDeadlines().iterator(); while (it.hasNext()) { if (task.getDeadlines().getEndDeadlines() != null) { deadlineService.unschedule(taskId, DeadlineType.END); it = task.getDeadlines().getEndDeadlines().iterator(); while (it.hasNext()) { persistenceContext.removeDeadline(it.next());
public static void scheduleDeadlinesForTask(final InternalTask task, TaskContext taskContext, DeadlineType ...types) { TaskDeadlinesService deadlineService = taskContext.getTaskDeadlinesService(); final long now = System.currentTimeMillis(); List<DeadlineType> deadlineTypes = Arrays.asList(types); Deadlines deadlines = task.getDeadlines(); if (deadlines != null) { final List<? extends Deadline> startDeadlines = deadlines.getStartDeadlines(); if (startDeadlines != null && deadlineTypes.contains(DeadlineType.START)) { scheduleDeadlines(startDeadlines, now, task.getId(), DeadlineType.START, deadlineService); } final List<? extends Deadline> endDeadlines = deadlines.getEndDeadlines(); if (endDeadlines != null && deadlineTypes.contains(DeadlineType.END)) { scheduleDeadlines(endDeadlines, now, task.getId(), DeadlineType.END, deadlineService); } } }
private void postInit(Object result) { if (result instanceof Task) { Task task = (Task) result; if (task != null && !eagerDisabled) { task.getNames().size(); task.getDescriptions().size(); task.getSubjects().size(); task.getPeopleAssignments().getBusinessAdministrators().size(); task.getPeopleAssignments().getPotentialOwners().size(); ((InternalPeopleAssignments) task.getPeopleAssignments()).getRecipients().size(); ((InternalPeopleAssignments) task.getPeopleAssignments()).getExcludedOwners().size(); ((InternalPeopleAssignments) task.getPeopleAssignments()).getTaskStakeholders().size(); task.getTaskData().getAttachments().size(); task.getTaskData().getComments().size(); ((InternalTask)task).getDeadlines().getStartDeadlines().size(); ((InternalTask)task).getDeadlines().getEndDeadlines().size(); if (((InternalTask)task).getDelegation() != null) { ((InternalTask)task).getDelegation().getDelegates().size(); } } } else if (result instanceof Collection<?>) { ((Collection<?>) result).size(); } }
public static void rescheduleDeadlinesForTask(final InternalTask task, TaskContext taskContext, DeadlineType ...types) { Environment environment = taskContext.getTaskContentService().getMarshallerContext(task).getEnvironment(); TaskPersistenceContext persistenceContext = taskContext.getPersistenceContext(); taskContext.loadTaskVariables(task); PeopleAssignments peopleAssignments = task.getPeopleAssignments(); List<OrganizationalEntity> businessAdministrators = peopleAssignments.getBusinessAdministrators(); List<DeadlineType> deadlineTypes = Arrays.asList(types); Deadlines deadlines = HumanTaskHandlerHelper.setDeadlines(task.getTaskData().getTaskInputVariables(), businessAdministrators, environment); if(deadlineTypes.contains(DeadlineType.START)) { for(Deadline deadline : deadlines.getStartDeadlines()) { task.getDeadlines().getStartDeadlines().add(deadline); persistenceContext.persistDeadline(deadline); } } if(deadlineTypes.contains(DeadlineType.END)) { for(Deadline deadline : deadlines.getEndDeadlines()) { task.getDeadlines().getEndDeadlines().add(deadline); persistenceContext.persistDeadline(deadline); } } persistenceContext.updateTask(task); scheduleDeadlinesForTask(task, taskContext, types); }
@Test(timeout=10000) public void testTaskReminderWithoutNotification() throws Exception { CountDownTaskEventListener countDownListener = new CountDownTaskEventListener(1, false, true); addCountDownListner(countDownListener); Map<String, Object> vars = new HashMap<String, Object>(); vars.put("now", new Date()); Reader reader = new InputStreamReader(getClass().getResourceAsStream(MvelFilePath.ReminderWithoutNotification)); InternalTask task = (InternalTask) TaskFactory.evalTask(reader, vars); System.out.println("testTaskReminderWithoutNotification " + task.getTaskData().getStatus()); assertNull(task.getDeadlines()); long taskId = taskService.addTask(task, new HashMap<String, Object>()); taskService.executeReminderForTask(taskId, "Luke Cage"); countDownListener.waitTillCompleted(); assertEquals(1, wiser.getMessages().size()); String receiver = wiser.getMessages().get(0).getEnvelopeReceiver(); assertEquals("tony@domain.com", receiver); MimeMessage msg = ((WiserMessage) wiser.getMessages().get(0)).getMimeMessage(); assertEquals("You have a task ( Simple Test Task ) of process ( taskReminder )", msg.getSubject()); }
@Test(timeout=10000) public void testTaskReminderWithNotificationByTaskNostarted() throws Exception { CountDownTaskEventListener countDownListener = new CountDownTaskEventListener(1, false, true); addCountDownListner(countDownListener); Map<String, Object> vars = new HashMap<String, Object>(); vars.put("now", new Date()); Reader reader = new InputStreamReader(getClass().getResourceAsStream(MvelFilePath .ReminderWithNotificationReserved)); InternalTask task = (InternalTask) TaskFactory.evalTask(reader, vars); System.out.println("testTaskReminderWithNotificationByTaskNostarted " + task.getTaskData().getStatus()); assertEquals(1, task.getDeadlines().getEndDeadlines().size()); assertEquals(1, task.getDeadlines().getStartDeadlines().size()); long taskId = taskService.addTask(task, new HashMap<String, Object>()); taskService.executeReminderForTask(taskId, "Luke Cage"); countDownListener.waitTillCompleted(); assertEquals(2, wiser.getMessages().size()); final List<String> list = new ArrayList<String>(2); list.add(wiser.getMessages().get(0).getEnvelopeReceiver()); list.add(wiser.getMessages().get(1).getEnvelopeReceiver()); assertTrue(list.contains("tony@domain.com")); assertTrue(list.contains("darth@domain.com")); MimeMessage msg = ((WiserMessage) wiser.getMessages().get(0)).getMimeMessage(); assertEquals("ReminderWithNotificationReserved:you have new task to be started", msg.getSubject()); assertEquals("task is not started", msg.getContent()); msg = ((WiserMessage) wiser.getMessages().get(1)).getMimeMessage(); assertEquals("ReminderWithNotificationReserved:you have new task to be started", msg.getSubject()); assertEquals("task is not started", msg.getContent()); }
public void unschedule(long taskId, Deadline deadline, DeadlineType type) { Task task = persistenceContext.findTask(taskId); String deploymentId = task.getTaskData().getDeploymentId(); Deadlines deadlines = ((InternalTask)task).getDeadlines(); TimerService timerService = TimerServiceRegistry.getInstance().get(deploymentId + TimerServiceRegistry.TIMER_SERVICE_SUFFIX); if (timerService != null && timerService instanceof GlobalTimerService) { TaskDeadlineJob deadlineJob = new TaskDeadlineJob(taskId, deadline.getId(), type, deploymentId, task.getTaskData().getProcessInstanceId()); logger.debug("unscheduling timer job for deadline {} {} and task {} using timer service {}", deadlineJob.getId(), deadline.getId(), taskId, timerService); JobHandle jobHandle = jobHandles.remove(deadlineJob.getId()); if (jobHandle == null) { jobHandle = ((GlobalTimerService) timerService).buildJobHandleForContext(new TaskDeadlineJobContext(deadlineJob.getId(), task.getTaskData().getProcessInstanceId(), deploymentId)); } timerService.removeJob(jobHandle); // mark the deadlines so they won't be rescheduled again deadline.setEscalated(true); } }
System.out.println("testTaskReminderWithNotificationByTaskNoCompleted " + task.getTaskData().getStatus()); assertEquals(1, task.getDeadlines().getEndDeadlines().size()); assertEquals(1, task.getDeadlines().getStartDeadlines().size()); long taskId = taskService.addTask(task, new HashMap<String, Object>()); taskService.executeReminderForTask(taskId, "Luke Cage");
task = (InternalTask) taskService.getTaskById(taskId); assertThat(task.getTaskData().getStatus()).isEqualTo(Status.Failed); assertThat(task.getDeadlines().getStartDeadlines().size()).isEqualTo(0); assertThat(task.getDeadlines().getEndDeadlines().size()).isEqualTo(0);
task.getDeadlines().getStartDeadlines().get(0).setDate(cal.getTime()); task2.getDeadlines().getStartDeadlines().get(0).setDate(cal.getTime()); task = (InternalTask) taskService.getTaskById(taskId); assertThat(task.getTaskData().getStatus()).isEqualTo(Status.Completed); assertThat(((InternalTask) task).getDeadlines().getStartDeadlines().size()).isEqualTo(0); assertThat(((InternalTask) task).getDeadlines().getEndDeadlines().size()).isEqualTo(0); assertThat(((InternalTask) task).getDeadlines().getStartDeadlines().size()).isEqualTo(0); assertThat(((InternalTask) task).getDeadlines().getEndDeadlines().size()).isEqualTo(0);
String deploymentId = task.getTaskData().getDeploymentId(); Deadlines deadlines = ((InternalTask)task).getDeadlines();
task = (InternalTask) taskService.getTaskById(taskId); assertThat(task.getTaskData().getStatus()).isEqualTo(Status.Exited); assertThat(task.getDeadlines().getStartDeadlines().size()).isEqualTo(0); assertThat(task.getDeadlines().getEndDeadlines().size()).isEqualTo(0);
task = (InternalTask) taskService.getTaskById(taskId); assertThat(task.getTaskData().getStatus()).isEqualTo(Status.Obsolete); assertThat(task.getDeadlines().getStartDeadlines().size()).isEqualTo(0); assertThat(task.getDeadlines().getEndDeadlines().size()).isEqualTo(0);
task = (InternalTask) taskService.getTaskById(taskId); assertThat(task.getTaskData().getStatus()).isEqualTo(Status.Completed); assertThat(((InternalTask) task).getDeadlines().getStartDeadlines().size()).isEqualTo(0); assertThat(((InternalTask) task).getDeadlines().getEndDeadlines().size()).isEqualTo(0);
task = (InternalTask) taskService.getTaskById(taskId); assertEquals(Status.Completed, task.getTaskData().getStatus()); assertEquals(0, task.getDeadlines().getStartDeadlines().size()); assertEquals(0, task.getDeadlines().getEndDeadlines().size());
task = (InternalTask) taskService.getTaskById(taskId); assertEquals(Status.InProgress, task.getTaskData().getStatus()); assertEquals(0, task.getDeadlines().getStartDeadlines().size()); assertEquals(0, task.getDeadlines().getEndDeadlines().size());
task = (InternalTask) taskService.getTaskById(taskId); assertEquals(Status.Obsolete, task.getTaskData().getStatus()); assertEquals(0, task.getDeadlines().getStartDeadlines().size()); assertEquals(0, task.getDeadlines().getEndDeadlines().size());
task = (InternalTask) taskService.getTaskById(taskId); assertEquals(Status.Exited, task.getTaskData().getStatus()); assertEquals(0, task.getDeadlines().getStartDeadlines().size()); assertEquals(0, task.getDeadlines().getEndDeadlines().size());
task = (InternalTask) taskService.getTaskById(taskId); assertEquals(Status.Failed, task.getTaskData().getStatus()); assertEquals(0, task.getDeadlines().getStartDeadlines().size()); assertEquals(0, task.getDeadlines().getEndDeadlines().size());
doCallbackOperationForTaskDeadlines(((InternalTask) taskImpl).getDeadlines(), context);