Процессы — это механизм автоматизации сложных бизнес-сценариев, который позволяет создавать визуальные схемы выполнения действий с поддержкой условной логики, параллельного выполнения и обработки ошибок.

Основные концепции

Элементы процесса

Процесс состоит из различных типов элементов:

  • Начало — точка входа в процесс.
  • Задача — выполнение конкретного действия.
  • Эксклюзивный шлюз — условное ветвление.
  • Параллельный шлюз — объединение нескольких веток процесса в одну.
  • Цикл — повторение части процесса заданное число раз.
  • Примечание — текстовый блок.
  • Ошибка — немедленная остановка процесса со статусом Failed.
  • Конец — завершение процесса.

Создание процесса

Основная информация

Для создания процесса перейдите в раздел «Самообслуживание» → «Процессы» и нажмите кнопку «Создать».

Заполните следующие поля:

  • Название — название процесса.
  • Описание — подробное описание назначения процесса.
  • Ресурс — один или несколько ресурсов, для которых может запускаться процесс.
  • Владелец — пользователь, ответственный за процесс.
  • Команда владелец — команда, ответственная за процесс.
  • Теги — теги для категоризации процесса.
  • Иконка — иконка для отображения в интерфейсе.

Настройка процесса

Настройка процесса происходит в визуальном редакторе на вкладке «Конфигурация».

Для настройки процесса необходимо сначала заполнить основные поля и создать его. После этого станут доступны вкладки «Конфигурация» и «Параметры».

Добавление элементов

  1. Добавьте элемент, выбрав его тип на панели редактора.
  2. Настройте параметры элемента в боковой панели (действие, условия и др.).
  3. Свяжите элементы друг с другом.

Типы элементов

Задача

Каждая задача — это запуск конкретного действия, созданного ранее в разделе «Самообслуживание» → «Действия».

Эксклюзивный шлюз

Эксклюзивный шлюз позволяет настраивать ветвление процесса по условиям. По умолчанию проверяется статус предыдущей задачи, и в зависимости от него выполнение идёт по «успешной» или «неуспешной» ветке.

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

  • Для проверки статуса предыдущей задачи используйте конструкцию {{ .prev_task.result }}
  • Для проверки значения переменной из хранилища используйте конструкцию {{ .store.<название переменной> }}.

Доступна проверка нескольких условий с комбинацией их результатов через оператор AND или OR.

Если проверка условий выполняется, процесс идёт по «успешной» (зелёной) ветке; если нет — по «неуспешной» (красной) ветке.

Параллельный шлюз

Применяется для объединения нескольких веток в одну по заданным условиям.

В конфигурации параллельного шлюза можно настроить параметры ожидания:

  • Ожидать выполнения всех входящих элементов для продолжения выполнения.
  • Ожидать выполнения как минимум одного входящего элемента для продолжения выполнения.

При этом можно настроить, что именно считать «выполнением»:

  • Только успешное завершение входящих в шлюз задач.
  • Переход входящих задач в любой финальный статус (Failed, Skipped и т. д.).

Параллельный шлюз также может использоваться для разделения веток, если подключается после элементов «Эксклюзивный шлюз» или «Цикл», либо в качестве вспомогательного элемента для повышения читаемости схемы процесса.

Цикл

Элемент Цикл предназначен для выполнения одной и той же части процесса заданное число раз, после выполнения активируется элемент, подключенный к выходу из цикла.

В конфигурации цикла можно настроить количество итераций: от 1 до 10000.

Исходящие связи

Из элемента «Цикл» должны выходить ровно две связи к разным элементам:

  • Тело цикла — нижний порт; от него строится ветка, которая выполняется на каждой итерации.
  • Выход из цикла — правый порт; по этой ветке выполнение продолжается после последней итерации.
Использование

Элемент «Цикл» можно ставить после «Эксклюзивного шлюза» или «Параллельного шлюза», если нужно повторять выбранную ветку, либо использовать для схем, где один блок шагов должен пройти фиксированное число раз.

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

Примечание

Элемент Примечание предназначен для текстовых пояснений на схеме процесса: он не выполняется при запуске и не соединяется с другими элементами.

В конфигурации примечания можно задать:

  • Текст — содержимое с поддержкой markdown разметки.
  • Цвет фона — цвет заливки фона.
  • Цвет текста — цвет текста.

Примечание всегда позиционируется за остальными элементами и может использоваться для визуального выделения частей процесса. Также это единственный элемент, размер которого можно изменить.

Ошибка

