Skip to content

更新记录节点

更新记录节点用于在工作流执行过程中,自动修改已有记录的字段值。它既可以更新「触发记录(当前记录)」本身,也可以跨表批量更新「关联表」中的相关记录,常用于根据业务规则更新状态、标记、时间戳,或把当前记录的变化同步到关联数据。

适用场景

  • 审批通过后自动将状态更新为「已通过」
  • 订单发货后更新发货时间,并同步给关联的「物流表」记录
  • 客户信息变更时,批量更新其名下「订单表」中未完成的订单状态
  • 满足条件后自动给记录打标签 / 写入完成时间

配置项

更新记录节点

更新记录节点包含两类更新能力:

  1. 自身字段更新:直接更新当前触发记录的字段(见「字段更新映射」)。
  2. 关联表同步更新:跨表更新关联表中的一条或多条记录(见「关联表同步更新」)。

更新对象

更新记录节点默认更新触发记录。也可以通过表达式指定其他记录 ID(高级用法,详见下方引用表达式)。

字段更新映射(自身)

配置要更新的字段及其新值:

配置项说明
字段要更新的目标字段(当前表)
值模板静态值或引用表达式
  • 静态值:直接输入固定值,例如 状态 = "已完成"、是否归档 = true。
  • 引用表达式:通过 {{}} 引用上下文变量,例如:
{{trigger.record.<字段ID>}}
{{node_<节点ID>.<字段ID>}}
{{loop.current_data.<字段ID>}}
{{NOW}}

关联表同步更新

关联表同步更新用于:当当前记录发生变化时,自动更新「另一张表」中与之相关的记录。可以添加多个同步更新任务,每个任务相互独立、各自执行。

点击「添加关联表更新」可新增一个同步任务。每个任务包含以下配置项。

关联表

选择需要被同步更新的目标表。当当前记录发生变化时,系统会依据下方条件,对该表中的相关记录执行更新。

关联字段(可选)

通过关联字段自动定位关联表中需更新的记录。

  • 选择关联字段后,系统仅更新「当前记录中该关联字段所指向」的那条(或那些)关联记录。
  • 留空时,不对记录做关联定位,而是对目标表的全表记录按下方「关联表筛选条件」进行过滤——适合需要按条件批量更新整张关联表的场景。

关联字段通常是当前表中类型为「关联记录 / 双向关联」的字段,其值为关联记录的 ID。

关联表筛选条件

仅更新关联表中满足以下条件的记录;不设置任何条件时,更新关联表中的全部候选记录(候选范围由「关联字段」决定:指定了关联字段则为该字段指向的记录,未指定则为目标表全部记录)。

条件中的字段取自【关联表】本身。可以为该组条件选择「且 / 或」组合关系:

  • 且(全部满足):所有条件都满足的记录才会被更新。
  • 或(任一满足):任意一个条件满足的记录即被更新。

同步触发方式

决定本次同步更新在什么情况下执行:

选项说明
始终同步每次当前记录变更都执行该同步任务
满足条件时同步仅当「同步触发条件」成立时才执行

同步触发条件

当「同步触发方式」选择「满足条件时同步」时出现。用于判断本次是否要执行同步更新:当前记录发生变更后,仅当关联表中存在满足以下条件的记录时,才执行本次同步更新

条件中的字段取自【关联表】。多个条件之间支持「且 / 或」组合:

  • 且(全部满足):仅当存在一条关联记录同时满足所有条件时,才执行同步。
  • 或(任一满足):只要存在任意一条关联记录满足条件,即执行同步。

与「关联表筛选条件」的区别

  • 同步触发条件决定本次同步「要不要执行」(基于关联表中是否存在匹配记录);不满足则整组关联更新被跳过。
  • 关联表筛选条件决定关联表中「哪些记录会被更新」(逐条过滤候选记录)。
  • 两者的字段都取自关联表,且都可以独立设置「且 / 或」关系。

字段映射

配置要把哪些值写入关联记录的哪些字段(可添加多条):

配置项说明
目标字段关联表中要写入的字段
值模板静态值,或引用表达式(可引用当前记录、关联记录等上下文)

字段映射中可用的引用表达式示例:

{{trigger.record.<字段ID>}}    # 当前触发记录的字段
{{target_record.<字段ID>}}    # 被更新的关联记录自身的字段
{{NOW}}                       # 当前时间

每个关联表同步更新任务必须至少配置一条字段映射,否则该任务不会执行任何更新。

执行逻辑

当更新记录节点被触发时,按以下顺序执行:

  1. 解析「自身字段更新」映射,渲染得到主记录的待写入值。
  2. 依次处理每个「关联表同步更新」任务:
    • 若「同步触发方式」为「满足条件时同步」,先校验同步触发条件;不满足则跳过该任务。
    • 解析候选关联记录(由关联字段定位,或目标表全表)。
    • 逐条用「关联表筛选条件」过滤候选记录(满足才纳入)。
    • 将「字段映射」渲染后写入命中的关联记录。
  3. 主记录与所有关联记录的更新在同一个数据库事务中提交:只要其中任意一步失败,全部回滚,保证多表数据一致。

使用示例

示例一:更新自身状态

审批通过后,把当前记录的状态改为「已通过」、完成时间写为当前时间:

字段值模板
状态静态值:已通过
完成时间{{NOW}}

示例二:按条件批量同步关联表(全表筛选)

场景:当「客户」记录被标记为「VIP」时,把其关联「订单表」中状态为「进行中」的订单统一标记为「优先处理」。

  • 关联表:订单表
  • 关联字段:(留空,按筛选条件过滤全表)
  • 关联表筛选条件:客户ID = {{trigger.record.id}} 状态 = 进行中
  • 同步触发方式:始终同步
  • 字段映射:状态 → 静态值「优先处理」

示例三:仅当当前记录满足某条件时同步

场景:仅当「当前记录」状态变为「已发货」时,才把关联物流记录更新为「已揽收」。

  • 关联表:物流表
  • 关联字段:物流单(指向物流记录)
  • 同步触发方式:满足条件时同步
  • 同步触发条件:状态 = 已发货(且)
  • 字段映射:物流状态 → 静态值「已揽收」

注意事项

  • 默认更新触发记录;更新其他记录需提供正确的记录 ID(高级用法)。
  • 系统字段(如创建人、创建时间)通常不可更新。
  • 更新操作会触发记录更新事件:若工作流配置了「记录更新」触发器,需注意避免循环触发。
  • 多个同步更新任务彼此独立;任一任务失败会导致整次更新回滚(主记录 + 关联记录均不写入)。
  • 「关联表筛选条件」与「同步触发条件」均支持「且 / 或」切换,缺省均为「且」。

Released under the MIT License.