Запуск процессов
Четыре способа запустить workflow: вручную, по расписанию, входящим HTTP-запросом и событием из мессенджера.
Процесс можно запустить вручную из редактора, а можно отдать под автоматический запуск. Автоматический запуск устроен не отдельной настройкой, а компонентом: триггер ставится на холст как обычный узел и становится началом цепочки.
Отсюда важное следствие: триггер работает только у опубликованного процесса. Пока процесс не опубликован или опубликован в устаревшей версии, расписание и вебхуки либо молчат, либо выполняют прежнюю схему — см. Публикацию.
Вручную
Кнопка «Запустить» в редакторе выполняет черновик — то, что сейчас на холсте. Триггер для этого не нужен.
Так проверяют правки. Помните, что у ручного запуска платформа не сохраняет полные данные шагов, поэтому продолжить его с выбранного узла не получится.
По расписанию
Компонент «Триггер по расписанию». У процесса может быть несколько расписаний сразу — например, по будням в 9 утра и дополнительно в последний день месяца.
Частота задаётся одним из шести способов:
| Частота | Что настраивается |
|---|---|
| Каждые N секунд | интервал 1–59 |
| Каждые N минут | интервал 1–59 |
| Каждый час | интервал в часах и минута запуска |
| Каждый день | интервал в днях, час и минута |
| Каждую неделю | дни недели, час и минута |
| Каждый месяц | день месяца, час и минута |
| Cron-выражение | произвольное расписание в синтаксисе cron |
Отдельным полем выбирается часовой пояс, по умолчанию Москва. Время в расписании понимается в нём, а не в UTC, так что пересчитывать ничего не нужно — и при переходе на летнее время в тех поясах, где он есть, расписание не уедет.
Входящим запросом
Компонент «Вебхук» даёт процессу собственный адрес: внешняя система обращается по нему, и процесс запускается с переданными данными.
Настраивается метод (GET, POST, PUT, PATCH, DELETE, HEAD) и путь. Адрес, который нужно отдать внешней системе, показывает команда «Просмотреть триггеры» в меню кнопки публикации.
Защита адреса
Адрес вебхука доступен из интернета, поэтому у него есть четыре режима проверки вызывающего:
- Нет — принимается любой запрос. Годится только для проверки на время настройки;
- Базовая авторизация — логин и пароль;
- Авторизация в заголовке — имя и значение заголовка, которые должен прислать вызывающий;
- HMAC-подпись — вызывающий подписывает тело запроса общим секретом, платформа проверяет подпись. Настраивается секрет, имя заголовка с подписью (по умолчанию
x-signature) и алгоритм: SHA-256, SHA-1 или SHA-512.
Подпись — самый надёжный вариант: перехваченный заголовок нельзя переиспользовать с другим телом запроса.
Что вернётся вызывающему
Поле «Ответить» решает, когда платформа отдаёт ответ:
- Сразу же — как только запрос принят, не дожидаясь конца обработки. Так отвечают внешним системам, которым важна скорость и не важен результат;
- Когда последний узел завершит работу — после выполнения всего процесса;
- По выходу Respond to Webhook — ответ формирует отдельный компонент «Ответ на вебхук», поставленный в нужном месте цепочки.
Третий вариант нужен, когда ответ должен содержать результат работы: компонент умеет вернуть JSON, текст, файл, JWT или перенаправление, а также задать код ответа.
Событием из мессенджера
Два компонента слушают внешние сервисы и запускают процесс на событии.
Телеграм Триггер срабатывает на сообщение, отредактированное сообщение, сообщение в канале, нажатие кнопки, встроенный запрос или ответ в опросе. Можно слушать всё сразу или выбрать типы событий.
Битрикс24 Триггер срабатывает на новое сообщение, добавление бота в чат, команду боту или удаление бота.
Обоим нужны учётные данные — токен бота. Как их завести, описано в разделе Подключения и учётные данные.
Из другого процесса
Компонент «Выполнить процесс» вызывает другой workflow как шаг. Так выносят общую часть в отдельный процесс и переиспользуют её, вместо того чтобы копировать цепочку узлов.
Вызванный процесс выполняется как фоновый, поэтому его запуск попадает в ленту запусков отдельной строкой.
Через API
Опубликованный процесс можно вызвать из своего кода HTTP-запросом. Это описано отдельно: Запуск workflow через API.