触发器可以实现自动化的业务规则处理。例如为客户发送生日提醒、服务到期提醒、汇总客户总成交金额、自动审批、根据 A 字段的值自动填写 B 字段的值,甚至调用外部程序接口等等。触发器是 RB 核心功能之一,支持丰富的自动化处理。
在 RB 中,可以使用已经定义好的触发器来完成特定的业务规则,触发器由以下几种事件来自动触发,包括新建时、更新时、删除时、分派时、共享时、取消共享时、审批通过时、审批撤销时,以及定期执行。
要添加触发器,首先进入管理中心 - 触发器,然后点击页面右上角的 [添加] 按钮。
选择/填写完成后点击 [确定] 按钮,系统将进入下一步对触发器进行完整配置。
? 部分触发动作可能不被源实体所支持,例如一个未开启审批流程的实体(或明细实体)不会产生“审批通过时”、“审批撤销时”动作
触发器除了在特定动作下触发执行,也可以被“定期执行”。对于那些没有合适触发时机或需要定期触发的业务(动作)特别有用(例如发送客户生日提醒)。
请注意下图中的执行时段(从 V2.9 开始支持),默认为 0~24 点,您可以根据需要选择指定的时段内执行。例如每天执行 2 次,执行时段选择 0~24 点,其执行时间分别为 0:00 和 12:00 点;执行时段选择 9~18 点,其执行时间分别为 9:00 和 13:00 点。
定期执行一般适用于无需实时触发的情况,通常配合“附加过滤条件”使用。如触发的数据量过大,可能消耗较多资源,请谨慎使用
系统提供了多种触发器,每种触发器都有对应的业务场景。我们将在后续版本持续提供更多的触发种类,以便满足更多业务需要。目前支持的触发器:
字段更新(数据转写)与字段聚合共同为 RB 提供强大的动态运算能力。字段聚合一般应用在 1:N
关系,而字段更新一般应用在 1:1
关系中。
字段更新支持(从关联字段)字段赋值、固定值、计算公式等更新方式,并且对所有字段(类型)均提供支持。需要注意的是,不同字段类型之间的转换会导致一定的精度损失(例如小数转整数)。
字段更新支持丰富的更新方式,以及高级计算公式,详情参阅 计算公式
字段聚合(数据聚合)用于将多个值聚合为一个值,例如订单明细中的小计金额聚合(求和)到订单的总计金额,或计算客户的客单价(平均值)等。字段聚合通常应用在 1:N
关系中,如 1订单:N明细
1客户:N订单
。
字段聚合提供的聚合方式包括求和、计数、平均值以及复杂的计算表达式等。
分组聚合可以通过配置“分组字段关联”进行记录汇总,同时不要求“源实体”与“目标实体”有直接的关联关系。例如在统计仓库库存时,需要将仓库、产品同时作为分组条件。
“分组字段关联”仅对有限字段类型提供支持(不支持的字段会被过滤)。同时注意,如目标字段类型为“日期”,将按照目标字段的“格式”进行分组(如年月);如目标字段类型为“分类”,将按照目标字段的“分类级别”进行分组。目标字段的级别必须小于等于源字段,例如源字段为 YYYY-MM
(即年月格式),而目标字段为 YYYY-MM-DD
(即年月日格式),是无法被系统允许的。同理,2 级分类无法分组至 3 级分类。
通过配置“校验条件”,检测录入数据是否符合业务规则,如果不符合则无法录入并给予提示(例如库存数量不能小于 0)。
注意此处的“校验条件”与“附加过滤条件”为并且关系,即需同时符合两个条件。
将记录自动 共享 给指定用户。
将记录自动 分派 给指定用户。例如新的客户资源产生,将其分配给不同的销售人员以便其进行跟进。
自动 审批 某些无需人工介入的记录。例如对金额小于 1000 元的订单进行自动审批,而非必须人工介入,提升工作效率。
自动记录转换可以将 记录转换 自动化执行,减少无意义的手动操作。通常配合数据过滤条件使用,当记录符合条件时执行自动转换。
发送通知通常用于获知数据的变化,或当数据变化时通知相关用户。例如一个新的线索被添加。
您也可以发送通知(短信、邮件)给外部人员(例如客户生日提醒)。RB 会列出源实体中的电话、邮件字段供您选择接收地址。使用此功能您需要正确配置 短信服务 或/和 邮件服务。
回调 URL 主要用于与三方系统对接。当发生指定动作时 RB 将会以 POST
的方式将数据(JSON 格式)发送到指定的 URL。
POST
数据格式示例{
"user": "002-0000000000000000", // 操作人
"action": "DELETE", // 动作
"recordId": "999-0000000000000001", // 操作记录ID
"recordData": xxx // 操作记录数据(若有)
}
您可以使用 https://webhook.site 测试不同动作时的数据格式
在上文 字段更新 中提到可以通过计算公式实现复杂的字段值计算,以下介绍两种计算公式的使用方法。
公式编辑器支持数字、日期类型字段(如果是其他类型的字段,会自动切换到“高级计算公式”编辑器),您可以根据业务需求配置合适的公式。请注意,计算公式所返回的结果需要与“目标字段”类型匹配,例如目标字段为数字,那么公式计算结果也应是数字,RB 不会对公式结果进行验证,请自行保证正确性。
RB 目前提供了几个针对日期的函数,使用函数时请自行保证其语法正确性。
DATEDIFF($DATE1, $DATE2, [H|D|M|Y])
$DATE1
与 $DATE2
表示日期,可以是日期字段,也可以是具体的日期值,如 2021-01-01
[H|D|M|Y]
表示差值单位(可选,默认为 D
)。H
表示小时,D
表示天,M
表示月,Y
表示年DATEADD($DATE, $NUMBER, [H|D|M|Y])
$DATE
表示日期,可以是日期字段,也可以是具体的日期值,如 2021-01-01
$NUMBER
表示数字,可以是数字字段,也可以是具体的数字值,如 30
[H|D|M|Y]
表示数字单位(可选,默认为 D
)。H
表示小时,D
表示天,M
表示月,Y
表示年DATESUB($DATE, $NUMBER, [H|D|M|Y])
$DATE
表示日期,可以是日期字段,也可以是具体的日期值,如 2021-01-01
$NUMBER
表示数字,可以是数字字段,也可以是具体的数字值,如 30
[H|D|M|Y]
表示数字单位(可选,默认为 D
)。H
表示小时,D
表示天,M
表示月,Y
表示年CURRENTUSER()
当前用户(ID)CURRENTBIZUNIT()
当前用户的所在部门(ID)CURRENTDATE()
当前日期(时间)LOCATIONDISTANCE($LOC1, $LOC2)
两个位置字段的直线距离(米)REQUEST($URL, [DEFAULT])
请求给定 URL 以获取结果RB 的计算公式底层使用 Aviator 实现,因此您可以编写任何符合 Aviator Script 语法的代码来实现业务需求,同时您也可以使用上节中介绍的函数。
同公式编辑器一样,字段变量需要通过 {xxx}
包裹,在公式执行时 RB 会自动替换实际的值。
公式计算出的值需要符合数据库的存储类型,RB 目前不会对值进行转换,此问题需您自行处理。在编写高级表达式前,您应清楚并理解各字段值的含义。
ID
注意下列示例中使用 {}
包裹的均为字段内部标识。
{ziduan1} + {ziduan2}
{juli} / 1000
DATEDIFF
)DATEDIFF({date1}, {date2}, "H")