Skip to Content

Параметры действий 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) заполняются так:

  1. Выберите объект из списка — в параметр попадёт его ID или код.
  2. Либо задайте выражение, если объект определяется при запуске, например {{ $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, который будет записан. Можно собрать параметрами или выражением. Запись заменяет содержимое объекта

Не пишите в объект, который в этот момент читают параллельные миссии, если нет отдельного соглашения о блокировке.