数据表事件类型的触发器将监听数据表的增删改查事件,当发生对该表的数据操作且满足配置的条件时,触发对应工作流。例如新增订单后扣减商品的库存,新增一条评论后等待人工审核等场景。
数据表的变动有几种情况:

可以根据业务的不同需要选择触发的时机。当选择变动情况中包含更新数据表的情况时,还可以对发生变动的字段进行限定,只有选中字段发生变动时,才满足触发条件,不选择则代表所有字段发生变动都可以触发。

更细节地,可以对触发的数据行的各个字段配置条件规则,当其中的字段满足相应条件,才进行触发。

数据表事件触发后会在执行计划中注入产生事件的数据行作为触发上下文数据,以供后续流程中的节点作为变量调用。但当后续节点中希望使用该数据的关系字段时,需要先配置对关系数据的预加载,选中的关系数据将会在触发后一并注入到上下文中,且可被按层级进行选择使用。
数据表事件事件暂不支持批量数据操作的触发,例如新增文章数据时同时新增的该文章的多个标签数据(对多关系数据),将仅能触发对文章新增的工作流,而同时新增的多个标签将不会触发新增标签的工作流。多对多关系数据的关联和新增时,也不会触发中间表的工作流。
通过 HTTP API 调用应用接口对数据表的操作也可以触发相应事件,但如果不通过 NodoBase 应用,而是直接通过数据库操作产生的数据变动,就无法触发相应事件。比如数据库中本身的触发器不会与应用中的工作流产生关联。
另外,使用 SQL 操作节点对数据库进行操作相当于直接操作数据库,也不会触发数据表事件。
工作流从 0.20 开始支持外部数据源,如果使用了外部数据源插件,并且数据表事件配置的是外部数据源,只要对该数据源的数据操作是在应用内完成的(用户新增、更新和工作流数据操作等),都可以触发对应的数据表事件。但如果数据变动是通过其他系统或直接在外部数据库内变更的,则无法触发数据表事件。
以新增一个订单后计算总价并扣减库存的场景举例。
首先,我们创建商品表和订单表,数据模型如下:
| 字段名称 | 字段类型 |
|---|---|
| 商品名称 | 单行文本 |
| 价格 | 数字 |
| 库存 | 整数 |
| 字段名称 | 字段类型 |
|---|---|
| 订单号 | 自动编号 |
| 订单商品 | 多对一(商品) |
| 订单总价 | 数字 |
并添加基础的商品数据:
| 商品名称 | 价格 | 库存 |
|---|---|---|
| iPhone 14 Pro | 7999 | 10 |
| iPhone 13 Pro | 5999 | 0 |
然后创建一个基于订单数据表事件的工作流:

其中的几个配置项:
之后根据流程的逻辑配置其他节点,检查商品库存是否大于 0,大于 0 的扣减库存,否则订单无效删除订单:

节点的配置会在具体类型的介绍文档中详细说明。
启用该工作流,并通过界面新增订单来测试。对“iPhone 14 Pro”下单后,对应商品的库存会扣减为 9,而如果对“iPhone 13 Pro”下单,由于库存不足,订单将被删除。
