Глава 6. Workflow — пусть система работает за нас

В прошлой главе мы добавили права, чтобы разные роли видели разное. Но все операции пока вручную: новая заявка пришла — надо самому посмотреть, статус сменился — никто не знает.

В этой главе с помощью Workflow NocoBase система начнёт работать сама — настроим условные ветвления и узлы автоматического обновления для автоматического перевода статуса заявки и записи времени её создания.

6.1 Что такое Workflow

Workflow — это набор автоматизированных правил «если…, то…».

Аналогия: будильник на телефоне срабатывает каждый день в 8 утра. Будильник — простейший workflow: выполнено условие (наступило 8 утра) — выполняется действие (звонит).

Workflow в NocoBase устроен так же:

06-workflows-2026-03-20-13-25-38

  • Триггер: точка входа. Например, «кто-то создал новую заявку» или «обновлена запись».
  • Условное ветвление: опциональный шаг фильтрации. Например, «продолжаем только если обработчик не пустой».
  • Действия: собственно работа. Например, «отправить уведомление» или «обновить поле».

Действия складываются в цепочку из узлов; типичные категории узлов:

  • Управление потоком: условные ветвления, параллельные ветви, циклы, задержки
  • Работа с данными: создание, обновление, чтение, удаление
  • Уведомления и внешние сервисы: уведомления, HTTP-запросы, вычисления

В этом учебнике используются только самые распространённые из них — этого хватает на большинство сценариев.

Типы триггеров

NocoBase предлагает несколько типов триггеров (выбираются при создании workflow):

ТриггерОписаниеТипичный сценарий
Событие таблицыПри создании, обновлении или удалении данныхУведомление о новой заявке, журналирование смены статуса
Запланированная задачаПо cron или фиксированному времениЕжедневный отчёт, регулярная очистка
Событие после операцииПосле действия пользователя в интерфейсеУведомление после отправки формы, журнал
СогласованиеЗапуск процесса согласования с многоступенчатой структуройСогласование отпуска, закупки
Кастомное действиеПривязка к кастомной кнопке, срабатывает по кликуАрхивирование, массовая операция
Событие до операцииПерехват действия, синхронное выполнение, потом проходВалидация перед отправкой, автозаполнение
AI EmployeeWorkflow доступен AI-сотруднику как инструментАвтоматические бизнес-операции AI

В учебнике мы используем Событие таблицы и Кастомное действие — остальные настраиваются аналогично.

Workflow — встроенный plugin NocoBase, ничего дополнительно ставить не нужно.

6.2 Сценарий 1: новое заявление автоматически уведомляет обработчика

Требование: когда создаётся новая заявка с обозначенным обработчиком, система автоматически отправляет ему внутрисистемное сообщение «прилетела работа».

Шаг 1. Создаём workflow

В правом верхнем углу откройте меню настройки plugin и зайдите в Workflow management.

06-workflows-2026-03-14-23-50-45

Нажмите «Создать», в диалоге:

  • Название: «Уведомление обработчика о новой заявке»
  • Тип триггера: Событие таблицы

06-workflows-2026-03-14-23-53-37

Подтвердите, в списке нажмите ссылку «Configure» и зайдёте в редактор процесса.

Шаг 2. Настраиваем триггер

Кликните на карточку триггера, откроется панель настройки:

  • Таблица: главный источник / «Заявки»

  • Когда срабатывает: «После создания или обновления данных»

  • Изменённые поля: отметьте «Обработчик (Assignee)» — триггер будет срабатывать только при изменении этого поля, лишних уведомлений не будет (при создании все поля считаются изменёнными, поэтому новое создание тоже сработает)

  • Условие срабатывания: режим «удовлетворяет любое из условий», добавьте два:

    • assignee_id не пуст
    • Assignee / ID не пуст

    Зачем два условия? Потому что в моменте триггера в форме может быть только внешний ключ (assignee_id) без подтянутого связного объекта, или наоборот — связной объект есть, а внешний ключ пуст. Связь по «ИЛИ» гарантирует срабатывание, если назначен обработчик.

  • Подгружать связные данные: отметьте «Assignee» — узел уведомления будет использовать данные обработчика, их нужно подтянуть заранее в триггере.

06-workflows-2026-03-14-23-58-31

Сохраните. Триггер сам уже выполнил фильтрацию по условию — отдельный узел условного ветвления не нужен.

Шаг 3. Добавляем узел уведомления

Нажмите + под триггером, выберите узел Notification.

06-workflows-2026-03-15-00-00-55

Откройте настройки узла. Первое поле — выбор канала уведомления, но ни одного канала ещё нет — список пустой. Создадим.

06-workflows-2026-03-15-00-10-12

Шаг 4. Создаём канал уведомлений

NocoBase поддерживает разные каналы:

Тип каналаОписание
Внутрисистемное сообщениеУведомление в браузере, в реальном времени попадает в центр уведомлений пользователя
EmailЧерез SMTP, нужен настроенный почтовый сервер

В учебнике используем самый простой — внутрисистемное сообщение:

  1. Откройте plugin-настройки в правом верхнем углу, перейдите в Notification management.
  2. Нажмите «Новый канал».