Элемент «Ошибка» принудительно переводит запущенный процесс в статус Failed: при достижении этого элемента выполнение всех действий процесса прерывается.

От элемента не должно исходить связей к следующим элементам.

Параметры процесса

На вкладке Параметры настраиваются параметры процесса, которые могут использоваться во всех действиях процесса.

Конфигурация и использование параметров процесса описаны в разделе «Шаблонизация».

Хранилище процесса

Хранилище процесса — это хранилище формата ключ-значение для передачи данных между действиями в процессе.

Основные характеристики

  • Одно хранилище на запуск процесса — каждый запуск процесса имеет своё хранилище.
  • Плоские ключи — в хранилище используются только логические ключи (например projectId, deployJobId).
  • Запись только по правилам — в хранилище записывается только то, что задано в настройках действий, входящих в процесс (см. «Запись в хранилище процесса»). Если правил записи нет — в хранилище ничего не записывается.
  • Чтение через плейсхолдеры — в конфигурации действий (URL, заголовки, body и т. д.) можно использовать Go-шаблоны вида {{ .store.<ключ> }} (см. «Хранилище процесса»).

Как данные попадают в хранилище

  1. Действие в процессе завершилось успешно.
  2. У действия настроены правила «Запись в хранилище процесса».
  3. Для каждого правила выполняется Go-шаблон из поля Источник с данными ответа действия; полученная строка записывается в хранилище под ключом, указанным в поле Ключ в хранилище.

Если для одного и того же ключа пишут несколько действий (или одно и то же действие при повторном запуске), значение перезаписывается.

Поведение при отсутствующих данных

Если ключа нет в хранилище (действие ещё не выполнялось, не имело правил записи или запись не произошла), при выполнении шаблона {{ .store.<ключ> }} действие завершится с ошибкой.

Запуск процесса

Ручной запуск

  1. Перейдите к сущности, для которой нужно запустить процесс.
  2. В меню сущности выберите «Запустить процесс».
  3. Выберите нужный процесс из списка.
  4. Заполните параметры процесса.
  5. Нажмите «Запустить».

Параметры запуска

При запуске процесса доступны:

  • Общие параметры процесса — параметры, определенные в конфигурации процесса.
  • Параметры действий — параметры для каждого действия в процессе.
  • Переменные окружения — дополнительные переменные для выполнения.

Управление выполнением

Статусы процесса

Процесс может находиться в следующих статусах:

  • Создан — процесс создан, но не запущен.
  • Выполняется — процесс находится в процессе выполнения.
  • Приостановлен — выполнение процесса приостановлено.
  • Завершен — процесс успешно завершен.
  • Неудачно — процесс завершился с ошибкой.
  • Отменен — выполнение процесса было отменено.

Управление выполнением

Для активных процессов доступны следующие операции:

  • Приостановить — временно остановить выполнение.
  • Возобновить — продолжить выполнение после приостановки.
  • Остановить — полностью остановить выполнение.
  • Принудительный перезапуск — перезапустить процесс с начала.

Отслеживание состояния

В разделе «Запуски процессов» можно просмотреть:

  • Список всех запусков процессов для сущности.
  • Детальную информацию о каждом запуске.
  • Логи выполнения действий.
  • Статус каждого элемента процесса.

Лог процесса

Для каждого запуска процесса доступен подробный лог его выполнения. Кнопка просмотра лога находится на экране визуализации выполнения процесса (иконка лога рядом с Fullscreen, Zoom, Refresh).

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

Создание проекта с настройкой

  1. Начало — запуск процесса.
  2. Задача — создание проекта в GitLab.
  3. Эксклюзивный шлюз — проверка успешности создания.
  4. Задача (при успехе) — настройка переменных проекта.
  5. Задача (при ошибке) — отправка уведомления об ошибке.
  6. Конец — завершение процесса.

Развертывание приложения

  1. Начало — запуск процесса развертывания.
  2. Параллельный шлюз — разделение на ветки.
  3. Задача (ветка 1) — создание namespace в Kubernetes.
  4. Задача (ветка 2) — создание секретов в Vault.
  5. Параллельный шлюз — ожидание завершения обеих веток.
  6. Задача — развертывание приложения.
  7. Конец — завершение процесса.

Ограничения

  • Процессы не могут содержать более 100 элементов.
  • Максимальное время выполнения процесса — 24 часа.
  • Количество одновременных запусков процесса ограничено настройками системы.
  • Некоторые действия могут быть недоступны для использования в процессах.