Search in sources :

Example 6 with SchedulerService

use of org.openmrs.scheduler.SchedulerService in project openmrs-module-mirebalais by PIH.

the class AppointmentSchedulingSetup method setupMarkAppointmentAsMissedOrCompletedTask.

public static void setupMarkAppointmentAsMissedOrCompletedTask() {
    SchedulerService schedulerService = Context.getSchedulerService();
    TaskDefinition task = schedulerService.getTaskByName(MirebalaisConstants.TASK_MARK_APPOINTMENTS_AS_MISSED_OR_COMPLETED);
    if (task == null) {
        task = new TaskDefinition();
        task.setName(MirebalaisConstants.TASK_MARK_APPOINTMENTS_AS_MISSED_OR_COMPLETED);
        task.setDescription(MirebalaisConstants.TASK_MARK_APPOINTMENTS_AS_MISSED_OR_COMPLETED_DESCRIPTION);
        task.setTaskClass(MarkAppointmentsAsMissedOrCompletedTask.class.getName());
        // doesn't really do anything since start on startup = true
        task.setStartTime(DateUtils.addMinutes(new Date(), 5));
        task.setRepeatInterval(MirebalaisConstants.TASK_MARK_APPOINTMENTS_AS_MISSED_OR_COMPLETED_REPEAT_INTERVAL);
        task.setStartOnStartup(true);
        try {
            schedulerService.scheduleTask(task);
        } catch (SchedulerException e) {
            throw new RuntimeException("Failed to schedule mark appointments as missed or completed task", e);
        }
    } else {
        boolean anyChanges = GeneralUtils.setPropertyIfDifferent(task, "description", MirebalaisConstants.TASK_MARK_APPOINTMENTS_AS_MISSED_OR_COMPLETED_DESCRIPTION);
        anyChanges |= GeneralUtils.setPropertyIfDifferent(task, "taskClass", MarkAppointmentsAsMissedOrCompletedTask.class.getName());
        // we can't pass in the constant directly for some reason because it is static
        anyChanges |= GeneralUtils.setPropertyIfDifferent(task, "repeatInterval", MirebalaisConstants.TASK_MARK_APPOINTMENTS_AS_MISSED_OR_COMPLETED_REPEAT_INTERVAL);
        anyChanges |= GeneralUtils.setPropertyIfDifferent(task, "startOnStartup", true);
        if (anyChanges) {
            schedulerService.saveTaskDefinition(task);
        }
        if (!task.getStarted()) {
            task.setStarted(true);
            try {
                schedulerService.scheduleTask(task);
            } catch (SchedulerException e) {
                throw new RuntimeException("Failed to schedule mark appointments as missed or completed task", e);
            }
        }
    }
}
Also used : SchedulerService(org.openmrs.scheduler.SchedulerService) TaskDefinition(org.openmrs.scheduler.TaskDefinition) SchedulerException(org.openmrs.scheduler.SchedulerException) MarkAppointmentsAsMissedOrCompletedTask(org.openmrs.module.mirebalais.task.MarkAppointmentsAsMissedOrCompletedTask) Date(java.util.Date)

Example 7 with SchedulerService

use of org.openmrs.scheduler.SchedulerService in project openmrs-core by openmrs.

the class TimerSchedulerTask method saveLastExecutionTime.

/**
 * Save the last execution time in the TaskDefinition
 */
private static void saveLastExecutionTime(Task task) {
    TaskDefinition taskDefinition;
    try {
        // Therefore we might get an NPE below.
        if (task.getTaskDefinition() != null) {
            SchedulerService schedulerService = Context.getSchedulerService();
            taskDefinition = task.getTaskDefinition();
            taskDefinition.setLastExecutionTime(new Date());
            schedulerService.saveTaskDefinition(taskDefinition);
        } else {
            log.warn("Unable to save the last execution time for task. Task.taskDefinition is null in " + task.getClass());
        }
    } catch (Exception e) {
        log.warn("Unable to save the last execution time for task ", e);
    }
}
Also used : TaskDefinition(org.openmrs.scheduler.TaskDefinition) SchedulerService(org.openmrs.scheduler.SchedulerService) Date(java.util.Date)

Aggregations

SchedulerService (org.openmrs.scheduler.SchedulerService)7 TaskDefinition (org.openmrs.scheduler.TaskDefinition)7 Date (java.util.Date)6 SchedulerException (org.openmrs.scheduler.SchedulerException)6 MarkAppointmentsAsMissedOrCompletedTask (org.openmrs.module.mirebalais.task.MarkAppointmentsAsMissedOrCompletedTask)1 CloseStaleCreateRequestsTask (org.openmrs.module.paperrecord.CloseStaleCreateRequestsTask)1 CloseStalePullRequestsTask (org.openmrs.module.paperrecord.CloseStalePullRequestsTask)1 PihCloseStaleVisitsTask (org.openmrs.module.pihcore.task.PihCloseStaleVisitsTask)1 UpdateProviderRetiredStatesBasedOnAssociatedUserAccounts (org.openmrs.module.pihcore.task.UpdateProviderRetiredStatesBasedOnAssociatedUserAccounts)1