Skip to main content

触发条件

触发条件用于限定「数据修改时」哪些字段的变化才会触发流程。

概述​

触发条件在编排页顶部的「触发条件」弹窗中配置。弹窗内先勾选触发类型(可多选),再配置条件项列表。触发条件只对「数据修改时」生效:数据新增没有变更前快照,数据删除只带数据 Id,都不具备条件语义。

  • 只要勾选了「数据修改时」且未配置任何条件项,则任意字段的修改都会触发。
  • 触发条件与触发类型都未配置时,触发器不会被匹配执行。

触发类型​

触发类型是可组合的标志位,可同时勾选多个:

触发类型说明
数据新增时实体对象新增数据时触发
数据修改时实体对象数据被修改时触发,可进一步配置触发条件
数据删除时实体对象数据被删除时触发

未勾选任何类型时,列表的触发类型列显示「未配置」,且发布时会被服务端拒绝。

触发条件配置​

触发条件由一组条件项与它们的组合关系组成。

配置项说明
组合关系满足全部条件(And)/ 满足任一条件(Or)
字段条件所依据的字段,可选项来自触发对象的字段列表
条件类型值匹配指定值 / 值被设置 / 值被移除 / 值被修改
变更前 / 变更后仅「值匹配指定值」需要填写,分别对应变更前与变更后的期望值

通过「添加条件」按钮新增条件项,点击条件项右侧的删除按钮移除。同一个字段可以重复出现在多个条件项中。

条件类型​

条件类型说明
值匹配指定值变更前 / 变更后的值等于指定值;两个值都可选填,未填的一项不参与判断
值被设置由空变为有值时触发
值被移除由有值变为空值时触发
值被修改变更前后不一致时触发(不比较具体值)

「值被设置」「值被移除」「值被修改」三项不需要填写值,界面会给出对应说明。

值的填写方式​

「值匹配指定值」中的变更前 / 变更后的输入控件随所选字段的类型变化,值统一以字符串保存:

字段类型输入控件
布尔下拉选择「是 / 否」,存储为 true / false
日期时间日期时间选择器,存储为 YYYY-MM-DD HH:mm:ss
数字 / 货币数字输入框
其他类型文本输入框

组合关系​

组合关系说明
满足全部条件所有条件项都成立才触发
满足任一条件任一条件项成立即触发

组合关系是单层的:整份条件共用一个关系,不支持条件项的嵌套分组。

下一步​

触发条件存储结构​

以下内容面向技术实现与 AI 检索。触发条件以 JSON 字符串存入 MetaTrigger.TriggerCondition。

配置对象结构​

属性名类型含义取值/存储值
RelationConditionRelationEnum条件项之间的组合关系And=1 / Or=2
ItemsTriggerFieldCondition[]条件项列表同名字段可重复出现

条件项结构​

属性名类型含义取值/存储值
FieldCodestring字段编码触发对象下的字段 Code
TypeTriggerConditionTypeEnum条件类型见下方枚举
BeforeValuestring变更前期望值,仅 ValueEquals 使用字符串,可为空
AfterValuestring变更后期望值,仅 ValueEquals 使用字符串,可为空

枚举定义​

// TriggerConditionTypeEnum
ValueEquals = 1; // 值匹配指定值:变更前/后等于指定值
ValueSet = 2; // 值被设置:空 -> 有值
ValueRemoved = 3; // 值被移除:有值 -> 空
ValueModified = 4; // 值被修改:变更前后不一致

// ConditionRelationEnum
And = 1; // 满足全部条件
Or = 2; // 满足任一条件

存储示例​

以下条件表示:status 由 draft 变为 submitted,或 amount 发生了变化,且两者满足其一即触发。

{
"Relation": 2,
"Items": [
{ "FieldCode": "status", "Type": 1, "BeforeValue": "draft", "AfterValue": "submitted" },
{ "FieldCode": "amount", "Type": 4 }
]
}

存储到 system_metatrigger.TriggerCondition 时是上述 JSON 的字符串形式:

"{\"Relation\":2,\"Items\":[{\"FieldCode\":\"status\",\"Type\":1,\"BeforeValue\":\"draft\",\"AfterValue\":\"submitted\"},{\"FieldCode\":\"amount\",\"Type\":4}]}"

判定规则​

规则说明
空条件Items 为空或未配置时,任意修改都匹配
空值字段缺失、null、空白字符串视为「空」;数字 0 与布尔 false 是值,不算空
类型感知比较相等判断按字段类型归一化,例如数字 1 与 1.0 相等、布尔 true 与 1 相等、日期格式统一后比较
单层关系And 要求所有条件项成立,Or 要求任一条件项成立
仅修改生效仅当触发动作是 Update 时才评估条件
保存时机未勾选「数据修改时」时,服务端会把 TriggerCondition 置为 null