触发器可以实现自动化、个性化的业务流程处理,例如为客户发送生日提醒、服务到期提醒、汇总客户总成交金额、自动审批、根据 A 字段的值自动填写 B 字段的值,甚至调用外部程序接口等等。
RB 的触发器采用 IFTTT 模式,其核心思想为“如果怎样,就怎样”,例如“如果合同审批通过,就创建订单”、“如果客户生日,就发送短信”等等。触发器是 RB 核心功能之一,支持丰富的自动化处理。
要添加触发器,首先进入管理中心 - 触发器,然后点击页面右上角的 [添加] 按钮。
选择/填写完成后点击 [确定] 按钮,系统将进入下一步对触发器进行完整配置。
触发动作中的“审批通过时”是指最终通过(即审批完成),而非某一审批步骤通过。同时注意部分触发动作可能不被源实体所支持,例如一个未开启审批流程的实体不会产生审批相关动作
附加过滤条件在“删除时”可能因无法匹配导致触发器无法触发,此类场景建议分成两个触发器(将删除动作独立出去,且不要配置附加过滤条件)
“更新时”动作同时支持指定字段,即指定字段更新时才执行,若不指定则只要更新就会执行。
“审批通过时”动作同时支持指定审批步骤,即指定步骤审批通过时才执行。若不指定则仅最终通过(即审批完成)时才执行。审批步骤名称是您在审批流程节点中设置的名称。
触发器除了在特定动作下触发执行,也可以被“定期执行”。对于那些没有合适触发时机或需要定期触发的业务(动作)特别有用(例如发送客户生日提醒)。
请注意下图中的执行时段,默认为 0~24 点,您可以根据需要选择指定的时段内执行。例如每天执行 2 次,执行时段选择 0~24 点,其执行时间分别为 0:00 和 12:00 点;执行时段选择 9~18 点,其执行时间分别为 9:00 和 13:00 点。
若您选择“每天”执行,其最大执行次数为 24 次(每小时一次);若“每月”执行,其最大执行次数为当月天数(每天一次);若“每小时”执行,其最大执行次数为 60 次(每分钟一次)
立即执行不用等待特定的动作才执行。请注意如当前触发器已做修改请先保存,未保存的修改不会生效。同时,如您的数据较多耗时会较长,因此建议您在非业务繁忙阶段执行此操作。
RB 提供了丰富的触发器用于满足各种业务场景。我们将在后续版本中提供更多触发器,以便满足您的更多业务需要。
类型 | 说明 |
---|---|
字段更新 | 用于更新关联实体(或自身),支持丰富的更新方式 |
字段聚合 | 用于聚合多条记录(例如订单明细聚合到订单),支持丰富的聚合方式 |
分组聚合 | 字段聚合的增强版 |
数据校验 | 用于验证数据是否符合要求 |
发送通知 | 用于向内部/外部用户发送通知,支持丰富的发送方式 |
自动审批 | 审批流程 自动化 |
自动分配 | 记录分配 自动化 |
自动共享 | 记录共享 自动化 |
自动取消共享 | 记录取消共享 自动化 |
自动记录转换 | 记录转换 自动化 |
自动删除 | 自动删除无效数据 |
新建动态 | 自动新建 动态 |
新建任务 | 自动新建 任务 |
回调 URL | 用于三方系统对接,当数据变更时通知第三方系统 |
某些触发器可能会引起级联执行,例如 A 触发器用于更新某实体字段值,当某实体字段值被更新后,会被动触发“更新”动作,从而引起 B 触发器(若有)执行,B 触发器又可能引起 C 触发器(若有)执行… 简而言之,无论“更新”动作是如何发生(如手动更新、API 更新、触发器更新等),其对应的触发器都会被执行。
同时,如果两个(或多个)触发器之间存在循环级联执行,RB 会自动检测并避免死循环的发生,您通常无需关心此问题。
自 V3.8 开始,您可以在触发器中开启“禁用级联执行”(仅会产生级联效应的触发器支持)
优先级只在同一源实体的同一动作时才有意义。例如 A 实体有两个触发器(T1 和 T2),且均在“更新”时执行,此时可以通过配置优先级使 T1 和 T2 的执行顺序可控。但如果 T1 是在“更新”时执行,T2 是在“删除”时执行,则优先级的配置将没有意义。
当一个操作产生了多个触发器执行,通常情况下他们会在一个事物中执行(要么都成功要么都失败),但有些触发器例外。例如对于发送通知而言,若邮件/短信等已经发送,即使操作失败了也无法撤回。所以此触发器的优先级应尽量设置的足够小,以便让其最后执行(让前面的触发器先执行)。以下是应注意的触发器及优先级建议:
在触发器的高级查询组件中,您可以使用字段变量作为条件值进行更加灵活的条件判断。在以下配置中变量可用:
字段变量以 {@ziduan}
格式填写,在实际执行时会使用触发记录作为源数据,并提取其对应字段值替换变量为实际值进行查询操作。
? 本功能仅对商业版本有效,且部分字段可能暂未支持填写字段变量
在一些触发器中,系统会自动判定触发器执行内容是否会对目标记录产生影响。如果执行内容的结果与目标记录一致,系统可能会跳过执行。因此,当我们修改了无需参与执行内容计算的字段时,触发器并不会产生实际执行,以此提高执行效率。同时注意,如果跳过执行其可能存在的 级联执行 也不会被执行。