跳到主要内容

触发器组件与运行机制

触发器触发后执行的编排流程可用的组件,以及运行时的校验与限制。

概述​

触发器的编排画布与平台接口画布使用同一套流程引擎和组件,但只开放一部分节点:触发器用于自动执行,不允许包含脚本、调试、异步、发起审批等功能节点。

编排入口:在触发器编排页从左侧组件面板拖拽节点到画布,连线后点击「保存并发布」生效。画布固定包含唯一的「触发开始」入口与「结束」节点。每个节点的属性配置方式与平台接口一致,可参照对应组件文档。

配置项​

配置项说明
组件面板按「基础组件 / 数据组件 / 流程控制 / 通知」分类展示可用节点
画布节点拖拽添加,连线编排执行顺序
节点属性选中节点后在右侧属性区配置
节点启用 / 停用节点可被停用,运行到该节点时被跳过
触发条件编排页顶部的全局配置,见 触发条件
保存并发布保存画布并发布;每次生成一个新版本,可切换查看历史版本
取消发布取消后触发器不再执行,编排保留
执行日志查看每次执行的逐节点明细

可用组件​

触发器编排允许以下组件,各类节点的详细属性请点击进入平台接口对应组件文档。

基础组件​

节点说明文档
触发开始触发链路的唯一入口,声明流程从触发器开始见下方「触发开始节点」
结束流程终点结束组件

数据组件​

节点说明文档
字段赋值临时改变节点内字段值,不持久化数据字段赋值组件
数据写入向实体对象创建新记录数据写入组件
数据更新更新实体对象的数据数据更新组件
逻辑删除逻辑删除数据(保留记录)逻辑删除组件
真删除物理删除数据真删除组件
查询集合按条件查询记录集合查询集合组件
查询单条按条件查询单条记录查询单条组件
查询数量查询满足条件的记录数查询Count组件

流程控制​

节点说明文档
条件分支按条件进入不同分支条件组件

通知​

节点说明文档
消息通知发送站内消息、待办等通知消息通知组件
不在白名单内的节点

调试、异步任务、C# 脚本、JSON 脚本、服务 API 调用、发起审批流、自定义响应等高级节点不允许出现在触发器画布中,服务端在发布时会拒绝。

触发开始节点​

「触发开始」是触发链路的唯一入口,元数据类型为 TriggerStart:

属性说明
节点标题触发开始
副标题逻辑开始
属性配置与平台接口「开始组件」一致,无可编辑的额外属性

「触发开始」与「结束」属于流程引擎的固定节点:不可被停用,也不能插入到已有连线中间。触发器画布必须且只能有一个「触发开始」。

执行日志​

执行日志入口在编排页工具栏与列表页操作列。日志按触发器分页展示,展开任意一条可查看该次执行的逐节点明细时间线。

列说明
状态成功 / 失败
触发动作Add / Update / Delete
数据 Id被变更数据的 Id
触发跳数该次执行的触发深度
耗时本次执行耗时(秒)
触发时间本次执行开始时间

逐节点明细按节点执行顺序展示(最新在上),每个节点记录节点 Id、节点类型、状态与耗时;失败节点区分「自身失败」与「下游节点失败」,整体失败信息展示在明细上方。

运行机制与限制​

机制说明
异步执行数据变更落库、审计行落库后,由后台消费服务匹配并执行触发器
触发匹配按触发对象与触发动作匹配 Status = Published 的触发器,再评估触发条件
跳数上限触发深度上限为 2:允许一级级联,达到上限的变更不再触发,用于防止级联循环
熔断保护同一触发器 + 同一数据 Id 在 60 秒内执行达到 5 次即熔断,冷却 10 分钟后自动恢复
熔断表现熔断期间执行被静默跳过,不写执行日志、不更新上次执行信息;首次熔断会写入一条失败日志
载荷注入执行时向流程注入数据变更载荷(数据 Id、对象 Id / 编码、动作、变更前 / 后快照、跳数)
权限旁路触发器执行时跳过操作权限与 MOU 数据权限校验

下一步​

编排与执行的技术结构​

以下内容面向技术实现与 AI 检索。

节点类型标识​

流程节点通过 type 标识,触发器允许的类型如下:

节点类型(type)界面名称分类
TriggerStart触发开始基础组件
End结束基础组件
DbBatchUpdateField字段赋值数据组件
DbInsert数据写入数据组件
DbUpdate数据更新数据组件
DbLogicDelete逻辑删除数据组件
DbDelete真删除数据组件
DbQueryList查询集合数据组件
DbQuerySingle查询单条数据组件
DbQueryCount查询数量数据组件
FlowCondition条件分支流程控制
Notification消息通知通知

固定节点类型(不可停用、不可插入到连线中间):TriggerStart、End。

触发载荷结构​

执行时注入流程的载荷 TriggerPayload:

属性名类型含义
DataChangeLogIdstring落库的变更审计日志 Id,未审计时为空
MetaObjectCodestring触发对象编码
MetaObjectIdstring触发对象 Id
Actionstring触发动作:Add / Update / Delete
BeforeObjectData变更前快照,可能为 null
AfterObjectData变更后快照,可能为 null
DataIdstring被变更数据 Id
TriggerDepthint本次跳数,1 为直接业务写入,2 为一级级联

执行日志结构​

执行日志实体 MetaTriggerRunLog(表 system_metatriggerrunlog):

属性名类型含义
MetaTriggerIdstring触发器 Id
VersionIdstring执行时使用的编排版本 Id
DataChangeLogIdstring变更审计日志 Id
MetaObjectCodestring触发对象编码(冗余,便于列表展示与过滤)
Actionstring触发动作
TriggerDepthint触发跳数
DataIdstring被变更数据 Id
NodeDetailsstring逐节点执行明细 JSON 数组
StartTime / EndTimedatetime开始 / 结束时间(UTC)
ConsumptionSecondsdouble执行耗时(秒)
StatusExecuteStatusEnum执行结果:Success=1 / Failure=2
ErrorMessagestring失败时的错误信息

NodeDetails 明细项结构 MetaTriggerRunNodeDetail:

属性名类型含义
NodeIdstring节点 Id
Typestring节点类型
Statusnumber节点执行状态:1 成功,其余为失败
Millisecondsnumber节点耗时(毫秒)
Errorstring节点错误信息
IsPropagatedbool失败是否由下游节点传播而来(嵌套执行下祖先节点会重新抛出下游异常)

运行限制常量​

// 触发深度上限:允许一级级联,循环链在深度上限处被硬性截断
MaxTriggerDepth = 2;
// 熔断检测窗口(秒):窗口内同一 (MetaTriggerId, DataId) 执行达到阈值即熔断
TriggerBreakerWindowSeconds = 60;
// 熔断阈值:检测窗口内同一 (MetaTriggerId, DataId) 的最大执行次数
TriggerBreakerThreshold = 5;
// 熔断冷却时长(分钟):熔断标记缓存 TTL,到期自动恢复
TriggerBreakerSuspendMinutes = 10;

发布校验​

发布编排(SaveAndPublish)时会校验:

  1. 画布中每个节点都必须属于触发器允许的组件基类(白名单);
  2. 画布必须存在唯一的「触发开始」入口;
  3. 触发器至少勾选一个触发类型;
  4. 未勾选「数据修改时」时触发条件必须为空。

校验不通过时发布失败并返回对应错误提示。