事件处理
数据模型的「事件处理」功能相当于数据库触发器(Trigger)能力,可以基于数据的增删改查操作,自动触发审批流程,实现业务流程的自动化和规范化管理。
审批流 ≠ 只能做审批
虽然名为"审批流",但它实际上是一个完整的业务流程编排平台,可以:
- ✅ 审批场景:订单审批、员工入职审批等需要人工决策的场景
- ✅ 自动化场景:字段自动拼接、数据联动更新、自动发送通知等无需人工干预的场景
- ✅ 混合场景:先自动处理数据,再提交审批
本质:事件处理 + 审批流 = 数据库触发器 + 工作流引擎
核心特性
| 特性 | 说明 | 价值 |
|---|---|---|
| 自动触发 | 数据变化时自动触发流程 | 减少手动操作,提升效率 |
| 条件判断 | 支持前置条件表达式 | 灵活控制触发时机 |
| 流程集成 | 无缝对接审批流能力 | 快速实现业务自动化 |
| 多种时机 | 支持 6 种触发时机 | 覆盖完整业务场景 |
| 资源调用 | 审批流中可调用云函数、数据库等 | 实现复杂业务逻辑 |
前置条件
使用事件处理功能前,请确保:
- 已开通云开发企业版或以上套餐(审批流功能要求)
- 已创建数据模型和审批流程
- 了解审批流基本概念,参考 审批流使用指引
触发时机
「事件处理」支持 6 种数据操作的触发时机,可以根据业务需求灵活选择:
| 触发时机 | 触发场景 | 适用案例 |
|---|---|---|
| 新建后 | 创建单条记录后触发 | 新订单审批、字段自动计算、自动生成编号、发送通知 |
| 更新后 | 更新单条记录后触发 | 字段自动拼接、数据联动更新、状态变更审批、日志记录 |
| 删除后 | 删除单条记录后触发 | 数据删除审批、级联删除关联数据、资源回收 |
| 批量新增后 | 批量创建多条记录后触发 | 批量导入后处理、批量初始化、批量审批 |
| 批量更新后 | 批量更新多条记录后触发 | 批量数据同步、批量调价审批、批量状态变更 |
| 批量删除后 | 批量删除多条记录后触发 | 批量清理审批、批量归档、批量下架 |
⚠️ 注意:触发时机在数据操作完成后执行,此时数据已写入数据库
配置步骤
第一步:创建事件处理
在数据模型的事件处理页面,点击「新建事件处理」按钮:
- 访问 云开发平台/数据模型
- 选择目标数据模型
- 进入「事件处理」标签页
- 点击「新建事件处理」按钮
第二步:配置前置条件表达式
「前置条件表达式」用于判断是否需要执行该事件处理,如都需要触发,则无需配置表达式
- 返回值要求:必须返回布尔值(
true或false) - 返回
true:满足条件,触发审批流 - 返回
false:不满足条件,跳过执行
第三步:选择流程设置入参
「流程入参」用于传递数据到审批流程中,审批流程可以根据这些数据进行审批决策和展示。前往 云开发平台/审批流 创建审批流
审批流的能力边界
审批流不仅仅是简单的审批功能,它是一个完整的业务流程编排平台,支持:
- 审批决策:多级审批、条件审批、会签/或签等
- 业务逻辑:调用云函数执行复杂计算、数据处理
- 数据操作:读写数据库、更新数据模型
- 外部集成:调用第三方 API、发送通知消息
- 流程控制:条件分支、循环、并行执行等
这意味着事件处理触发的审批流,可以实现从简单审批到复杂业务自动化的各种场景。
入参选项
| 入参选项 | 说明 | 使用场景 |
|---|---|---|
| 新增后值 | 传递当前数据记录的所有字段 | 审批流需要查看和处理完整的数据信息 |
| 无 | 不传递任何数据 | 审批流不需要数据,仅作为通知或简单审批 |
使用示例
示例 1:订单金额审批
业务场景:订单金额 amount 超过 5000 元时,自动触发审批流程
配置方案:
| 配置项 | 配置值 |
|---|---|
| 触发时机 | 新建后 |
| 前置条件表达式 | #amount > 5000 |
| 审批流程 | 大额订单审批流程 |
| 流程入参 | 新增后值 |
效果:
- 创建金额 ≤ 5000 的订单:不触发审批,直接创建成功
- 创建金额 > 5000 的订单:自动触发审批流,等待审批完成
示例 2:订单状态变更审批
业务场景:订单状态从"待支付"变更为"已完成"时,触发审批流程
配置方案:
| 配置项 | 配置值 |
|---|---|
| 触发时机 | 更新后 |
| 前置条件表达式 | oldData.status === '待支付' && data.status === '已完成' |
| 审批流程 | 订单完成审批流程 |
| 流程入参 | 新增后值 |
效果:
- 只有当订单状态从"待支付"变更为"已完成"时才触发审批
- 其他状态变更不触发审批
示例 3:字段自动拼接(自动化场景)
业务场景:字段C(文本)变动时,自动将字段B(自动编号)和字段C用破折号拼接,并更新到字段A
配置方案:
| 配置项 | 配置值 |
|---|---|
| 触发时机 | 更新后 |
| 前置条件表达式 | 无 |
| 审批流程 | 字段自动拼接流程 |
| 流程入参 | 新增后值 |
审批流配置(无需审批节点,直接调用数据模型):
- 流程起始节点:接收事件处理传入的数据
- 输入变量为对象,选择对应的数据模型,命名为
data
- 输入变量为对象,选择对应的数据模型,命名为
- 表达式节点:对data进行表达式计算,命名为
newData- 表达式:
#data.fieldB + "-" + #data.fieldC
- 表达式:
- 更新记录操作节点:更新数据记录
- 数据记录:选择
newData,选择提交入库
- 数据记录:选择
- 流程结束
效果:
- 当字段C的值发生变化时,自动触发流程
- 流程获取当前数据记录通过表达式计算出字段A的值,并更新到数据记录
- 无需人工审批,完全自动化执行
审批流用于自动化
此示例展示了审批流不仅用于审批场景,也可用于数据自动化处理:
- 可以直接调用数据模型进行 CRUD 操作
- 可以调用云函数执行复杂逻辑
- 可以调用第三方 API 实现系统集成
- 整个流程无需审批节点,即时自动执行