Канал расписания запускает pipeline согласно заданному календарю. Это эквивалент cron, но настраиваемый в редакторе модели и логируемый, как любой другой exchange.
Зачем этот канал
Не все pipeline являются реактивными (на письмо, звонок, webhook). Многие из них проактивны: ежедневный отчёт, еженедельное напоминание, ежечасная проверка внешней системы. Именно это покрывает канал расписания.
Конфигурация
- В редакторе модели настройте узел Start с приёмником Запланированный триггер.
- Выберите:
- Календарь — постройте его визуально с помощью CronBuilder (ежедневно, еженедельно или ежемесячно, в выбранное вами время) или перейдите в расширенный режим, чтобы ввести классическое cron-выражение из 5 полей (
0 8 * * 1-5= 8:00 по будням). Знание синтаксиса cron не требуется. - Часовой пояс — имя IANA (
Europe/Paris,UTC…), в котором интерпретируется календарь. По умолчанию:UTC. - Цель — свободная метка (например,
briefing_hebdo,alerte_impayes), передаваемая в pipeline для его маршрутизации. - Если тик пропущен — политика наверстывания (
catchup), см. ниже. По умолчанию: догнать все.
- Календарь — постройте его визуально с помощью CronBuilder (ежедневно, еженедельно или ежемесячно, в выбранное вами время) или перейдите в расширенный режим, чтобы ввести классическое cron-выражение из 5 полей (
Один pipeline, несколько целей. Один и тот же Start может нести несколько запланированных триггеров, каждый со своей objectif. Условия (filter) в начале pipeline затем направляют выполнение согласно полученной цели — например, еженедельный брифинг по понедельникам и ежедневное оповещение в одной модели (см. CFO IA).
Что получает pipeline
При каждом срабатывании создаётся exchange со следующими данными:
schedule.objectif— настроенная метка цели (для маршрутизации нескольких триггеров)schedule.cron— настроенное cron-выражениеschedule.occurrence— запланированная временна́я метка (UTC)schedule.fired_at— фактическая временна́я метка срабатывания (UTC)schedule.catchup—true, если это срабатывание является наверстыванием
Допуск и наверстывание
Каждое срабатывание помещается в надёжную очередь перед выполнением: перезапуск во время выполнения не приводит к его потере.
Если betool недоступен в момент срабатывания (обслуживание, инцидент), судьба пропущенных срабатываний зависит от настройки триггера Если тик пропущен (catchup):
| Вариант | Значение | Эффект |
|---|---|---|
| догнать все (по умолчанию) | all | Пропущенные срабатывания выполняются повторно, в окне 24 часа и в пределах 12 последних. |
| только последний | run_once | Повторно выполняется только самое последнее пропущенное срабатывание. |
| ни одного | skip | Ни одно пропущенное срабатывание не выполняется повторно; pipeline продолжает работу со следующего запланированного срабатывания. |
Наверстанное срабатывание выполняется только один раз и помечается schedule.catchup = true, что позволяет pipeline сообщить об отчёте, сформированном с опозданием. Намеренно пропущенное срабатывание (run_once, skip) пропускается окончательно: оно не появится позже, даже если вы потом смените политику.
За пределами окна в 24 часа ничего не воспроизводится: отсутствующий отчёт лучше лавины запоздалых отчётов. Триггеру, который ещё ни разу не выполнялся, нечего наверстывать.
Выбирайте только последний для мгновенного состояния (синхронизация, проверка), где важно лишь последнее выполнение, и ни одного, когда запоздалое выполнение уже не имело бы смысла (ежечасное оповещение, напоминание в фиксированное время).
Типовые сценарии использования
- Ежедневный отчёт в 8:00 — агент, который опрашивает несколько систем, составляет сводку и отправляет краткий отчёт по email.
- Ежечасная синхронизация — pipeline, который извлекает новые элементы из внешней системы, передаёт их агенту-классификатору и заносит результаты в вашу CRM.
- Еженедельная проверка — агент, который проверяет состояние инфраструктуры и отмечает расхождения.
- Напоминание Д+7 — по лидам, отправленным неделю назад и всё ещё оставшимся без ответа.
Рекомендуемые практики
- Избегайте запусков ровно в начале минуты — многие системы срабатывают в
0 * * * *. Предпочитайте7 * * * *, чтобы распределить нагрузку. - Логируйте задачи, которым нечего делать. Задача, которая выполняется, но ничего не делает (потому что нет элементов для обработки), должна явно это фиксировать. Иначе вы не сможете отличить «всё хорошо» от «задача больше не запускается».