Вызов транзакций используется для вызова одной или нескольких команд кластера на целевом узле. Она похожа на удаленные вызовы процедур, выполняемые для команды, определенной в кластере.
Как и транзакции записи, транзакции вызова поддерживают транзакции с ограничением по времени и без него. Дополнительную информацию о транзакциях с ограничением по времени можно найти в разделе Действия с ограничением по времени и без него.
Untimed Invoke Transaction
Invoke Request Action
Направление: инициатор -> цель
Как и в случае с действиями Read Request Action и Write Request Action, в этом действии инициатор предоставляет целевому устройству:
- Запросы вызова – список путей к командам кластера, а также необязательные аргументы к командам, которые называются полями команд.
- Запрос с временной задержкой – флаг, указывающий, является ли это действие частью транзакции с временной задержкой.
- Suppress Response (Подавить ответ) – флаг, указывающий, следует ли подавлять действие Invoke Response Action (Вызвать действие ответа).
- Идентификатор взаимодействия – целое число, используемое для сопоставления действия "Запрос вызова" с действием "Ответ вызова".
Вызов действия "Ответ"
Направление: Цель -> Инициатор
После того как целевое устройство получит действие Invoke Request Action, оно завершит транзакцию с помощью действия Invoke Response Action, которое содержит:
- Ответы на вызов – список ответов на команды или статусов для каждого отправленного запроса на вызов.
- Идентификатор взаимодействия – целое число, используемое для сопоставления действия Invoke Response Action с действием Invoke Request Action.
Ограничения на вызов без указания времени
Действие Invoke Request Action может быть групповой передачей, но в этом случае должен быть установлен флаг Suppress Response. Это сделано для того, чтобы сеть не была перегружена одновременными ответами от всех участников группы.
Чтобы включить такое поведение, путь, используемый в списке Invoke Requests, может содержать группы или подстановочные знаки, но только в поле Endpoint. Кроме того, если действие является групповой передачей, эта транзакция завершается без ответа.
Транзакции с временными метками
Как и транзакции с записью по времени, транзакции с вызовом по времени начинаются с действия "Запрос по времени".
Действие по истечении времени запроса
Направление: инициатор -> цель
Инициатор начинает транзакцию, отправляя это действие, которое содержит:
- Время ожидания – сколько миллисекунд транзакция может оставаться открытой. В течение этого периода следующее действие, отправленное инициатором, будет считаться действительным.
После получения действия "Запрос с временной задержкой" целевое устройство должно подтвердить его получение с помощью действия "Ответ о статусе". Когда инициатор получит действие "Ответ о статусе" без ошибок, он отправит действие "Запрос вызова".
Invoke Request Action
То же, что и описанное выше действие Invoke Request Action.
Вызов действия "Ответ"
То же, что и описанное выше действие Invoke Response Action.
Ограничения на вызов по времени
Все команды invoke можно вызывать в рамках взаимодействия с временными ограничениями. Действие "Запрос с временной задержкой", действие "Вызов запроса" и действие "Вызов ответа" предназначены только для Unicast, поэтому их нельзя использовать в качестве групповой передачи в транзакциях с вызовом по расписанию.
Действие Invoke Request Action поддерживает использование путей с группами, а также подстановочных знаков, но действие Invoke Response Action не поддерживает использование подстановочных знаков.