Режим Expression (Выражения)
Режим Expression используется в параметрах действий, которые поддерживают динамические значения. Вместо фиксированного текста или числа поле вычисляется во время выполнения миссии из входных параметров, состояния робота и результатов предыдущих действий.
Expression не следует путать с действием «Выполнить JavaScript». Expression вычисляет отдельное значение поля, а «Выполнить JavaScript» выполняет самостоятельный блок кода.
Открытие редактора
Если поле поддерживает два режима, рядом с ним доступно переключение между обычным значением и «Выражение».
- Выберите «Выражение».
- Откройте редактор выражений.

- Введите выражение с клавиатуры или перетащите переменную из левой панели.

- Проверьте, что нет ошибок.

- Закройте редактор и сохраните workflow.
В данных шаблона выражение хранится внутри {{ }}. Редактор добавляет внешние скобки автоматически.
{{$params.target_point}}Доступные данные
| Переменная | Содержимое |
|---|---|
$params | Входные параметры из настроек действия «Начало» |
$input | Входные данные текущего действия |
$robot | Данные связанного с миссией робота |
$nodes | Результаты ранее выполненных действий |
Поля $params формируются по JSON Schema входных параметров. Результат действия доступен по его идентификатору или коду:
$nodes.read_order.resultЛевая панель показывает доступные подстановки. Неизвестные переменные выделяются красным и не создаются автоматически.
Базовый синтаксис
Поддерживаются:
- строки, числа,
true,falseиnil; - массивы
[1, 2, 3]и объекты{name: "AGV-01"}; - арифметика
+,-,*,/,%; - сравнения
==,!=,<,>,<=,>=; - логические операции
and,or,notлибо&&,||,!; - условный оператор
condition ? value_if_true : value_if_false; - доступ к полям и элементам через
.и[]; - проверка вхождения
in; - значение по умолчанию
??; - безопасный доступ
?..
Примеры
$params.target_point$robot.battery < 20$params.priority ?? 5"Робот " + $robot.name + " направлен в точку " + $params.target_point$nodes.read_ready.result == 1Функции
Редактор предлагает автодополнение для доступных функций:
- строки:
trim,upper,lower,split,replace,hasPrefix,hasSuffix; - массивы:
all,any,map,filter,find,count,sum,sort; - числа:
min,max,abs,ceil,floor,round; - даты и интервалы:
now,date,duration; - преобразования:
int,float,string,toJSON,fromJSON,toBase64; - битовые операции:
bitand,bitor,bitxor,bitnot,bitshl,bitshr; - служебные:
len,get,type.
Пример фильтрации:
filter($input.robots, #.battery < 20)Проверка времени:
now() - $input.last_seen > duration("5m")Проверка бита состояния:
bitand($input.status_word, 0b100) != 0Использование с действием «Если»
В параметре условия действия «Если» выражение должно возвращать true или false. Действие имеет отдельные выходы для истинного результата, ложного результата и ошибки вычисления.
$params.priority >= 5 and $robot.battery > 30Если поле может отсутствовать:
($input.order?.priority ?? 0) >= 5Диагностика
Если выражение не сохраняется или завершается ошибкой:
- Проверьте парность кавычек и скобок.
- Убедитесь, что путь начинается с
$params,$input,$robotили$nodes. - Проверьте название параметра в схеме действия «Начало» и код предыдущего действия.
- Убедитесь, что выражение возвращает тип, ожидаемый полем.
- Для действия «Если» проверьте, что результат является логическим.
- Для сложной последовательной обработки используйте действие «Выполнить JavaScript».