Планировщик задач в бэкенде приложения AppMaster, как и в классическом случае бэкенда, создает повторяющиеся сценарии. Например, когда вам нужно выполнить определенное действие по расписанию. Классическим примером таких задач является пример очистки временных файлов на сервере, еженедельное резервное копирование, генерация отчетов по заданному алгоритму и т.д.
Рассмотрим пример использования планировщика задач в бэкенде приложения AppMaster. Предположим, вы хотите построить процесс, который каждое утро в 9.00 будет отправлять пользователю погоду на номер его мобильного телефона.
Таким образом, задача разбивается на несколько логических этапов:
- Установка и настройка модуля для отправки мобильных сообщений
- Создание и настройка API-процесса внешнего запроса
- Настройка планировщика в бэкенде приложения.
1. Установка и настройка модуля для отправки мобильных сообщений.Модуль Nexmo позволяет интегрировать в приложение AppMaster возможность отправки SMS-сообщений на выбранный номер.
- API Key - ключ API, который можно получить в аккаунте Nexmo(https://dashboard.nexmo.com/settings);
- API Secret - закрытый ключ, который используется вместе с API-ключом для идентификации пользователя. Вы также можете получить его в своем аккаунте Nexmo(https://dashboard.nexmo.com/settings);
- С номер - номер, указанный при регистрации в аккаунте Nexmo.
Следующие бизнес-процессы устанавливаются автоматически при установке модуля:
- Nexmo.Send SMS - позволяет отправлять сообщения на указанный номер через
модуль Nexmo:
- Phone [телефон] - номер телефона, на который будет отправлено сообщение;
- Содержание [строка] - текстовое сообщение;
2. В качестве источника погодных данных будет использоваться бесплатный веб-ресурс OpenWeather API(https://openweathermap.org/api).Первый шаг - создание шаблона API внешнего запроса. Шаблоны API-запросов представлены в разделе Бизнес-процесс на вкладке Внешние API-запросы. Чтобы создать новый шаблон, нажмите на кнопку Создать API-запрос.
Тип запроса: GET
Адрес запроса: https://api.openweathermap.org/data/2.5/weather
Параметры запроса:
- Lat [string] - широта
- Lon [string] - долгота
- Appid [string] - API-ключ OpenWeather.
В рамках данной задачи нас интересуют только несколько полей тела ответа в основной части(https://openweathermap.org/api/one-call-3).
- Temp [float] - температура
- Temp_min [float] - минимальная температура
- Temp_max [float] - максимальная температура
- Давление [float] - давление
- Влажность [float] - влажность
3. Перед настройкой планировщика задач необходимо создать бизнес-процесс, который будет получать информацию о погоде через API. Бизнес-процесс выглядит следующим образом:
- Make Weather Query Model In - создает виртуальную модель параметров запроса. Lon, lat - координаты нужного местоположения, appid - API-ключ сервиса OpenWeather;
- API Request: Weather - бизнес-процесс, отвечающий за взаимодействие с API OpenWeather.
- Expand Weather: Body Model Out - необходим для развертывания модели ответа Body
- Expand Weather: Body Model Out_main - расширяет основную модель тела запроса-ответа Body для получения температуры (temp).
- To String - преобразует значение поля temp в строковый тип;
- Nexmo: Send SMS - отправляет сообщение с информацией о температуре (Content) на указанный номер телефона (Phone).
Настройте планировщик в разделе бизнес-процессов на вкладке Планировщик.
Настройки планировщика на вкладке Планировщик различаются в зависимости от их типа.
Рассмотрим каждый из них подробнее
1. Ежедневно - позволяет настраивать ежедневные расписания
- Время - определяет время в UTC+0, в которое планировщик будет запускать выбранный БП;
- Дни недели - определяет дни недели, по которым будет работать планировщик;
- Автоматически запускать - если установлено значение True, то новый БП не будет запускаться, если предыдущий не был завершен. Значение по умолчанию: Ложь.
- Автоматически повторять - автоматически перезапускает процесс, если он был прерван/не был успешно запущен.
Повторить обработку неудачных элементов - количество попыток перезапустить процесс;
Wait before each retry attempt - время задержки перед каждой попыткой перезапустить процесс;
- Force quit - принудительно завершить процесс, если он не завершен в течение нескольких секунд. True, по умолчанию. Количество секунд до завершения - 3 секунды, по умолчанию.
2. Monthly - ежемесячный планировщик
- Время - определяет время в UTC+0, в которое планировщик запустит выбранный БП;
- Дни недели - состоит из двух настроек:
Частота повторения:
- Каждый первый
- Каждый второй
- Каждый третий
- Каждый четвертый
- Текущий день
День недели - определяет день недели
- Месяц - определяется месяц
- Автозапуск - если установлено значение True, новый БП не будет запущен, если он не будет завершен в ближайшее время. Значение по умолчанию: Ложь.
- Автоматически повторять попытку - автоматически перезапускает процесс, если он был прерван/не запущен
Повторная обработка неудачных элементов - количество перезапусков процесса;
Подождать перед каждой повторной попыткой - время задержки перед каждой попыткой перезапустить процесс;
- Force Quit - завершает процесс, если он не завершен в течение нескольких секунд. По умолчанию - True. Количество секунд до завершения - 3 секунды, по умолчанию.
3. Периодически - позволяет гибко настроить периодичность работы планировщика
- Каждый - возможность установить повторяемость каждые N секунд/минут/часов/дней. По умолчанию: каждый 1 час.
- Автоматически запускать - если установлено значение True, новый БП не будет запускаться, если предыдущий не был завершен. Значение по умолчанию: Ложь.
- Автоматически повторять - автоматически перезапускает процесс, если он был прерван/не был успешно запущен.
Повторить обработку неудачных элементов - количество попыток перезапустить процесс;
Wait before each retry attempt - время задержки перед каждой попыткой перезапустить процесс;
- Force quit - принудительно завершить процесс, если он не завершен в течение нескольких секунд. True, по умолчанию. Количество секунд до завершения - 3 секунды, по умолчанию.
4. После запуска приложения - планировщик одноразовых задач
- Задержка - определяет задержку между запуском приложения и стартом. По умолчанию - 0 сек
- Автоматически повторять попытку - автоматически перезапускает процесс, если он был прерван/не был запущен успешно
Retry failed items processing - количество попыток перезапустить процесс;
Wait before each retry attempt - время задержки перед каждой попыткой перезапустить процесс;
- Force quit - принудительно завершить процесс, если он не завершен в течение нескольких секунд. True, по умолчанию. Количество секунд до завершения - 3 секунды, по умолчанию.
5. Перед завершением приложения - запускать планировщик каждый раз, когда приложение завершается.
- Автоматически повторять попытку - автоматически перезапускает процесс, если он был прерван/не был успешно запущен
Retry failed items processing - количество попыток перезапустить процесс;
Wait before each retry attempt - время задержки перед каждой попыткой перезапустить процесс;
- Force quit - принудительно завершить процесс, если он не завершен в течение нескольких секунд. True, по умолчанию. Количество секунд до завершения - 3 секунды, по умолчанию.
На вкладке Params настроек планировщика также можно передать параметры на вход BP при его запуске планировщиком:
В нашем примере настройки планировщика выглядят следующим образом:
- Сообщения будут отправляться каждый день в 9 утра по UTC+0
- Автоматически пытается перезапустить процесс 3 раза с задержкой в 10 минут между попытками, если процесс не запустился сразу;
- Принудительно завершает процесс, если он не был завершен в течение трех секунд.
Наше приложение живет и работает в бэкенде, поэтому, чтобы оно работало, достаточно его опубликовать.