EnotPRO Logo EnotPRO

Exit

Exit — досрочно останавливает выполнение реакций в текущем контексте.

📝 Назначение

Используется для немедленного прекращения выполнения текущего триггера или полной остановки всей цепочки реакций (включая вызванные триггеры).

Когда это нужно:

  • Обнаружена критическая ошибка — дальнейшее выполнение невозможно
  • Условия для продолжения не выполнены
  • Необходимо предотвратить выполнение остальных реакций

💡 Совет: Exit обычно ставится под условием (через требования реакции), чтобы остановка происходила только в определённых случаях.

⚙️ Параметры

Параметр Тип Обязательный Описание
Полный выход Boolean ❌ Нет Режим остановки (по умолчанию выключен)

Режим «Полный выход»

Режим Поведение
Выключен (по умолчанию) Остановка только текущего триггера. Если триггер был вызван из другого (через RunTrigger), тот продолжит выполнение
Включён Полная остановка — прерывается всё выполнение реакций, включая вызвавшие триггеры

🧪 Примеры использования

Пример 1: Остановка при ошибке (текущий триггер)

Задача: При отсутствии обязательной переменной прекратить выполнение.

Реакции:

  1. GetVarCloudname: user_token
  2. TriggerFolder с условием: Has${var.person.user_token} (переменная отсутствует)
  • Внутри: Exit (остановка текущего триггера)
  1. SendMessage → текст: Ваш токен: ${var.person.user_token}

Результат: Если переменной нет — выполнение прекращается, SendMessage не отправляется.

Пример 2: Полная остановка всех триггеров

Задача: При критической ошибке прекратить выполнение всех вызванных триггеров.

Ситуация: Триггер А вызывает через RunTrigger триггер Б. В триггере Б произошла критическая ошибка.

В триггере Б:

  1. TriggerFolder с условием: критическая ошибка
  • Внутри: ExitПолный выход: true

Результат: Выполнение прекращается и в триггере Б, и в триггере А. Реакции после RunTrigger в триггере А не выполняются.

Пример 3: Проверка прав доступа

Задача: Если пользователь не является администратором — прекратить выполнение.

Реакции:

  1. GetVarCloudname: is_admin
  2. TriggerFolder с условием: Bool${var.person.is_admin} = false
  • Внутри: SendMessage → текст: У вас нет прав для выполнения этой команды.
  • Внутри: Exit
  1. SendMessage → текст: Добро пожаловать в админ-панель.

Пример 4: Остановка при достижении лимита

Задача: Если пользователь превысил лимит операций — прекратить выполнение.

Реакции:

  1. GetVarCloudname: operations_today
  2. TriggerFolder с условием: ${var.person.operations_today} >= 10
  • Внутри: SendMessage → текст: Превышен суточный лимит операций.
  • Внутри: Exit
  1. AddVarCloudname: operations_today, value: 1
  2. SendMessage → текст: Операция выполнена.

Пример 5: Exit в середине цикла

Задача: При обработке списка прекратить выполнение при определённом условии.

Реакции:

  1. ForСписок: ${var.local.items}
  • Внутри: SendMessage → текст: Обработка: ${loop.item}

  • Внутри: TriggerFolder с условием: ${loop.item} == "stop"

  • Внутри: SendMessage → текст: Обнаружен стоп-сигнал. Остановка.

  • Внутри: Exit

  1. SendMessage → текст: Это сообщение не отправится, если Exit сработал

Пример 6: Exit без полного выхода в вызванном триггере

Задача: Вызванный триггер останавливается сам, но вызывающий продолжает работу.

Триггер А (вызывающий):

  1. RunTriggerТриггер: check_data
  2. SendMessage → текст: Это сообщение отправится всегда

Триггер Б (check_data):

  1. TriggerFolder с условием: данные некорректны
  • Внутри: SendMessage → текст: Данные некорректны, обработка прервана.
  • Внутри: Exit (полный выход выключен — по умолчанию)

Результат: Если данные некорректны — триггер Б останавливается, но триггер А продолжает выполнение и отправляет сообщение.

🔄 Отличие Exit от Break

Характеристика Exit Break
Объект действия Весь триггер (или вся цепочка) Ближайший цикл For
Продолжение выполнения Нет (остановка) Да (после цикла)
Полный выход Может остановить вызвавшие триггеры Нет
Влияние на циклы Полностью прекращает выполнение триггера Выходит только из цикла

💡 Совет: Используйте Break для выхода из цикла, Exit — для полной остановки триггера.

🔄 Особенности поведения

Ситуация Поведение
Exit вне цикла Останавливает выполнение триггера
Exit внутри цикла Останавливает выполнение триггера (весь цикл прерывается)
Exit с Полным выходом = true Останавливает все вызвавшие триггеры
Exit с Полным выходом = false Останавливает только текущий триггер
Exit без условия Срабатывает сразу — остановка в первой же реакции
Exit после Break Недостижим, если Break завершил выполнение

🔗 Связанные реакции

Реакция Назначение
For Организация цикла
Continue Переход к следующей итерации цикла
Break Выход из цикла
© 2025 EnotPRO. Все права защищены.