Процессы — это механизм автоматизации сложных бизнес-сценариев, который позволяет создавать визуальные схемы выполнения действий с поддержкой условной логики, параллельного выполнения и обработки ошибок.
Основные концепции
Элементы процесса
Процесс состоит из различных типов элементов:
- «Начало» — точка входа в процесс.
- «Задача» — выполнение конкретного действия.
- «AI-агент» — отправка задачи AI-агенту и запись его ответа в хранилище процесса.
- «Эксклюзивный шлюз» — условное ветвление.
- «Параллельный шлюз» — объединение нескольких веток процесса в одну.
- «Цикл» — повторение части процесса фиксированное число раз или обход JSON-массива из хранилища.
- «Шаблон» — вычисление Go-шаблона и запись результата в хранилище процесса.
- «Таймер» — пауза до заданного момента времени.
- «Примечание» — текстовый блок.
- «Ошибка» — немедленная остановка процесса со статусом
Failed. - «Конец» — завершение процесса.
Создание процесса
Основная информация
Для создания процесса перейдите в раздел «Самообслуживание» → «Процессы» и нажмите кнопку «Создать».
Заполните следующие поля:
- «Название» — название процесса, от 3 до 64 символов.
- «Описание» — подробное описание назначения процесса.
- «Ресурс» — один или несколько ресурсов, для сущностей которых может запускаться процесс. Процесс без ресурсов не запускается. Запуск для сущности другого ресурса, в том числе через API и MCP-сервер портала, отклоняется с ошибкой
422. Автоматизацию с процессом, не привязанным к ресурсам, для сущностей которых она его запускает, сохранить нельзя, а автоматическое обновление из шаблона пропускает микросервисы, к ресурсу которых процесс обновления не привязан. - «Владелец» — пользователь, ответственный за процесс.
- «Команда-владелец» — команда, ответственная за процесс.
- «Теги» — теги для категоризации процесса.
- «Иконка» — иконка для отображения в интерфейсе.
Настройка процесса
Настройка процесса происходит в визуальном редакторе на вкладке «Конфигурация».
Вкладки «Конфигурация» и «Параметры» доступны уже при создании процесса. Схема нового процесса начинается со связанных элементов «Начало» и «Конец»: процесс сохраняется только со связной схемой.
Добавление элементов
Чтобы добавить элементы на схему:
- Добавьте элемент, выбрав его тип на панели редактора. Элементы сгруппированы на панели по назначению: «Поток» («Начало», «Конец», «Ошибка»), «Работа» («Задача», «AI-агент», «Шаблон»), «Ветвление» (шлюзы), «Время» («Таймер», «Цикл») и «Разметка» («Примечание»).
- Настройте параметры элемента в боковой панели (действие, условия и др.).
- Свяжите элементы друг с другом.
Типы элементов
Задача
Каждая задача — это запуск конкретного действия, созданного ранее в разделе «Самообслуживание» → «Действия».
Если действие требует согласования, согласование запрашивается при каждом выполнении задачи: на каждой итерации цикла и после перезапуска процесса.
Поле «Таймаут (секунды)» задаёт, сколько ждать завершения действия. Если поле не заполнено, ожидание длится 60 минут. По истечении действие отменяется, а задача получает статус Timeout.
Если действие не запустилось из-за условий выполнения, задача получает статус Declined и обрабатывается так же, как задача, завершившаяся ошибкой: если из неё выходит связь к эксклюзивному шлюзу или связь с условием, процесс продолжается по исходящим связям, иначе ветка процесса на этой задаче завершается.
Если пользователь отменил действие задачи, ветка процесса на этой задаче завершается без перехода по исходящим связям, а отмена учитывается в итоговом статусе процесса.
AI-агент
Элемент «AI-агент» отправляет задачу AI-агенту, ждёт завершения его запуска и записывает результат в хранилище процесса. Агент выполняется воркерами портала от имени пользователя, который запустил процесс.
Поле «Таймаут (секунды)» задаёт, сколько ждать завершения запуска агента. Если поле не заполнено, ожидание длится 60 минут. По истечении запуск агента прерывается, а шаг получает статус Timeout.
Если агент недоступен в момент запуска шага, например локальный агент не отвечает, запуск агента сразу завершается ошибкой, а шаг обрабатывается как при ошибке агента. Чтобы выполнить шаг снова, перезапустите процесс.
В конфигурации элемента задаются поля:
| Поле | Обязательность | Описание |
|---|---|---|
| «Исполнитель» | Да | «Агент» из каталога или «Рабочее пространство» |
| «Рабочее пространство» | Для исполнителя «Рабочее пространство» | UUID пространства или Go-шаблон, например {{ .process.workspace_uuid }} |
| «Агент» | Для исполнителя «Агент» | Идентификатор агента. Можно указать Go-шаблон, например {{ .process.agent_slug }} |
| «Сообщение агенту» | Да | Go-шаблон сообщения, которое получает агент. Доступны корни .process, .store и .context |
| «Ключ результата в хранилище» | Да | Dot-path хранилища процесса, по которому записывается результат, например agent_result или analysis.plan. По умолчанию — agent_result |
| «AI-провайдер» | Для агентов, которым модель предоставляет портал | Название AI-провайдера. Обязателен для платформенного агента и внешних агентов с разрешённым прокси моделей DDP |
AI-провайдер ищется по названию среди провайдеров пользователя, который запустил процесс: провайдер из шаблона с общим токеном подходит всем, кому разрешён шаблон, а личный провайдер — только его владельцу. Если провайдер не задан в элементе, его можно выбрать при запуске процесса. Без провайдера процесс не запускается и возвращает ошибку «Укажите AI-провайдера на каждом локальном agent-шаге перед запуском процесса».
Агент получает инструменты назначенных ему MCP-коллекций, которыми может пользоваться инициатор процесса. Без коллекций агент работает без MCP-инструментов. Для запуска требуется право use:ai-agents или use:ai-agent на выбранного агента.
В поле «Исполнитель» можно также выбрать «Рабочее пространство». В этом режиме шаг отправляет задание в прикреплённый чат пространства инициатора, привязанного к сущности процесса.
Результат агента
После завершения запуска агента портал записывает в хранилище по ключу из поля «Ключ результата в хранилище» объект:
{
"type": "agent_run",
"runUuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"agentSlug": "ddp-agent",
"status": "succeeded",
"answer": "Текст ответа агента",
"finishedAt": "2026-10-09T10:15:00Z"
}Поле status принимает значения succeeded, failed или cancelled; при ошибке добавляется поле error с текстом ошибки.
Если ключ уже есть в хранилище, его значение перезаписывается.
Последующие элементы получают ответ агента через хранилище, например {{ .store.agent_result.answer }}. Ключ с точкой записывается вложенным объектом: результат по ключу analysis.plan читается как {{ .store.analysis.plan.answer }}.
Ошибка агента
Если запуск агента завершился ошибкой, поведение зависит от связей элемента:
- если из элемента выходит связь к эксклюзивному шлюзу или связь с условием, портал записывает результат с полями
statusиerrorв хранилище и продолжает процесс по исходящим связям. Чтобы направить процесс по ветке обработки ошибки, проверьте в шлюзе условие{{ eq .store.agent_result.status "succeeded" }}; - иначе ветка процесса на этом элементе завершается, а ошибка учитывается в итоговом статусе процесса.
Если пользователь остановил запуск агента, ветка процесса на этом элементе завершается без перехода по исходящим связям, а отмена учитывается в итоговом статусе процесса.
Если запуск агента не удалось создать, например шаблон поля «Сообщение агенту» ссылается на ключ, которого нет в хранилище, шаг завершается так же, со статусом Failed. Причина ошибки отображается на вкладке «Лог выполнения» боковой панели шага.
Если запуск агента завершился успешно, но результат нельзя записать по пути из поля «Ключ результата в хранилище», шаг завершается со статусом Failed, а процесс по исходящим связям не продолжается. Запись невозможна, когда путь проходит через значение, которое не является объектом, например ключ catalog.status.answer, когда в catalog.status записана строка.
Повторное выполнение
При каждом повторном прохождении элемента, например на новой итерации цикла, портал создаёт новый запуск агента. Запуски агента отображаются в истории запусков с триггером «Процесс», а ответ агента и вызовы инструментов — в боковой панели элемента на схеме запуска.
Эксклюзивный шлюз
Эксклюзивный шлюз позволяет настраивать ветвление процесса по условиям. По умолчанию проверяется статус предыдущей задачи, и в зависимости от него выполнение идёт по «успешной» или «неуспешной» ветке.
В качестве условий для эксклюзивного шлюза можно задать либо проверку статуса предыдущей задачи, либо сравнение значений из шаблонов:
- Для проверки статуса предыдущей задачи используйте конструкцию
{{ .prev_task.status }}. Если в шлюз ведут несколько элементов, проверяется статус того, после которого процесс дошёл до шлюза. - Для проверки значения из хранилища —
{{ .store.<путь> }}, в том числе вложенные ключи:{{ .store.notification.status }}. - Внутри цикла — поля текущего элемента:
{{ .store._loop.item.scan_type }}, флаги{{ .store._loop.first }}и{{ .store._loop.last }}.
Доступна проверка нескольких условий с комбинацией их результатов через оператор AND или OR.
Операции условий:
existsиnot existsпроверяют, есть ли ключ, который читает левая часть условия. Ключ с пустым значением существует.emptyиnot emptyпроверяют, пусто ли значение левой части. Отсутствующий ключ считается пустым.- Для типа
Numberоперации==и!=сравнивают значения как числа:42.0равно42.
Процесс с условием, операция которого не поддерживается, например заданным через API, не сохраняется.
Если проверка условий выполняется, процесс идёт по ветке «Истина» (зелёная); если нет — по ветке «Ложь» (красная). Порты «Истина» и «Ложь» можно размещать на любой стороне шлюза; связь можно перенести на другой порт.
Параллельный шлюз
Применяется для объединения нескольких веток в одну по заданным условиям.
В конфигурации параллельного шлюза можно настроить параметры ожидания:
- Ожидать выполнения всех входящих элементов для продолжения выполнения.
- Ожидать выполнения как минимум одного входящего элемента для продолжения выполнения.
При этом можно настроить, что именно считать «выполнением»:
- Только успешное завершение входящих в шлюз задач.
- Переход входящих задач в любой финальный статус (
Failed,Declined,Canceled,Skippedи т. д.).
При ожидании только успешного завершения входящая задача, которая завершилась ошибкой, отклонена или отменена пользователем, сразу завершает шлюз ошибкой.
Если шлюз ожидает хотя бы один входящий элемент, остальные входящие ветки продолжают выполняться. Запуск завершается после того, как они дойдут до конца.
Поле «Таймаут (секунды)» задаёт, сколько ждать завершения входящих веток. Если поле не заполнено, ожидание длится 60 минут. По истечении шлюз получает статус Timeout. Тайм-аут отсчитывается от прихода первой ветки и не начинается заново после перезапуска портала.
Если шлюз завершился ошибкой — по тайм-ауту или потому, что входящая задача завершилась ошибкой, отклонена или отменена при ожидании только успешного завершения, — входящие в него ветки отменяются вместе с действиями и запусками AI-агентов. Остальные ветки процесса продолжают выполняться.
Параллельные ветки должны сходиться только в параллельном шлюзе. Если ветки не объединяются, у каждой из них должен быть свой элемент «Конец». Параллельно выполняются ветки параллельного шлюза и все исходящие связи любого другого элемента, кроме эксклюзивного шлюза и цикла. Процесс не сохраняется, если:
- параллельные ветки сходятся в элементе, который не является параллельным шлюзом;
- у элемента, кроме «Начало», «Конец», «Ошибка» и «Примечание», нет исходящих связей.
Ветки эксклюзивного шлюза могут вести к общему элементу, параллельные ветки — к общему элементу «Ошибка».
При сохранении портал также проверяет связность схемы: путь от элемента «Начало» до элемента «Конец», связи циклов и таймеров, настройки элементов «Цикл», «Таймер», «Шаблон» и «AI-агент», например число итераций и часовой пояс. Процесс с ошибкой в схеме не сохраняется, причина указывается в сообщении об ошибке. Запуск процесса, сохранённого с такой ошибкой ранее, отклоняется с той же причиной; сохранить такой процесс можно, только исправив схему.
Параллельный шлюз также может использоваться для разделения веток, если подключается после элементов «Эксклюзивный шлюз» или «Цикл», либо в качестве вспомогательного элемента для повышения читаемости схемы процесса.
Объединение веток в цикле
Если параллельный шлюз объединяет ветки внутри цикла или на пути возврата по обратной связи, на каждом прохождении шлюз учитывает только ветки, завершившиеся на этом прохождении. Завершение ветки на предыдущей итерации не засчитывается.
Поэтому каждая ветка, входящая в шлюз, должна доходить до него на каждом прохождении.
Если ветка не дошла до шлюза за тайм-аут элемента (по умолчанию 60 минут), шлюз завершается ошибкой ParallelGateway Join timed out со списком незавершённых веток. Тайм-аут отсчитывается от начала текущего прохождения.
Условия эксклюзивного шлюза tasksCompleted и tasksCompletedAny проверяют, завершалась ли задача хотя бы раз за весь запуск процесса, а не только на текущем прохождении.
Цикл
Элемент «Цикл» повторяет ветку процесса либо фиксированное число раз, либо по каждому элементу JSON-массива из хранилища. После завершения всех итераций активируется элемент, подключённый к выходу из цикла.
Режим цикла
Доступны два режима:
- «Фиксированное число» — поле «Количество итераций» от 1 до 10000. На каждой итерации в
{{ .store._loop.item }}доступен номер итерации (1, 2, 3…). - «По коллекции» — поле «Шаблон коллекции»: Go-шаблон, который при входе в цикл должен дать JSON-массив. Обычно указывают путь к массиву, записанному предыдущей задачей:
{{ .store.notification.engagements }}. Каждый элемент массива — одна итерация; текущий элемент доступен как{{ .store._loop.item }}. Массив может содержать до 10 000 элементов; массив большего размера завершает цикл с ошибкой.
Если массив пуст или ключ отсутствует, тело цикла не выполняется, процесс сразу переходит по связи «Выход из цикла».
Подробнее — в разделе «Хранилище процесса».
Исходящие связи
Из элемента «Цикл» должны выходить ровно две связи к разным элементам:
- «Тело цикла» — от этого порта строится ветка, которая выполняется на каждой итерации.
- «Выход из цикла» — по этой ветке выполнение продолжается после последней итерации.
Порты «Тело цикла» и «Выход из цикла» можно размещать на любой стороне элемента; связь можно перенести на другой порт.
Использование
Типовые сценарии:
- повторная проверка статуса внешней системы с фиксированным числом попыток;
- обход списка объектов из ответа API: задача записывает массив в хранилище, цикл в режиме «По коллекции» обрабатывает каждый элемент;
- вложенные циклы — контекст родителя доступен через
{{ .store._loop.parent }}.
Шаблон
Элемент «Шаблон» вычисляет Go-шаблон без дополнительного вызова действия и записывает результат в хранилище как строку.
Настройте:
- «Тело шаблона» — текст с плейсхолдерами
{{ .store.* }},{{ .process.* }}, внутри цикла —{{ .store._loop.* }}; - «Ключ в хранилище» — dot-path назначения, например
rendered_messageилиnotification.summary. Ключ с точкой записывается вложенным объектом и читается как{{ .store.notification.summary }}; - «Подсказка формата» — как отображать значение при просмотре запуска (
text,markdown,html,json); не влияет на содержимое хранилища.
Если шаблон не удалось вычислить или результат нельзя записать по пути из поля «Ключ в хранилище», элемент получает статус Failed, а процесс завершается с ошибкой.
Примеры и ограничения — в разделе «Хранилище процесса».
Таймер
Элемент «Таймер» приостанавливает выполнение процесса до наступления заданного момента времени, после чего активируется следующий элемент.
Пока процесс ожидает только срабатывания таймера (других активных задач нет), запуск переводится в статус Wait. Параллельный шлюз, который ждёт только ветки с ожидающими таймерами, тоже не держит запуск в статусе Running. На панели визуализации запуска отображается баннер «Ожидание по таймеру — не ранее {ends} ({remaining})» с ориентировочным временем возобновления.
Исходящие связи
От элемента «Таймер» должна исходить ровно одна связь к следующему элементу. Подключение возможно только через левый (вход) и правый (выход) порты.
При повторном прохождении таймера в том же запуске (например, через цикл) момент срабатывания рассчитывается заново.
Режимы расписания
В конфигурации таймера выберите «Расписание»:
- «Задержка после входа в элемент» — фиксированная пауза с момента, когда процесс дошёл до таймера. Задайте «Задержка (секунды)» от 1 до 1 209 600 (14 суток).
- «Произвольное расписание» — срабатывание в заданное время по календарю в выбранном часовом поясе (IANA, например
Europe/Moscow).
Для режима «Произвольное расписание» укажите «Шаблон»:
- «Определённый день недели» — «День недели», «Время суток» (час и минута), «Часовой пояс».
- «Определённое число каждого месяца» — «Число месяца» (1–31), «Время суток», «Часовой пояс». Если в месяце нет такого числа, используется последний день месяца.
- «Каждые N дней» — «Каждые N дней» (1–365), «Время суток», «Часовой пояс». Первое срабатывание — не ранее чем через N календарных дней от дня, когда процесс дошёл до таймера; при повторном входе в элемент расчёт выполняется снова.
«Время суток» задаётся в выбранном часовом поясе (поле «Часовой пояс»), если он отличается от пояса браузера.
Использование
Типовые сценарии: пауза перед повторной проверкой статуса внешней системы, отложенный запуск следующего шага, ожидание окна обслуживания или регулярного слота по календарю.
Примечание
Элемент «Примечание» предназначен для текстовых пояснений на схеме процесса: он не выполняется при запуске и не соединяется с другими элементами.
В конфигурации примечания можно задать:
- «Текст» — содержимое с поддержкой Markdown-разметки.
- «Цвет фона» — цвет заливки фона.
- «Цвет текста» — цвет текста.
Примечание всегда позиционируется за остальными элементами и может использоваться для визуального выделения частей процесса. Также это единственный элемент, размер которого можно изменить.
Ошибка
Элемент «Ошибка» принудительно переводит запущенный процесс в статус Failed: при достижении этого элемента выполнение всех действий процесса прерывается.
От элемента не должно исходить связей к следующим элементам.
Параметры процесса
На вкладке «Параметры» настраиваются параметры процесса, которые могут использоваться во всех действиях процесса.
Конфигурация и использование параметров процесса описаны в разделе «Шаблонизация».
Хранилище процесса
Хранилище процесса — JSON-объект для передачи данных между шагами одного запуска: идентификаторы, массивы, промежуточные результаты и тексты из элемента «Шаблон».
Полное описание правил записи, операций, контекста цикла и примеров сценариев — в разделе «Хранилище процесса».
Кратко:
- Одно хранилище на запуск — у каждого экземпляра процесса своё хранилище; его можно просмотреть на вкладке «Хранилище» при визуализации запуска.
- Вложенные пути — ключи задаются через точку:
notification.module_name,ctx.job.id; поддерживаются индексы массивов:items[0].status. - Запись по правилам — данные попадают в хранилище после успешного выполнения действия или при проходе элементов «Шаблон» и «AI-агент». Доступны операции записи строки и JSON, добавления, слияния и удаления, а также условие на каждое правило. Настройка правил в действии описана в разделе «Обновление хранилища процесса».
- Чтение — Go-шаблоны
{{ .store.<путь> }}в конфигурации действий и условиях шлюзов. Синтаксис описан в разделе «Хранилище процесса» страницы «Шаблонизация».
Если ключа нет в хранилище, шаблон {{ .store.<путь> }} завершит шаг с ошибкой.
Запуск процесса
Ручной запуск
Чтобы запустить процесс вручную:
- Перейдите к сущности, для которой нужно запустить процесс.
- В меню сущности выберите «Запустить процесс» или нажмите «Запустить» рядом с нужным процессом в одном из блоков: «Запуск» на вкладке «Обзор» или «Что можно запустить» на вкладке «Процессы».
- Выберите процесс в списке. Если доступен один процесс, он выбран автоматически и список не отображается.
- Заполните параметры процесса.
- Нажмите «Запустить».
После запуска отображается уведомление «Процесс “{name}” запущен».
Параметры запуска
Окно «Запустить процесс» открывается в упрощённом режиме. В нём отображаются только параметры процесса с признаком «Показывать в упрощённой форме» и обязательные параметры, у которых нет значения. Остальные параметры сохраняют значения по умолчанию и передаются при запуске.
Над параметрами отображается подсказка «Показаны важные параметры: {important} из {total}». Если важных параметров нет, отображается «Важных параметров нет», а если заполнять ничего не нужно — сообщение «Для запуска этого процесса не нужно заполнять параметры — нажмите «Запустить»».
Кнопка «Все параметры процесса» переключает окно в полный режим, кнопка «Только важные параметры» — обратно. В полном режиме доступны разделы:
- «Общие параметры процесса» — параметры, определённые в конфигурации процесса;
- «Командные параметры процесса» — команда, переменные которой используются при выполнении;
- «Конфигурация» — схема процесса. Нажмите на задачу, чтобы включить или выключить её действие и заполнить его параметры.
Для элементов «AI-агент» и «Шаблон» на схеме доступен переключатель «Включить шаг»: если он выключен, шаг пропускается в этом запуске. Для элементов «AI-агент», которым модель предоставляет портал, в боковой панели шага выбирается AI-провайдер для этого запуска. Если провайдер не задан ни в конфигурации, ни при запуске, отображается ошибка «На agent-шагах, где модель предоставляет DDP, укажите AI-провайдера (клик по шагу на графе справа): {steps}».
Описание процесса отображается под заголовком в сокращённом виде; ссылка «подробнее» раскрывает его полностью.
Запуск выполняется по схеме процесса на момент запуска: изменение процесса не влияет на уже идущие запуски, их возобновление и перезапуск. Новая схема применяется к следующим запускам.
Если обязательный параметр процесса не заполнен, при нажатии «Запустить» отображается ошибка «Заполните все обязательные параметры процесса». Если не заполнено обязательное поле включённой задачи, окно переключается в полный режим с ошибкой «Заполните все обязательные поля для всех включённых задач».
Контекст запуска
Контекст запуска — значения, которые раздел портала передаёт процессу при запуске, например окружение и система, выбранные на главной. Пользователь контекст не вводит, и в конфигурации процесса он не хранится.
В шаблонах процесса контекст доступен через корень .context, например {{ .context.environment.slug }}. Процесс, запущенный из каталога, получает пустой контекст.
Состав контекста для каждого сценария главной описан в разделе «Процессы главной».
Процессы развёртывания и удаления микросервиса из набора данных реестра шаблонов требуют контекст запуска. Без контекста такой процесс не запускается и возвращает ошибку «Этот процесс требует контекст запуска и не может быть запущен напрямую». На странице сущности такие процессы отображаются, только если для сущности найдено окружение, в котором она развёрнута; при запуске в окне выбирается «Окружение».
Управление выполнением
Статусы процесса
Статус запуска отображается одним из следующих значений:
Running— процесс выполняется.Wait— процесс ожидает только срабатывания таймера, в том числе когда параллельный шлюз ждёт только ветки с ожидающими таймерами.Unapproved— в процессе не осталось другой работы, кроме задач, ожидающих согласования действия. Пока в соседней ветке выполняется шаг «AI-агент» или ожидает таймер, запуск остаётся в статусеRunningилиWait.Paused— выполнение процесса приостановлено.Resuming— запуск восстанавливается после перезапуска портала.Completed— все ветки процесса завершились, процесс дошёл до элемента «Конец», и каждая ошибка обработана: после задачи или шага «AI-агент», завершившихся ошибкой, или отклонённой задачи ветку продолжил эксклюзивный шлюз или параллельный шлюз, который принимает любой финальный статус.Partially Completed— процесс дошёл хотя бы до одного элемента «Конец», но часть веток остановилась: на задаче или шаге «AI-агент», которые завершились ошибкой без обработки, на отклонённой задаче без обработки, на шаге, который отменил пользователь, или на параллельном шлюзе, который завершился ошибкой. Статус ставится, когда в запуске не осталось выполняющихся шагов: пока другая ветка работает, например ждёт согласования, запуск остаётся в статусеRunning,UnapprovedилиWait.Failed— процесс завершился с ошибкой: ни один элемент «Конец» не достигнут или процесс дошёл до элемента «Ошибка».Canceled— пользователь остановил или отменил запуск. Этот же статус получает запуск, который не дошёл ни до одного элемента «Конец», если его ветки остановились только на шагах, отменённых пользователем.
Операции управления
Кнопки управления запуском отображаются на карточке запуска в панели «Мои активности» на вкладке «Процессы». Набор кнопок зависит от статуса запуска:
- «Перезапустить процесс» — запускает процесс заново с элемента «Начало» по схеме, с которой запуск начался; таймлайн запуска сохраняется, хранилище процесса очищается, согласование действий запрашивается заново. Запуск в статусе
Running,Wait,Paused,ResumingилиUnapprovedперезапустить нельзя: сначала остановите его. При перезапуске останавливаются выполняющиеся запуски AI-агентов процесса. - «Приостановить процесс» — приостанавливает запуск в статусе
Running. - «Возобновить процесс» — возобновляет запуск в статусе
Paused. - «Отменить процесс» — отменяет запуск в статусе
RunningилиPaused. Запуск получает статусCanceled. - «Остановить процесс» — останавливает запуск в другом незавершённом статусе, например
WaitилиUnapproved. Запуск получает статусCanceled. - «Удалить процесс» — удаляет запуск в любом статусе. Незавершённый запуск сначала останавливается: его действия и запуски AI-агентов отменяются.
Те же операции доступны в таблице «История запусков» на вкладке «Процессы» сущности. Отмена и остановка там выполняются одной кнопкой. Кнопки запуска процессов и управления запусками на этой вкладке неактивны, если у пользователя нет разрешения control:processes глобально, на ресурс сущности или на саму сущность.
Отслеживание состояния
Пока у пользователя выполняются процессы, значок панели «Мои активности» в верхней панели портала заменяется индикатором. На вкладке «Процессы» панели отображается число выполняющихся процессов и строка «Выполняются процессы: {count}»; список обновляется при запуске и завершении процесса.
В таблице «История запусков» на вкладке «Процессы» сущности можно просмотреть:
- Список всех запусков процессов для сущности.
- Детальную информацию о каждом запуске.
- Логи выполнения действий.
- Статус каждого элемента процесса.
- Хронологию выполнения процесса.
- Содержимое хранилища процесса на вкладке «Хранилище».
Таймлайн
На панели визуализации запуска процесса доступна вкладка «Таймлайн», на которой отображается хронология выполнения процесса: для каждого элемента, который участвовал в текущем запуске, показаны время начала и окончания, длительность и состояние.
Состояние элемента отображается цветом полосы и подписью в легенде: «Выполнено», «Выполнено после повтора», «Выполняется», «Ожидание», «Ждёт подтверждения», «Ошибка», «Отклонено», «Отменено» или «Пропущено». «Отклонено» означает задачу, действие которой не запустилось из-за условий выполнения, «Пропущено» — шаг, выключенный при запуске.
Пока запуск выполняется, незавершённые элементы продолжаются до отметки «Сейчас». После завершения запуска элемент, который не завершился сам, например цикл, на итерации которого процесс завершился с ошибкой, заканчивается в момент завершения запуска и получает его итоговый статус.
Схема запуска
Пока запуск выполняется, схема обновляется каждые 5 секунд. Состояние элемента показывает отметка в углу элемента: выполнен, выполнен после повтора, ошибка, отклонён, отменён, выполняется, ожидание, пропущен или ожидает подтверждения. Для завершённого запуска боковая панель элемента, который не завершился сам, показывает итоговый статус запуска и время его завершения. Задачу, которая ожидает подтверждения, можно подтвердить кнопкой «Подтвердить» прямо на схеме. Кнопка активна только для пользователей из списка подтверждающих действия.
Пройденный путь выделяется цветом, связи, по которым процесс не прошёл, отображаются светло-серыми. Элементы, пройденные на предыдущих итерациях цикла, отображаются приглушёнными, а цикл показывает «Итерация {current} из {total}». Если элемент выполнялся несколько раз, в его боковой панели лог каждого прохождения отображается отдельно с заголовком «Посещение {n}».
Лог процесса
Для каждого запуска процесса доступен подробный лог выполнения. На схеме запуска он свёрнут в строку «Лог выполнения процесса»; если в логе есть ошибки, рядом отображается их число «Ошибок: {count}».
Чтобы просмотреть лог:
- Нажмите «Показать лог». Лог откроется под схемой или слева от неё — там, где он был открыт в последний раз.
- Чтобы перенести лог слева от схемы или обратно, нажмите «Показать лог слева» или «Показать лог снизу».
- Чтобы открыть лог в окне на весь экран, нажмите «Открыть лог в отдельном окне».
- Чтобы свернуть лог, нажмите «Скрыть лог».
Выбор, открыт лог или свёрнут, и его положение сохраняются в браузере.
Кнопка «Скачать диагностику» в окне запуска процесса скачивает JSON-файл для разбора запуска. В поле instance файла — описание запуска: статус, элементы, история событий и содержимое хранилища. В поле executionLog — полный лог выполнения построчно, без цветовой разметки.
Минимальный уровень сообщений в логе задаёт параметр модуля logger.executionLevel: по умолчанию info, сообщения уровня debug не отображаются. Параметр действует также на логи действий, синхронизаций источников данных и проверок состояния.
Примеры использования
Создание проекта с настройкой
Типовая схема процесса:
- «Начало» — запуск процесса.
- «Задача» — создание проекта в GitLab.
- «Эксклюзивный шлюз» — проверка успешности создания.
- «Задача» (при успехе) — настройка переменных проекта.
- «Задача» (при ошибке) — отправка уведомления об ошибке.
- «Конец» — завершение процесса.
Развёртывание приложения
Типовая схема процесса:
- «Начало» — запуск процесса развёртывания.
- «Параллельный шлюз» — разделение на ветки.
- «Задача» (ветка 1) — создание неймспейса в Kubernetes.
- «Задача» (ветка 2) — создание секретов в Vault.
- «Параллельный шлюз» — ожидание завершения обеих веток.
- «Задача» — развёртывание приложения.
- «Конец» — завершение процесса.
Ограничения
На процессы действуют следующие ограничения:
- Элемент «Цикл» в режиме «Фиксированное число» выполняет от 1 до 10 000 итераций.
- Коллекция элемента «Цикл» в режиме «По коллекции» может содержать до 10 000 элементов. Коллекция большего размера завершает цикл с ошибкой.
- Поле «Задержка (секунды)» элемента «Таймер» принимает значения от 1 до 1 209 600 (14 суток), поле «Каждые N дней» — от 1 до 365.
- Размер тела элемента «Шаблон» — не более 1 МиБ.
- Если поле «Время на выполнение (сек)» задачи больше нуля, задача прерывается по истечении этого времени и получает статус
Timeout.