对象触发器
对象触发器在实体对象的数据发生新增、修改、删除时,自动执行一段已编排的流程。
概述
对象触发器挂在实体对象上,监听该对象的数据变化,并按配置好的画布流程自动执行后续动作,例如更新关联数据、修改字段值、发送消息通知等。
入口:开发中心 → 应用 → 实体对象详情 → 触发器。一个触发器只服务一个实体对象,触发对象在创建后不可修改。
触发器支持的能力:
- 选择触发类型:数据新增时 / 数据修改时 / 数据删除时,可多选组合。
- 为「数据修改时」配置触发条件,只有满足条件的修改才触发。
- 使用画布编排触发后要执行的动作,可用节点见 触发器组件与运行机制。
- 查看最近执行结果与逐步执行日志。
异步执行
触发器为异步执行:数据变更落库后由后台消费执行,存在一定延迟,实际执行结果请以「执行日志」为准。触发链路存在跳数上限与熔断保护,用于防止级联循环与高频风暴。
配置项
| 配置项 | 说明 |
|---|---|
| 名称 | 触发器显示名称,必填 |
| 描述 | 触发器用途说明,可选 |
| 触发对象 | 该触发器监听的实体对象,创建后不可修改 |
| 触发类型 | 触发时机,可多选:数据新增时 / 数据修改时 / 数据删除时 |
| 触发条件 | 仅对「数据修改时」生效,配置哪些字段变化才触发 |
| 编排流程 | 触发后要执行的流程画布 |
| 发布状态 | 未发布 / 已发布,只有已发布的触发器才会执行 |
触发器列表
列表展示当前实体对象下的全部触发器:
| 列 | 说明 |
|---|---|
| 名称 | 点击可进入该触发器的编排页 |
| 触发类型 | 以标签展示,未配置时显示「未配置」 |
| 上次执行时间 | 最近一次真实执行的时间,从未执行为「未执行」 |
| 上次执行结果 | 成功 / 失败标 签,从未执行为「未执行」 |
| 上次执行耗时 | 最近一次执行的耗时(秒) |
| 状态 | 已发布 / 未发布 |
| 操作 | 查看详情、执行日志、编辑、删除 |
可执行的操作:
| 操作 | 说明 |
|---|---|
| 新增触发器 | 填写名称、描述后创建,创建成功后自动打开该触发器的编排页 |
| 编辑 | 修改名称与描述(触发类型与条件在编排页的「触发条件」弹窗中配置) |
| 查看详情 | 以抽屉展示触发器全部属性与已配置的触发条件 |
| 执行日志 | 打开执行日志抽屉,按触发器查看执行记录 |
| 删除 | 物理删除该触发器及其全部编排版本与执行日志,不可恢复 |
支持的对象范围
普通实体对象均可开启触发器。system 开头的系统对象默认不支持,仅白名单内(system.userinformation)允许开启,其余系统对象进入触发器页签时显示不支持提示。
下一步
- 触发器全局属性 - 名称、触发类型、发布状态等属性的类型与存储格式
- 触发条件 - 触发条件类型、组合规则与存储结构
- 触发器组件与运行机制 - 编排可用组件、发布校验与运行限制
- 实体对象 - 了解触发器所依附的实体对象
触发器属性明细
以下内容面向技术实现与 AI 检索,逐个说明触发器属性的类型、含义与存储。
触发器属性表
| 属性名 | 类型 | 含义 | 取值/存储值 |
|---|---|---|---|
_id | string(GUID) | 触发器主键 | 例:2b7d1f9a-... |
AppId | string(GUID) | 所属应用,创建时取自触发对象的所属应用 | 应用 _id |
MetaObjectId | string(GUID) | 触发对象(实体对象)Id,创建后不可修改 | 实体对象 _id |
Name | string | 触发器名称,必填 | 显示名称 |
Description | string | 触发器描述 | 纯文本,可为空 |
TriggerType | TriggerTypeEnum | 触发类型(Flags,可组合) | 见下方枚举表 |
TriggerCondition | string | 触发条件配置 JSON,仅「数据修改时」生效 | TriggerConditionConfig 序列化串,可为 null |
Version | string(GUID) | 当前发布版本 Id | MetaFlowVersion._id,未发布时指向默认版本 |
Status | PublishStatusEnum | 发布状态 | UnPublish=0 / Published=1 |
LastExecuteTime | datetime? | 最近一次真实执行时间(UTC) | 熔断跳过的执行不计入 |
LastExecuteStatus | ExecuteStatusEnum? | 最近一次执行结果 | Success=1 / Failure=2,未执行为 null |
LastConsumptionSeconds | double? | 最近一次执行耗时(秒) | 浮点秒数 |
Customized | bool | 是否被租户自定义过 | 非开发租户修改内置触发器后为 true |
CustomCreated | bool | 是否由租户自定义创建 | 客户租户新建时为 true |
通用实体属性
触发器继承自 AppEntityBase,同时具备以下通用属性:
| 属性名 | 类型 | 含义 |
|---|---|---|
IsDeleted | bool | 是否已删除(逻辑删除) |
CreatedBy / CreatedTime | string / datetime | 创建人 / 创建时间 |
ModifiedBy / ModifiedTime | string / datetime | 修改人 / 修改时间 |
Organization | string(GUID) | 所属组织 |
WorkflowDataId | string | 工作流数据 Id |
ApprovalStatus | string | 审批状态 |
Shared | string | 数据共享 |
存储示例
触发器数据存储在数据表 system_metatrigger 中:
{
"_id": "2b7d1f9a-6c34-4c8e-9a2b-1f0e5d7c3a91",
"AppId": "9f1c0b2e-2d3a-4e6f-9c11-0f7a5b8d2e10",
"MetaObjectId": "6a2f5c81-0b47-4d19-8e33-9c4b7a1d2f60",
"Name": "订单状态变更后同步",
"Description": "订单状态变为已提交时更新关联数据",
"TriggerType": 2,
"TriggerCondition": "{\"Relation\":1,\"Items\":[{\"FieldCode\":\"status\",\"Type\":1,\"BeforeValue\":\"draft\",\"AfterValue\":\"submitted\"}]}",
"Version": "c3d9a4b2-5e18-4f76-b0aa-2d6c8e1f4b73",
"Status": 1,
"LastExecuteTime": "2026-03-11T07:21:45",
"LastExecuteStatus": 1,
"LastConsumptionSeconds": 0.42,
"Customized": false,
"CustomCreated": true,
"IsDeleted": false,
"CreatedBy": "admin",
"CreatedTime": "2026-03-01T09:12:30"
}
相关接口
| 接口 | 说明 |
|---|---|
POST /api/MetaTrigger/GetList | 分页获取触发器列表(BizTable 契约,通常按 metaobjectid 过滤) |
POST /api/MetaTrigger/Create | 新建触发器 |
POST /api/MetaTrigger/Edit | 编辑触发器(名称、描述、触发类型、触发条件) |
GET /api/MetaTrigger/Get | 获取触发器详情 |
GET /api/MetaTrigger/GetWithVersions | 获取触发器及其全部编排版本 |
POST /api/MetaTrigger/SaveAndPublish | 保存并发布当前编排画布 |
POST /api/MetaTrigger/Cancel | 取消发布 |
POST /api/MetaTrigger/Delete | 删除触发器(连同版本与执行日志) |
POST /api/MetaTrigger/GetRunLogList | 分页获取执行日志(按 metatriggerid 过滤) |