Операция
Операция – набор предопределённых действий, которые могут выполняться по запросу пользователя или при смене состояния объекта.
Например, операции могут быть использованы для изменения состояния сущности, изменения параметров объекта или связи, получения данных от сущности (параметры, конфигурация, версия ПО и т.д.) или загрузки новой версии ПО на управляемый объект.
Создание и удаление операций
Операции для объектов и связей создаются в секции Операции. Также, в этой секции можно изменить, удалить и запустить существующие операции.
Также, можно задать операции по умолчанию для классов объектов в окне конфигурации системы.
Все новые объекты будут созданы с настроенными в классах операциями.
Создать операции для классов и сущностей также можно через REST API.
Выполнение операций
Запуск операции может быть вызван одним из следующих способов:
- По требованию пользователя. Пользователь может нажать кнопку запуска операции в секции Операции, контекстном меню объекта/связи или с помощью виджета Кнопка. Также, пользователям доступны REST запросы на выполнение операций объектов, связей, а также запрос для любой сущности;
- При смене состояний сущностей.
NOTE
Событие запуска и результат выполнения операции записываются в журнал с указанием времени и инициатора.
Использование переменных в операциях
В топике и сообщении операций типа MQTT-сообщение, а также в скрипте операций типа Выполнение программы/скрипта – Скрипт с указанным текстом можно использовать переменные, чтобы передавать в них некоторую системную информацию.
Система позволяет использовать следующие переменные:
{{id}}– идентификатор объекта, в котором запущена операция;{{properties.имя_свойства}}– значение свойства объекта, в котором запущена операция (в переменной указывается имя свойства);{{jobId}}– идентификатор запущенной операции;
Идентификатор уникален для каждого запуска – подробности в документации по REST API.
{{user.id}}– идентификатор пользователя, который запустил операцию;{{user.login}}– логин пользователя, который запустил операцию.
Запрос аргументов операции у пользователя
Перед выполнением операции у пользователя можно запросить аргументы, которые будут передаваться в скрипт. Для этого в скрипте нужно указать макрос {{ask.имя_аргумента}}.
Для операций подтипа "Программа/скрипт в ФС" и "Скрипт из репозитария" этот макрос можно добавлять только в поле "Аргументы". Для подтипа "Скрипт с указанным текстом" {{ask.имя_аргумента}} можно указывать как в списке "Аргументы", так и в теле скрипта.
NOTE
Запрос аргументов работает только для операций типа "Выполнение программы / скрипта". Для операций типа "MQTT-сообщение" макрос {{ask. имя_аргумента }} заменяется на пустую строку.
Например, операция, которая вызывает следующий скрипт, запросит у пользователя, который её запустил, переменные packets_count и ip_address:
bash
#!/bin/bash
ping -c {{ask.packets_count}} {{ask.ip_address}}При запуске этой операции, система покажет пользователю следующее окно, в котором он сможет ввести значения переменных packets_count и ip_address:


Также этот макрос можно использовать в поле "Аргументы":


Для того, чтобы пример выше мог работать с аргументами, его нужно модифицировать следующим образом:
bash
#!/bin/bash
ping -c "$1" "$2"