06-workflows-2026-03-15-00-13-07

  1. Тип канала — внутрисистемное сообщение, имя — «Системные сообщения».
  2. Сохраните.

06-workflows-2026-03-15-00-17-55

Шаг 5. Настраиваем узел уведомления

Возвращаемся в редактор workflow и открываем настройки узла Notification.

Параметры:

  • Канал уведомления: выберите «Системные сообщения»
  • Получатель: «Запрос пользователей → id = Переменная триггера / Триггерные данные / Обработчик / ID»
  • Заголовок: например, «У Вас новая заявка». Поддерживаются переменные, можно добавить заголовок заявки: Новая заявка: {{Триггерные данные / Заголовок}}
  • Содержимое: тело уведомления, тоже с переменными — приоритет, описание и т. д.

06-workflows-2026-03-15-20-10-11

(Сейчас пойдём за адресом заявки — перед выходом не забудьте сохранить!)

  • Десктопная страница деталей: путь URL детальной страницы заявки. Как получить: откройте на фронтенде любую заявку в виде окна деталей, скопируйте адрес из строки браузера, формат вроде /admin/camcwbox2uc/view/d8f8e122d37/filterbytk/353072988225540. Вставьте путь в поле; число после filterbytk/ — это ID заявки. Замените эту часть переменной ID триггерных данных (выбор переменной → Триггерные данные → ID). После настройки клик по уведомлению в списке отправит пользователя сразу на страницу деталей и автоматически отметит уведомление как прочитанное.

06-workflows-2026-03-15-00-28-32

06-workflows-2026-03-15-20-15-19

  • Продолжать при ошибке отправки: опционально; если включено, workflow не прервётся при ошибке отправки уведомления.

После отправки обработчик увидит сообщение в центре уведомлений в правом верхнем углу, у непрочитанных будет красная точка. Клик по уведомлению — переход на страницу деталей.

Шаг 6. Тест и активация

Полная цепочка сценария 1 включает только два узла: триггер (с фильтрами) → уведомление. Просто и эффективно.

Не торопитесь активировать — workflow поддерживает ручной запуск для проверки на конкретных данных:

  1. Нажмите «Execute» в правом верхнем углу (а не переключатель активации).
  2. Выберите существующую заявку как триггерные данные.

Если в выборе заявки отображается ID, в Data sources → Collections → Заявки задайте «Заголовок» как title field. 06-workflows-2026-03-15-19-47-57

  1. Нажмите Execute — workflow выполнится и автоматически переключится на скопированную новую версию. 06-workflows-2026-03-15-19-57-19

  2. Нажмите три точки в правом верхнем углу и выберите Execution history — увидите запись только что выполненного запуска. Кликнув её, можно посмотреть детали: триггер, выполнение каждого узла, параметры. 06-workflows-2026-03-15-19-58-34

06-workflows-2026-03-15-20-01-02

  1. Заявка была назначена Alice, переключимся под её аккаунт — уведомление пришло!

06-workflows-2026-03-15-20-16-22

Клик переходит на страницу заявки и помечает уведомление прочитанным.

06-workflows-2026-03-15-20-16-54

Убедившись, что всё работает, переключите тумблер активации в правом верхнем углу.

06-workflows-2026-03-15-20-18-16

Внимание: после первого выполнения workflow (включая ручное) становится только для чтения (серый), редактировать его нельзя. Чтобы изменить, нажмите «Copy to new version» и работайте на новой версии. Старая версия автоматически отключится.

06-workflows-2026-03-15-20-19-11

Возвращаемся на страницу заявок, создаём новую с обработчиком, потом логинимся под обработчиком — в центре уведомлений должно появиться новое сообщение.

06-workflows-2026-03-15-20-22-00

Поздравляем, первый автоматический сценарий запущен!

6.3 Сценарий 2: смена статуса автоматически фиксирует время завершения

Требование: когда статус заявки становится «Завершено», система автоматически проставляет в поле «Время завершения» текущее время. Не надо записывать вручную и ничего не забудется.

Если в таблице заявок ещё нет поля «Время завершения», добавьте поле типа Date в Управление таблицами → Заявки (см. Главу 2). 06-workflows-2026-03-15-20-25-38

Шаг 1. Новый workflow

Возвращаемся в Workflow management, нажимаем «Создать»:

  • Название: «Автозапись времени завершения заявки»
  • Тип триггера: Кастомное действие (срабатывает по клику кнопки, привязанной к workflow)
  • Режим выполнения: синхронный

О синхронном и асинхронном:

  • Асинхронный: после операции можно делать другие дела, workflow выполняется в фоне и уведомляет о результате
  • Синхронный: интерфейс ждёт окончания workflow, и только потом можно работать дальше

06-workflows-2026-03-19-22-56-34

Шаг 2. Настраиваем триггер

Откройте настройки триггера:

  • Таблица: «Заявки»
  • Режим выполнения: однострочный (за раз обрабатывается только текущая выбранная заявка)

06-workflows-2026-03-19-22-58-21

