Планировщик задач
Планировщик задач — это сервис, который позволяет периодически запускать сценарии по указанному правилу. Примеры правил: «по пятницам в 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. Настройки: Ставим галочки напротив «Мультивыбор» и «По умолчанию: первый элемент».
  • Выполнить (связанный каталог). Настройки: В пункте «Каталог/вид» указываем каталог «Сценария» и ставим галочку в пункте «Мультивыбор».
Пример того, как будет выглядеть карточка каталога «Планировщик задач»:

Внешний запрос для запуска сценария

Перейдите в каталог «Внешние запросы» (по умолчанию он находится в отделе «Управление») и создайте новую запись, указав в ней следующие данные:
  • Название: укажите название внешнего запроса, например: Обработка каталога «Планировщик задач».
  • URL-идентификатор: укажите уникальный PATH для формирования URL, на который будут отправляться web-запросы, например: cron. Правило, по которому можно определить сформированный url, описано в комментарии
    к полю.
Пример заполненных данных карточки каталога «Внешние запросы»:

Сценарий обработки запланированных задач

Создание записи сценария

Перейдите в каталог «Сценарии» (по умолчанию он находится в отделе «Управление») и создайте новую запись, указав в ней следующие данные:
  • Название: укажите название сценария, например: Обработчик каталога «Планировщик задач».
  • Сценарий: скачайте файл сценария и загрузите его в поле.
Пример заполненных данных карточки каталога «Сценарии»:

Настройка файла сценария

Откройте файл сценария в поле «Сценарий» и отредактируйте следующие компоненты, согласно комментариям внутри них:
  • Компонент: «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-запросов

Выбор сервиса

Сервис отправки 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 минут. Пример того, что «Планировщик задач» настроен правильно: