Параметры действий WorkFlow
Статья описывает настройки действий. Названия и коды действий приведены в Cправочнике действий Workflow. Чтобы открыть панель настройки, нажмите нужное действие на рабочей области шаблона миссии.

Универсальные параметры
Эти параметры есть у каждого действия на схеме, кроме действия Начало. Ниже по статье они не повторяются.
Название действия (Action name)
Подпись действия на схеме. Название может быть неуникальным. Задаёт, как действие подписано на рабочей области. На выполнение не влияет: два действия могут называться одинаково. Если параметр пустой, на схеме остаётся исходное название действия.
Код (Code)
Уникальный идентификатор для доступа к результату этого действия в других действиях. Например, pick_point_code → в другом действии: {{ $params.pick_point_code }}.
Параметр необязательный. Используйте латинские буквы без пробелов, цифры, знак подчеркивания.
Не путайте с кодом типа действия, который находится в блоке «Информация о действии (Action information)».

Информация о действии (Action information)
Сворачиваемый блок внизу панели. Значения подставляет система, вручную их не задают.
| Параметр | Что означает |
|---|---|
| ID | Идентификатор этого экземпляра на схеме. Его назначает редактор; по нему связаны стрелки. Не путать с параметром «Код (Code)» выше |
| Код (Code) | Системное имя действия, например SleepNodeWorkflow, #if, ReadRegister. Его нельзя сменить в этом блоке. При запуске миссии имя записывается в логи: по нему видно, какое действие выполнялось, если разбирать сбой |
| Тип (Type) | Как действие зарегистрировано в системе: обычно workflow или activity |
| Сервис (Service) | Какой сервис выполняет действие: core_service, modbus_adapter, opcua_adapter и другие |
| Позиция (Position) | Координаты X и Y на рабочей области. Меняются при перетаскивании, на логику сценария не влияют |
У «Начала» строки «Тип (Type)» и «Сервис (Service)» скрыты. Описание действия открывается по значку справки в заголовке панели, а не в этом блоке.

Общие параметры
Эти наборы параметров встречаются у нескольких действий. В описании конкретного действия на них дана ссылка, без повторной расшифровки.
Сущность или выражение
Параметры «Робот» (robot_id), «Точка» (point_id), «Паллетайзер» (palletizer_id), «Шаблон миссии» (template_id) заполняются так:
- Выберите объект из списка — в параметр попадёт его ID или код.
- Либо задайте выражение, если объект определяется при запуске, например
{{ $params.robot_id }}.

