调用事务

Invoke 事务用于在目标节点上调用一个或多个集群命令。这类似于对集群中定义的命令进行的远程过程调用。

与写入事务类似,调用事务支持有时间限制和无时间限制的事务。如需详细了解定时交易,请参阅定时和非定时操作部分。

未计时的调用事务

无时间戳调用事务的操作序列
图 1:未限时的调用事务

调用请求操作

方向:发起方 -> 目标

与读取请求操作和写入请求操作类似,在此操作中,发起方会向目标提供:

  • 调用请求:集群命令的路径列表,以及命令的可选参数(称为命令字段)。
  • 定时请求:一个标志,用于指示此操作是否属于定时调用事务的一部分。
  • 抑制响应:一个标志,用于指示是否应抑制“调用响应”操作。
  • 互动 ID:一个整数,用于将“Invoke Request”Action 与“Invoke Response”Action 进行匹配。

调用响应操作

方向:目标 -> 发起方

目标设备收到 Invoke Request Action 后,将使用包含以下内容的 Invoke Response Action 完成交易:

  • 调用响应:发送的每个调用请求的命令响应或状态的列表。
  • 互动 ID:一个整数,用于将“调用响应”操作与“调用请求”操作进行匹配。

无限时调用限制

调用请求操作可以是群发,但在这种情况下,必须设置抑制响应标志。原因是,否则网络可能会被来自群组中每个成员的同步响应所淹没。

如需启用此行为,调用请求列表中使用的路径可以包含组,也可以包含通配符,但仅限于“端点”字段。此外,如果 Action 是群发,此事务会终止且不返回任何响应。

定时调用事务

与定时写入事务类似,定时调用事务也以定时请求操作开头。

有时间限制的调用事务的操作序列
图 2:定时调用事务

定时请求操作

方向:发起方 -> 目标

发起者发送此 Action 来启动事务,其中包含:

  • 超时:此事务可以保持打开状态的毫秒数。在此期间,发起者发送的下一个操作将被视为有效。

收到定时请求操作后,目标设备必须使用状态响应操作确认定时请求操作。发起方收到报告无错误的状态响应操作后,便会发送调用请求操作。

调用请求操作

与前面所述的调用请求操作相同。

调用响应操作

与之前介绍的调用响应操作相同。

有时间限制的调用限制

您可以对定时互动调用所有调用命令。定时请求操作、调用请求操作和调用响应操作仅适用于 Unicast,因此无法在定时调用事务中用作群播。

“调用请求”操作支持使用包含组的路径以及通配符,但“调用响应”操作不支持使用通配符。