Планировщик задач
Last updated
Last updated
Планировщик задач — это сервис, который позволяет периодически запускать сценарии по указанному правилу. Примеры правил: «по пятницам в 18:00», «в конце каждого месяца», «в будни в 18:00», «каждый час в течении дня».
Сервис отправки web-запросов каждые 5 минут отправляет web-запрос в Планировщик задач. Планировщик задач, анализируя Правила запуска сценариев, запускает Пользовательские сценария, которые соответствуют правилу в данный момент времени.
Создайте каталог «Планировщик задач». При создании каталога нужно добавить и настроить следующие поля.
Важно: Добавлять статусы в полях нужно строго в вышеописанном порядке, не нарушая последовательность их API ID.
Статус (статус). Варианты: Включено, Выключено. Настройки: Ставим галочку напротив «По умолчанию: первый элемент».
Название (текст).
Описание (многострочный текст).
Месяцы (статус). Варианты: январь, февраль, март, апрель, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь, ежемесячно. Важно: Добавлять статусы нужно в вышеописанном порядке. После сохранения Каталога можно перенести статус «ежемесячно» в начало, чтобы он был выбран по умолчанию. Не делайте этого до сохранения каталога, иначе собьете последовательность API ID. Настройки: Ставим галочки напротив «Мультивыбор» и «По умолчанию: первый элемент».
Дни (статус). Варианты: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, последний день месяца, ежедневно. Важно: Добавлять статусы нужно в вышеописанном порядке. После сохранения Каталога можно перенести статус «ежедневно» в начало, чтобы он был выбран по умолчанию. Не делайте этого до сохранения каталога, иначе собьете последовательность API ID. Настройки: Ставим галочки напротив «Мультивыбор» и «По умолчанию: первый элемент».
Дни недели (статус). Варианты: ПН, ВТ, СР, ЧТ, ПТ, СБ, ВС, ежедневно. Важно: Добавлять статусы нужно в вышеописанном порядке. После сохранения Каталога можно перенести статус «ежедневно» в начало, чтобы он был выбран по умолчанию. Не делайте этого до сохранения каталога, иначе собьете последовательность API ID. Настройки: Ставим галочки напротив «Мультивыбор» и «По умолчанию: первый элемент».
Часы (статус). Варианты: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ежечасно. Важно: Добавлять статусы нужно в вышеописанном порядке. После сохранения Каталога можно перенести статус «ежечасно» в начало, чтобы он был выбран по умолчанию. Не делайте этого до сохранения каталога, иначе собьете последовательность API ID. Настройки: Ставим галочки напротив «Мультивыбор» и «По умолчанию: первый элемент».
Минуты (статус). Варианты: 00, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, каждые 5 минут. Важно: Добавлять статусы нужно в вышеописанном порядке. После сохранения Каталога можно перенести статус «каждые 5 минут» в начало, чтобы он был выбран по умолчанию. Не делайте этого до сохранения каталога, иначе собьете последовательность API ID. Настройки: Ставим галочки напротив «Мультивыбор» и «По умолчанию: первый элемент».
Выполнить (связанный каталог). Настройки: В пункте «Каталог/вид» указываем каталог «Сценария» и ставим галочку в пункте «Мультивыбор».
Пример того, как будет выглядеть карточка каталога «Планировщик задач»:
Перейдите в каталог «Внешние запросы» (по умолчанию он находится в отделе «Управление») и создайте новую запись, указав в ней следующие данные:
Название: укажите название внешнего запроса, например: Обработка каталога «Планировщик задач».
Пример заполненных данных карточки каталога «Внешние запросы»:
Перейдите в каталог «Сценарии» (по умолчанию он находится в отделе «Управление») и создайте новую запись, указав в ней следующие данные:
Название: укажите название сценария, например: Обработчик каталога «Планировщик задач».
Сценарий: скачайте файл сценария и загрузите его в поле.
Пример заполненных данных карточки каталога «Сценарии»:
Откройте файл сценария в поле «Сценарий» и отредактируйте следующие компоненты, согласно комментариям внутри них:
Компонент: «utcOffset & scriprtFieldId».
Укажите часовой пояс - сотрите комментарий и вместо него укажите по какому часовому поясу будут запускаться запланированные задачи. Например: 3 или -5.
Укажите ID поля «Выполнить» - сотрите комментарий и вместо него укажите API ID поля «Выполнить» из каталога «Планировщик задач», который был создан в пункте 3.1.
Компонент: «Поиск записей, которые подходят по фильтрам».
Укажите ID поля «Статус» - сотрите комментарий и вместо него укажите API ID поля «Статус» из каталога «Планировщик задач», который был создан в пункте 3.1.
Укажите ID поля «Месяцы» - сотрите комментарий и вместо него укажите API ID поля «Месяцы» из каталога «Планировщик задач», который был создан в пункте 3.1.
Укажите ID поля «Дни» - сотрите комментарий и вместо него укажите API ID поля «Дни» из каталога «Планировщик задач», который был создан в пункте 3.1.
Укажите ID поля «Дни недели» - сотрите комментарий и вместо него укажите API ID поля «Дни недели» из каталога «Планировщик задач», который был создан в пункте 3.1.
Укажите ID поля «Часы» - сотрите комментарий и вместо него укажите API ID поля «Часы» из каталога «Планировщик задач», который был создан в пункте 3.1.
Укажите ID поля «Минуты» - сотрите комментарий и вместо него укажите API ID поля «Минуты» из каталога «Планировщик задач», который был создан в пункте 3.1.
Компоненты сценария, в которые нужно внести изменения:
Перейдите в каталог «Внешние запрос», откройте запись, которая была создана в пункте 3.2 и в поле «Выполнить» укажите сценарий, который был создан в пункте 3.3.1.
Пример заполненных данных карточки каталога «Сценарии»:
Сервис отправки web-запросов должен уметь отправлять GET запросы на определенный URL не реже, чем каждые 5 минут. Мы советуем использовать сервис «CronJob».
Перейдите по ссылке на сервис CronJob и зарегистрируйте аккаунт. После регистрации аккаунта, перейдите во вкладку «Cronjobs» и нажмите кнопку «Create cronjob».
Настройте и создайте «Задачу» (cronjob). Заполните следующие поля:
Title: укажите название на ваше усмотрение, например: Запуск планировщика задач каждые 5 минут.
Address: укажите URL на который будут отправляться GET запросы, пример: https://[Ваш домен]/api/webrequest/[URL-идентификатор].
Ваш домен: это URL по которому вы переходите в систему БИПИУМ. Например: somedomen.bpium.ru.
URL-идентификатор: данные из поля «URL-идентификатор» записи внешнего запроса, которая была создана в пункте 3.1.
Schedule: выберите первый вариант и в количестве минут укажите «5».
Правилами запуска сценариев являются записи в каталоге «Планировщик задач». Чтобы создать новое правило, нужно создать новую запись в этом каталоге и указать следующие данные:
Статус: определяет включено или выключено правило.
Название: указываем название на ваше усмотрение.
Описание: здесь можно описать назначение используемого правила.
Месяцы: в каких месяцах правило будет действовать. Чтобы правило действовало в течении всех месяцев укажите «ежемесячно».
Дни: в какие числа месяца (не важно какой именно месяц) правило будет действовать. При выборе значений, нужно учитывать, что значения: «29», «30», «31» есть не во всех месяцах, поэтому лучше использовать значение «последний день месяца». Чтобы правило действовало в течении всех чисел месяца укажите «ежедневно».
Дни недели: в какие дни недели правило будет действовать. Чтобы правило действовало в течении всех дней недели укажите «ежедневно».
Часы: в какие часы дня правило будет действовать. Чтобы правило действовало в течении всех дней недели укажите «ежечасно».
Минуты: в какие минуты часа правило будет действовать. Чтобы правило действовало в течении всех дней недели укажите «каждые 5 минут».
При создании правил нужно учитывать, что выбранные значения в полях: Месяцы, Дни, Дни недели, Часы, Минуты применяются по логическому выражению «И». А в рамках одного поля применение идет по логическому выражению «ИЛИ».
Пример противоречия. В поле Дни указано (только) значение «17», а в поле Дни недели указано (только) значение «СР». Обработка правил запустилась 17.12.2020 в 13:00. В этом случае правило не сработает, так как 17 число не СР (среда).
Пример 1. Правило запуска сценариев по пятницам в 18:00. В соответствующих полях нужно указать следующие данные:
Месяцы - ежемесячно
Дни - ежедневно
Дни недели - ПТ
Часы - 18
Минуты - 00
Пример 2. Правило запуска сценариев в конце каждого месяца. В соответствующих полях нужно указать следующие данные:
Месяцы - ежемесячно
Дни - последний день месяца
Дни недели - ежедневно (указываем чтобы правило не противоречило предыдущему, описано в пункте 3.5.1)
Часы - 18 (чтобы в течении последнего дня месяца сценарий не запускался каждые 5 минут, нужно указать определенное время)
Минуты - 00 (чтобы в течении последнего дня месяца сценарий не запускался каждые 5 минут, нужно указать определенное время)
Пример 3. Правило запуска сценариев в будни в 18:00. В соответствующих полях нужно указать следующие данные:
Месяцы - ежемесячно
Дни - ежедневно
Дни недели - ПН, ВТ, СР, ЧТ, ПТ
Часы - 18
Минуты - 00
Пример 4. Правило запуска сценариев каждый час в течении дня. В соответствующих полях нужно указать следующие данные:
Месяцы - ежемесячно
Дни - ежедневно
Дни недели - ежедневно
Часы - 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20
Минуты - 00
Откройте каталог «Планировщик задач» и создайте новое правило, указав следующие данные в полях:
Статус: Включено.
Название: Тестирование.
Месяцы: ежемесячно.
Дни: ежедневно.
Дни недели: ежедневно.
Часы: ежечасно.
Минуты: 00, 15, 30, 45.
Выполнить: создайте тестовый сценарий компонентами которого являются «Начало процесса» и «Конец процесс» и укажите его в данному поле. Пример сценария:
Пример заполненных данных карточки каталога «Планировщик задач»:
По данному правилу указанный сценарий будет запускаться каждые 15 минут.
После создания правила, перейдите в каталог «Процессы», отфильтруйте все записи по сценарию, который указан в ранее созданном правиле, и проверьте запускается ли он каждые 15 минут. Пример того, что «Планировщик задач» настроен правильно:
URL-идентификатор: укажите уникальный PATH для формирования URL, на который будут отправляться web-запросы, например: cron. Правило, по которому можно определить сформированный url, описано в комментарии к полю.