Шаг 3. Добавляем условное ветвление

В отличие от триггера события таблицы, у кастомного действия нет встроенных условий — добавляем узел условного ветвления сами:

06-workflows-2026-03-15-20-39-14

Рекомендуем выбрать «Продолжать раздельно по «Да» и «Нет»» — удобно расширять.

  • Условие: Триггерные данные → Статус не равно Завершено (только незавершённые заявки проходят дальше, повторно не обрабатываются)

06-workflows-2026-03-19-22-37-59

Шаг 4. Добавляем узел обновления данных

В ветке «Да» условного узла нажмите +, выберите Update data:

06-workflows-2026-03-15-20-46-22

  • Таблица: «Заявки»
  • Условие фильтрации: ID = Триггерные данные → ID (обновим только текущую заявку)
  • Значения полей:
    • Статус = Завершено
    • Время завершения = Системная переменная / Системное время

06-workflows-2026-03-19-22-39-27

Один узел делает сразу два дела — меняет статус и записывает время — без необходимости настраивать значения полей в кнопке.

Шаг 5. Создаём кнопку «Завершить»

Workflow готов, но «Кастомное действие» нужно привязать к кнопке. Создадим кнопку «Завершить» в колонке операций списка заявок:

  1. В режиме UI Editor в колонке операций таблицы заявок нажмите «+» и выберите операцию «Trigger workflow».

06-workflows-2026-03-19-22-41-31

  1. В настройках кнопки измените заголовок на «Завершить» и выберите подходящую иконку (например, галочку).

06-workflows-2026-03-19-22-43-39

  1. Настройте связное правило для кнопки: при статусе «Завершено» кнопка скрывается (для уже завершённых заявок «Завершить» не нужен).
    • Условие: Текущая запись → Статус равен Завершено
    • Действие: скрыть

06-workflows-2026-03-15-21-15-29

  1. В настройках кнопки откройте «Bind workflow» и выберите наш workflow «Автозапись времени завершения заявки».

06-workflows-2026-03-19-23-00-53

Шаг 6. Настраиваем event-flow для обновления

Кнопка готова, но после клика таблица не обновится сама — пользователь не увидит изменений. Настроим event flow кнопки, чтобы после выполнения workflow таблица перезагружалась.

  1. В настройках кнопки нажмите вторую иконку молнии (⚡) и откройте Event flow.
  2. Настройте срабатывание:
    • Триггер события: выберите Click
    • Время выполнения: выберите После всех потоков
  3. Нажмите «Append step» и выберите «Refresh target block».

06-workflows-2026-03-20-16-46-59

  1. Найдите таблицу заявок текущей страницы, в её настройках выберите внизу «Copy UID» и вставьте UID в шаг обновления.

06-workflows-2026-03-20-16-48-39

После клика по «Завершить» workflow выполняется и таблица обновляется — пользователь сразу видит изменения статуса и времени завершения.

Шаг 7. Активация и тестирование

Возвращаемся в Workflow management и активируем workflow «Автозапись времени завершения заявки».

Откройте заявку со статусом «В обработке» и нажмите «Завершить» в колонке операций. Можно увидеть:

  • Поле «Время завершения» автоматически заполнится текущим временем.
  • Таблица обновится, кнопка «Завершить» исчезнет с этой заявки (связное правило сработало).

06-workflows-2026-03-15-21-25-11

Удобно? Это второй типичный сценарий workflow — автоматическое обновление данных. И благодаря связке «Кастомное действие + кнопка» мы получили точный механизм запуска: workflow выполняется только при клике по конкретной кнопке.

6.4 Просмотр истории выполнения

Сколько раз отработал workflow? Не было ли ошибок? NocoBase всё фиксирует.

В списке Workflow management у каждого workflow есть ссылка Execution count с числом запусков. По клику открывается подробная история:

  • Статус: успех (зелёный) или провал (красный) — на виду
  • Время триггера: когда сработал
  • Узлы: внутри можно посмотреть результат каждого узла

06-workflows-2026-03-15-21-25-38

Если выполнение провалилось, в деталях видно, какой узел сломался и какая ошибка. Это главный инструмент отладки.

06-workflows-2026-03-15-21-36-16

Итоги главы

В этой главе мы создали два простых, но полезных workflow:

  • Уведомление о новой заявке (триггер — событие таблицы): автоматически уведомляет при создании или смене обработчика — кричать никому не нужно.
  • Автозапись времени завершения (триггер — кастомное действие): после клика по «Завершить» автоматически проставляется время — никаких пропусков.

Два workflow показывают два разных механизма запуска. Настройка занимает менее 10 минут — и система уже работает сама. NocoBase поддерживает больше типов узлов (HTTP-запросы, вычисления, циклы и т. д.), но для старта этих комбинаций достаточно для большинства задач.

Анонс следующей главы

Система автоматизирована, но не хватает целостной картины: всего сколько заявок? Какая категория преобладает? Сколько новых каждый день? В следующей главе с помощью блоков графиков соберём дашборд — увидим всё одним взглядом.

Связанные ресурсы