高级计算公式在触发器 字段更新 中使用,是 RB 最强大的功能之一。他可以根据业务需要计算出您需要的值并进行自动更新。介于高级计算公式的强大能力,其使用也需要一定的技术门槛,且具有一定的复杂度。
本文将通过一些示例介绍触发器的使用,希望对您有一定启发。在开始前,您需具备以下能力,否则可能无法理解本文所涉内容。
高级计算公式基于 Aviator 脚本语言,实际上当您在编写公式时就是在编写 Aviator 脚本
基础示例
从最简单的例子开始,如下图所示。

此示例用于将地区 district
和地址 address
拼接为一个完整地址,并且中间用 -
相连。其中:
##
开头的一行是注释,不是必须的。注释在实际执行时不起作用,只是在编写复杂公式时通过注释可以帮助我们更好的理解{district}
{address}
是字段内部标识,可以看出他使用{}
包裹起来,这是必须的
基于上述示例我们再进一步,如果地区和地址为空,我们就不拼接,该如何编写?请参考:
go
if ({district} == nil && {address} == nil) {
return nil;
} else {
return {district} + "-" + {address};
}
可以看到,这是一个多行的公式,因此他需要完整的语法表达,包括:
- 尾部使用
;
结束(相较于上述单行示例无需;
) - 通过
return
来返回我们需要的值(相较于上述单行示例无需return
) - 其中
nil
代表空(其他编程语言一般使用null
请注意区分)
如上,若您能理解并通过上述示例举一反三,恭喜您已具备编写高级计算公式的能力。
示例列表
根据企业注册时间修改客户等级
实体和字段
- 实体1:Account
- 关键字段:
字段 | 字段类型 | 说明 |
---|---|---|
registrationDate | 日期 | 企业注册日期 |
accountLevel | 下拉列表 | 客户等级 |
公式
kotlin
## 未填写企业注册日期则返回原值(即不做修改)
if (ISNULL({registrationDate})) {
return {accountLevel};
}
## 用当前日期减去企业注册日期得出注册天数
let xday = CURRENTDATE() - {registrationDate};
## 根据注册天数返回客户等级
## 请注意下拉列表需要返回 ID,详情参阅 https://getrebuild.com/docs/admin/trigger/fieldwriteback#%E5%AD%97%E6%AE%B5%E5%8F%98%E9%87%8F%E5%80%BC%E8%AF%B4%E6%98%8E
## 具体 ID 值可通过 OpenAPI 获取 https://getrebuild.com/docs/dev/how-use-apis
if (xday > 3650) {
return '012-018dcbe2fa5b003d';
} elsif (xday > 1825) {
return '012-018dcbe2fa5b003a';
} elsif (xday > 365) {
return '012-018dcbe2fa5b003c';
} else {
return '012-018dcbe2fa5b0031';
}
更多示例陆续编写中......