触发器
云触发器提供事件驱动(云触发器事件)功能,用以实例化适当的动作(云触发器动作)。 规则在动作中定义,用以响应实时事件。 事件中定义的条件会主动侦听实时数据,当满足事件中定义的阈值时,将执行触发器。 触发器包含以下组成部分:
- 云触发器事件和事件变量。
- 云触发器动作和动作变量。
- 动作之间的路线。
- 成功及失败动作。
默认情况下,每秒允许 100 个触发器。只有超级运维管理员才有权更改该设置。此外,触发器的动作数不得超过 1000 个。
云触发器事件
云触发器事件是执行触发器的条件。云触发器可以访问一组统称为 触发器变量的变量。触发器可用的首组变量为事件变量。这些变量因事件而异。有关事件和事件变量的更多信息,请参见云触发器事件。
云触发器动作
云触发器动作是指令序列,可检查信息(例如,math.if 动作),获取数据(例如,property.current 动作),使用值(例如,math.expr 动作),存储信息(例如,thing.attr.set 动作),以及执行命令(例如,method.exec 动作)。每个动作都可访问之前 动作(操作)中可用的 触发器变量,包括 事件变量。触发器变量
触发器变量表示执行触发器过程中所累积的元数据。 可以是事件发生时生成的事件变量,或是完成某些动作后生成的动作变量。 上述变量均可作为后续动作的输入,从而实现触发器内数据的复杂操作。
事件变量
Event variables(事件变量)格式为 $(event.NNN),其中 NNN 为特定变量名称。 事件变量表示来自特定事件的时间点元数据,该事件发生后执行触发器。 事件变量包括截止到触发器执行时的当前数据。
动作变量
Action variables(动作变量)格式为 $(action.X.NNN),其中 X 为代表变量来源动作的数字(起始为零),NNN 为特定变量名称。有关动作和动作变量的更多信息,请参见云触发器操作。 动作查询来自连接或物的数据时,所查询的数据为存储在数据库中的数据,但同一触发器中发布的新数据不可用。
格式变量
指定变量时,可以使用格式语法以特殊方式呈现值,例如,限制小数位位数。 要使用该功能时,指定变量时,要添加":"(冒号)和格式字符串。 例如,如果查询属性的当前值,将输出 $(action.0.value) 用以表示特定属性的当前值。 您可以指定 $(action.0.value:%.2f),用以将属性数据精度限制在 2 位小数。
以下为支持格式的表:
格式 | 数据类型 | 描述 |
---|---|---|
%d | 整数 | 十进制 |
%o | 整数 | 八进制 |
%x | 整数 | 十六进制(小写) |
%X | 整数 | 十六进制(大写) |
%f | 浮点型 | 小数点形式 (123.45) |
%e | 浮点型 | 指数形式 |
%U | 字符串 | URL 编码变量 |
%ms | 字符串 | 保留毫秒。默认情况下,毫秒被截断 |
%som | 字符串 | 修改为返回当月初的日期,其中日期截断为当月第一天,时间截断为午夜。 |
%len | 整数 | 用作字符串(或数组)变量修饰符以返回字符串(或数组)的长度。 |
对于浮点值,以下为支持的精确值表:
格式 | 描述 |
---|---|
%f | 默认位宽,默认精确度 |
%9f | 位宽为 9,默认精确度 |
%.2f | 默认位宽,精确度为 2 |
%9.2f | 位宽为 9,精确度为 2 |
%9. | 位宽为 9,精确度为 0 |
途径
基于二进制的成功和失败双路径以及通过判断动作(例如 math.if 动作)。这使单个触发器能够根据所获取信息作出决策,并根据动作结果执行不同动作。根据当前动作结果执行的下一个动作称为路径。事件具有引导至执行首个动作的单一路径。大部分动作仅具备成功和失败路径选项。某些动作具备三个途径:失败、True 和 False。
成功及失败动作
虽然失败路径通常会导致失败动作,但有时由于未执行某动作,失败路径被引导至修正或可接受的备用动作,这将使触发器以成功动作结束。
如果同一时间发布多个值,则发布的关于物的数据要在一段时间后才能在数据库中成为可用数据。例如,对属性 #1 调用 property.change 事件,然后读取当前值属性 #2,如果该值还未存储在数据库中,可能会产生旧的属性。
触发器报告生成已执行的触发器事件报告,其中包含执行的准确时间、周期和状态。有关触发器报告的更多信息,请参见查看触发器报告。
本部分包含下列页面: