跳到主要内容

7.8 配置动作

动作区段(分析表单第 5 段)让分析在每次触发并满足指定条件时,自动执行预定义的动作。动作通过引用动作模板进行配置——模板定义"做什么",分析侧的动作规则定义"何时做"以及对本分析生效的局部参数调整。

典型场景:一个配电变压器元素的分析每 5 分钟输出一次平均电压 avg_voltage。希望当 avg_voltage 超过 235 时,自动向飞书运维群发送一条告警通知。只需在基础库中创建一个通知类动作模板,再在分析第 5 段添加一条动作规则引用该模板,并把触发条件设为 attributes['avg_voltage'] > 235 即可。

备注

本版本已实现通知类型动作的完整配置与执行逻辑,本章介绍通知类型动作的配置。

7.8.1 动作规则

动作区段由一条或多条动作规则组成。点击添加动作新增一条规则,每条规则包含两个必填部分:

部分说明
触发条件(必填)判断本次输出是否执行该动作的条件表达式。表达式不允许为空。
动作模板(必填)引用的动作模板。选定模板后,模板的动作类型、描述只读展示,并展开该模板的可编辑配置。

可为同一分析添加多条动作规则,各规则相互独立、依次评估。点击规则上的删除移除该规则。

7.8.2 触发条件

触发条件使用 attributes['属性名'] 语法引用分析的输出属性,结果须为布尔值。点击条件输入框打开条件编辑器,通过选择输出属性来构造表达式。

表达式示例含义
attributes['avg_voltage'] > 235平均电压超过 235 时执行动作
attributes['max_current'] > 50 && attributes['avg_voltage'] > 220两个条件同时满足时执行

条件为必填,且采用保守(fail-closed)策略:只有当条件表达式明确求值为真时才执行动作。以下情况均不执行动作:

  • 条件表达式留空;
  • 表达式引用的属性取不到最新值;
  • 表达式存在语法错误或求值结果非布尔值。
备注

触发条件中的属性引用使用 attributes['属性名'] 语法,与通知标题 / 内容中的 {属性名} 占位符语法不同(见 13.4.3)。前者用于条件判断,后者用于文本插值。

7.8.3 通知配置

引用一个通知类型的动作模板后,规则会展开以下可编辑字段。这些字段以模板的预设值为初值,在此处的修改仅作用于当前分析,不会回写模板

字段说明
联系方式发送通知所使用的联系方式,可在此重新选择。模板未指定联系方式时,默认选中列表中的第一个。
最小通知间隔(分钟)同一分析对同一联系方式连续两次发送通知的最小间隔,可在此调整。
通知标题通知标题,可在此编辑。支持占位符,留空时使用默认标题。
通知内容通知正文,可在此编辑。支持占位符。

通知标题与内容的占位符语法及默认文本,详见动作模板 - 通知内容的占位符

7.8.4 快照与配置覆盖

保存分析时,系统会按所引用的模板 ID 读取模板,并将模板的名称、动作类型、描述、类别作为快照保存到动作规则中;这些基础信息以模板当前值为准回填,不信任表单提交值。各字段的局部调整(如重选联系方式、修改通知内容)作为配置覆盖随分析一同保存。

因此:

  • 重新打开分析时,动作规则直接回显已保存的快照与配置覆盖,不依赖模板的当前状态——即使模板随后被修改,已保存分析的运行参数保持不变。
  • 即使引用的模板之后被删除,分析仍能依据已保存的快照与配置覆盖回显并运行。

7.8.5 运行时执行

分析每次触发并产生输出后,系统按动作规则依次执行动作。对每条动作规则:

  1. 求值触发条件。7.8.2 的规则评估条件,仅当结果为真时继续;否则跳过该规则。
  2. 节流判定。 对通知动作,以"分析 + 动作模板 + 联系方式"为键检查上次发送时间。距上次发送不足最小通知间隔时,跳过本次发送。
  3. 渲染并发送。 对通知标题和内容做占位符替换(填入元素名称、元素路径、分析名称及输出属性值),再通过所选联系方式对应的通道发送通知。

失败隔离。 每条动作独立执行,单条动作执行失败(如联系方式不存在、通道不支持)只记录日志,不影响同一分析的其他动作,也不影响分析本身的计算与输出写入。

7.8.6 向后兼容

场景行为
旧分析没有动作配置不执行任何动作,行为与之前一致。
触发条件求值不为真跳过该动作(保守策略,见 7.8.2)。
引用的模板已被删除依据已保存的快照与配置覆盖回显并运行。
某条动作执行异常记录日志并跳过,不影响其余动作与分析主流程。