Тип устройства и ID
Действия Modbus и OPC UA всегда начинаются с двух параметров:
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Тип устройства (device_type) | Да | К какому реестру относится оборудование: паллетайзер (palletizers), зарядная станция (chargers) или устройство (devices) |
| ID устройства (device_id) | Да | Запись из выбранного реестра. Можно задать выражением |
Сначала укажите тип — список ID подстроится под него.
Поиск свободного ресурса и TTL
Действия «зарезервировать первого свободного…» ищут подходящий свободный объект и блокируют его для текущей миссии. Пока блокировка не снята, другие миссии этот объект не возьмут.
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Условие отбора (where_query) | Нет | Правило, каким должен быть свободный объект. Если пусто, берётся первый свободный |
| Параметры условия (where_params) | Нет | Значения для плейсхолдеров в условии. Удобно передать входные параметры миссии |
| Сортировка (sort) | Нет | Порядок кандидатов, если подходящих несколько |
| TTL | Нет | Как долго держать блокировку. Целое число, минимум 1. В схеме единица — наносекунды. Если не задать, действует ограничение сервиса |
После резервирования в той же миссии нужно действие освобождения — во всех ветках, где ресурс больше не нужен, включая ветку ошибки.
Flow
Начало
Своих параметров действия в панели нет. Настраиваются триггер шаблона и входные параметры.
Пауза
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Длительность (duration) | Да | Сколько ждать, прежде чем перейти к следующему действию. Задаётся интервалом в параметре с виджетом длительности |
Если
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Условие (condition) | Да | true / false или выражение, которое к ним сводится. От результата зависят ветви «if true» и «if false» |
Примеры: {{ $params.notify }}, сравнение заряда робота. Подробнее — в статье про Expression.
Ошибка
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Сообщение об ошибке (error) | Да | Текст, который увидят в журнале и карточке миссии. Можно задать выражением, чтобы подставить код точки или имя робота |
Действие прерывает сценарий. Используйте его, когда дальше выполнять действия нельзя.
Вернуть результат
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Результат (result) | Да | Объект с данными для следующих действий или вызывающего шаблона. Можно собрать параметры вручную или вернуть выражением |
Нужен, когда дочерний шаблон должен отдать значение родителю или сценарию нужен явный итог.
Системные
Выполнить шаблон миссии
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Шаблон миссии (template_id) | Да | Шаблон с триггером Child. Выберите из списка |
| Параметры (params) | Нет | Форма входных параметров выбранного шаблона. Состав параметров берётся из его схемы, а не из этого действия |
Сначала выберите шаблон — появятся его параметры запуска. Значения можно задать константами или выражениями из $params текущей миссии.
Сообщение в лог
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Сообщение (message) | Да | Текст записи. Можно вставить выражение, например серийный номер робота |
| Уровень (level) | Нет | Важность записи. Нужен, чтобы отличать отладку от ошибок в журнале |
Установить переменные
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Переменные (vars) | Нет | Список переменных сценария. Добавьте строки и для каждой укажите имя, тип и значение |
У элемента списка:
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Ключ (key) | Нет | Имя переменной, латиницей, без пробелов. По нему к значению обращаются следующие действия |
| Тип (type) | Нет | string, integer, number или boolean — должен совпадать со значением |
| Значение (value) | Нет | Константа выбранного типа или выражение |
Переменные живут в рамках запуска миссии и не заменяют объекты данных.
Выполнить JavaScript
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Вход (input) | Нет | Объект данных, который код получит как вход. Задайте ключами или выражением |
| Скрипт (script) | Да | JavaScript в редакторе кода. Обрабатывает вход и возвращает результат действия |
Используйте, когда ветвления «Если» недостаточно: расчёт, разбор ответа HTTP, сборка объекта.
Показать диалог
Сценарий ждёт ответа оператора.
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Значок (icon) | Нет | Иконка окна |
| Заголовок (title) | Да | Короткий заголовок, например «Подтвердите выгрузку» |
| Текст (body) | Нет | Пояснение под заголовком |
| Схема ввода (input_schema) | Нет | JSON Schema дополнительных параметров в диалоге, если оператор должен что-то ввести, а не только нажать кнопку |
| Кнопки (buttons) | Да | Хотя бы одна кнопка. У каждой — устойчивый id (его вернёт сценарий) и подпись label |
| Получатели (recipients) | Нет | Кто увидит диалог: пользователь или группа. Если пусто, действует правило сервиса по умолчанию |
Не ставьте диалог на путь, где оператора может не быть — миссия будет ждать.
HTTP-запрос
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Метод (method) | Да | GET, POST, PUT, PATCH, DELETE, HEAD или OPTIONS. Можно задать выражением |
| URL | Да | Полный адрес. Секретные ключи не вставляйте в URL, если их можно передать в заголовках |
| Заголовки (headers) | Нет | Пары имя → значение, например Content-Type |
| Тело (body) | Нет | Тело для POST/PUT/PATCH. Строка или выражение |
Ответ (код, заголовки, тело) доступен следующим действиям через код этого действия.
AVG роботы
Транспортный ордер
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Шаблон ордера (template_id) | Нет | Если в системе есть заготовки ордеров — выберите шаблон. Иначе оставьте пустым и задайте точки ниже |
| Срок (deadline) | Нет | Дата и время, к которому ордер должен быть выполнен |
| Таймаут назначения (dispatch_timeout) | Нет | Сколько ждать назначения робота, если робот не указан явно |
| Робот (robot_id) | Нет | Конкретный робот или выражение. Если пусто, робота назначает диспетчер |
| Точки (nodes) | Да | Маршрут. Хотя бы одна точка. Порядок строк — порядок проезда |
У каждой точки:
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Код узла (node_id) | Да | Точка на активной LIF-карте или выражение, например {{ $params.target_point }} |
| Ждать при ошибке (wait_on_error) | Нет | Если включено, при критической ошибке ордера сценарий ждёт обновления, а не сразу срывается |
| Действия на точке (actions) | Нет | Команды роботу на этой точке (тип из справочника действий узла, режим блокировки, параметры) |
Режим блокировки действия на точке:
NONE— можно ехать и выполнять другие действия;SINGLE— можно ехать, другие действия нельзя;SOFT— другие действия можно, ехать нельзя;HARD— в этот момент выполняется только это действие.
Мгновенное действие
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Описание (description) | Нет | Комментарий для журнала, на выполнение не влияет |
| Робот (robot_id) | Да | Кому отправить команду |
| Тип действия (action_type) | Да | Тип из справочника мгновенных действий или выражение с его кодом |
| Параметры (parameters) | Нет | Параметры выбранного типа. Появляются после выбора типа |
Это команда вне маршрута: не заменяет транспортный ордер.
Зарезервировать первого свободного робота
Параметры поиска и TTL — как в общей схеме. Дополнительно:
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Условие по состоянию (state_expr) | Нет | Проверка телеметрии VDA5050, например $state.batteryState.batteryCharge > 50. Робот с низким зарядом не будет выбран |
Освободите робота действием «Освободить робота», когда он больше не нужен этой миссии.
Освободить робота
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Робот (robot_id) | Да | Тот же робот, которого резервировали. Обычно выражение с результатом предыдущего действия |
Оборудование
Зарезервировать первый свободный паллетайзер
Параметры — поиск свободного ресурса и TTL. Условие отбирает паллетайзер, а не точку карты.
Зарезервировать паллетайзер
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Паллетайзер (palletizer_id) | Да | Конкретная запись из реестра или выражение |
| TTL | Нет | Как долго держать блокировку. См. общую схему TTL |
Освободить паллетайзер
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Паллетайзер (palletizer_id) | Да | Тот же паллетайзер, которого резервировали |
Карта
Действия группы «Карта» можно добавить на схему, даже если их нет в таблицах справочника действий WorkFlow. Смысл тот же, что у паллетайзера: занять точку, чтобы другая миссия её не взяла.
Зарезервировать первую свободную точку
Параметры — поиск свободного ресурса и TTL. Условие отбирает точку карты.
Зарезервировать точку
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Точка (point_id) | Да | Конкретная точка или выражение |
| TTL | Нет | Как долго держать блокировку |
Освободить точку
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Точка (point_id) | Да | Та же точка, которую резервировали |
Modbus
Сначала заполните тип устройства и ID. Имена регистров берите из карты регистров шаблона устройства, а не «с потолка».
Прочитать регистр
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| ID регистра (register_id) | Да | Идентификатор регистра в конфигурации устройства, например из настроек Modbus |
Прочитать группу регистров
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| ID группы регистров (register_group_id) | Да | Имя группы из конфигурации устройства, если регистры читаются пакетом |
Записать регистр
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| ID регистра (register_id) | Да | Регистр, в который пишете |
| Значение (value) | Да | Целое значение для записи |
Записать несколько регистров
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Значения регистров (register_values) | Да | Набор пар «ID регистра → значение». Нужен, когда за одно действие меняется несколько регистров |
Не записывайте в регистры, которые в карте устройства только для чтения.
OPC UA
Сначала заполните тип устройства и ID. «Узел» здесь — узел OPC UA, не действие workflow.
Прочитать узлы
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Узлы (nodes) | Да | Список NodeId, значения которых нужно прочитать. Берите идентификаторы из подключения устройства |
Записать узлы
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Узлы для записи (nodes_to_write) | Да | Список пар: NodeId и значение (целое или выражение) |
Вызвать метод OPC UA
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| ID объекта (object_id) | Да | NodeId родительского объекта, у которого вызывается метод |
| ID метода (method_id) | Да | NodeId метода |
| Входные аргументы (input_arguments) | Нет | Значения аргументов метода в порядке, который задаёт устройство |
Уведомления
Отправить email
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Кому (to) | Да | Адрес получателя |
| Тема (subject) | Да | Тема письма |
| Текст (body) | Да | Тело письма |
Проверьте, что почтовый шлюз WCS настроен. Иначе действие завершится ошибкой независимо от заполнения параметров.
Объекты данных
Объект данных — именованный JSON в разделе «Объекты данных». Он сохраняется между запусками миссий, в отличие от $params.
Прочитать объект данных
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Объект данных (data_object_id) | Да | Запись из реестра. Выберите из списка или задайте ID выражением |
Прочитанное значение доступно следующим действиям через код этого действия.
Записать объект данных
| Параметр | Обязательный | Как заполнить |
|---|---|---|
| Объект данных (data_object_id) | Да | Какой объект обновить |
| Данные (data) | Да | JSON, который будет записан. Можно собрать параметрами или выражением. Запись заменяет содержимое объекта |
Не пишите в объект, который в этот момент читают параллельные миссии, если нет отдельного соглашения о блокировке.