Scheduler
Планировщик задач; позволяет выполнять команды по расписанию или при старте сервера.
Шаблон Scheduler
Описание Task
Атрибуты Task
Name
Название условия.
Обязательный атрибут.
Тэги, специфичные для Task
Condition
Условие, которое используется для запуска задач.
Атрибуты тэга <Condition>
<Condition>
Type
Тип условия.
Commands
Список команд, которые будут выполнены последовательно.
Обязательный тэг. В качестве значения тэга ожидается список тэгов <Command>
и/или конструкций <If>
.
Тэг <Command>
<Command>
Обращение к команде по имени для ее выполнения.
Необязательный тэг. В качестве значения тэга ожидается список тэгов <Parameter>
.
Тэг <Parameter>
<Parameter>
Дополнительный параметр, который будет передан в команду при выполнении.
Необязательный тэг. Значение тэга <Parameter>
: любое значение.
Атрибуты тэга <Parameter>
<Parameter>
Name
Имя входящего значения.
Ожидается имя одного из параметров, передаваемых в команду.
ExecutionStrategy
Признак, определяющий как будет выполняться задача, если пропущено плановое время запуска.
Если тэг отсутствует, то используется значение ExecuteMissed.
Необязательный тэг. Ожидается одно из следующих значений:
ExecuteMissed
Будут запущены все пропущенные задания согласно условиям. Учитывается время последнего выполнения задачи. Если задача ранее не выполнялась, т.е. в таблице public.schedule в базе данных отсутствует запись, то будет выполнен только один пропущенный вызов.
ExecuteLastMissed
Будет запущено последнее пропущенное задание, а далее согласно условиям
WaitNext
Задача запускается в следующее плановое время
Restart
Задача будет перезапущена с текущим временем
RestartAndWaitNext
Задача будет перезапущена с текущим временем и запущена при следующем плановом запуске
Пример
Задача выполняется каждые 5 минут. Текущее время 11:28. Последнее выполнение задачи было в 11:00.
При стратегии ExecuteMissed задача будет выполнена 11:05, 11:10, 11:15, 11:20, 11:25, 11:30, 11:35 и т.д.
При стратегии ExecuteLastMissed - 11:25, 11:30, 11:35 и т.д.
При стратегии WaitNext - 11:30, 11:35 и т.д.
При стратегии Restart - 11:28, 11:33, 11:38 и т.д.
При стратегии RestartAndWaitNext - 11:33, 11:38 и т.д.
Тэги, специфичные для условия Values
Condition
Условие, которое используется для запуска задач по расписанию.
Значение тэга <Condition>
: список тэгов <Month>
, <Day>
, <Hour>
, <Minute>
и <Second>
.
Условие запуска задаётся в одном из описанных форматов:
Пустое поле - ближайшее значение из интервала возможных значений. Например, для дней месяца - это значения от 1 до 31.
\d+(,\d+){0,} - точные значения. Например, 1,5,9 будет выполняться в январе, мае, сентябре.
\d+-\d+ - интервал значений. Например, 1-9 будет выполняться с января по сентябрь.
/\d+ - повтор через указанный интервал времени. Например, /2 будет повторяться каждые 2 месяца, начиная с текущего.
\d+/\d+ - повтор через указанный интервал времени, начиная с указанного значения. Например, 3/2 - будет повторяться каждые 2 месяца, начиная с марта и до конца года. В следующем году первый раз снова выполнится в марте.
\d+-\d+/\d+ - повтор через указанный интервал времени в указанном интервале значений. Например, 3-9/2 - будет повторяться каждые 2 месяца, начиная с марта и по сентябрь включительно. В следующем году первый раз снова выполнится в марте.
Тэг <Month>
<Month>
Задаёт месяц, в котором должно выполняться задание.
Необязательный тэг. Ожидается строка, заданная по одному из форматов запуска.
Тэг <Day>
<Day>
Задаёт дни, в которых должно выполняться задание.
Необязательный тэг. Ожидается строка, заданная по одному из форматов запуска.
Тэг <Hour>
<Hour>
Задаёт часы, в которые должно выполняться задание.
Необязательный тэг. Ожидается строка, заданная по одному из форматов запуска.
Тэг <Minute>
<Minute>
Задаёт минуты, в которые должно выполняться задание.
Необязательный тэг. Ожидается строка, заданная по одному из форматов запуска.
Тэг <Second>
<Second>
Задаёт секунды, в которые должно выполняться задание.
Необязательный тэг. Ожидается строка, заданная по одному из форматов запуска.
Пример 1
Запускает задание в начале каждой минуты:
Пример 2
Запускает задание каждую минуту, но не в начале минуты, а начиная с момента первого запуска:
Пример 3
Запускает задание с 8:00 до 21:59 каждые 5 минут каждый день:
Пример 4
Запустит задание в 7:15:19 4 февраля:
Тэги, специфичные для условия Query
Condition
Условие используется для запуска задач по расписанию с динамическим заданием условия запуска через базу данных.
Значение тэга <Condition>
: тэг <Text>
.
Тэг <Text>
<Text>
Содержит sql-запрос для получения условия запуска.
Обязательный тэг. Значение тэга <Text>
: текст sql-запроса.
Sql-запрос должен вернуть хотя бы один столбец с именем из списка: Month, Day, Hour, Minute, Second.
Формат значений столбцов описан в условии Values.
Тэги, специфичные для условия OnStart
Condition
Условие используется для запуска задач при старте сервера.
Значение тэга <Condition>
: не ожидается.
Last updated