Планировщик задач

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

    • Укажите часовой пояс - сотрите комментарий и вместо него укажите по какому часовому поясу будут запускаться запланированные задачи.

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