REBUILD 高级计算公式实战

高级计算公式在触发器 字段更新 中使用,是 RB 最强大的功能之一。他可以根据业务需要计算出您需要的值并进行自动更新。介于高级计算公式的强大能力,其使用也需要一定的技术门槛,且具有一定的复杂度。

本文将通过一些示例介绍触发器的使用,希望对您有一定启发。在开始前,您需具备以下能力,否则可能无法理解本文所涉内容。

  1. 对编程语言有一定了解
  2. 了解 RB 的 触发器字段更新
  3. 了解 Aviator 脚本语言

高级计算公式基于 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';
}

更多示例陆续编写中......

相关推荐
许彰午2 天前
55-字典缓存与通知SPI
java·低代码·架构
HUIBUR科技2 天前
十多份业务Excel台账各自独立,数据汇总越做越累
低代码
葡萄城技术团队2 天前
你的设备管理系统过得了等保和信创验收吗?——国产化适配与安全合规清单
低代码
SL_staff2 天前
项目延期时如何用四类角色机制实现责任锚定?一线技术实践拆解
java·低代码·团队管理
米软科技3 天前
高校信息化团队实践:利用AI低代码缩短零散业务交付周期
人工智能·科技·低代码·汽车·制造
企业数字化笔记3 天前
低代码、开源系统、定制开发怎么选?用资产管理案例做技术取舍
低代码·开源
SL_staff3 天前
财务系统慎用低代码?从数据模型闭环看合规落地的技术实践
java·低代码·全栈
低代码布道师3 天前
外包数字化平台 第03篇|显示部门详情
低代码
许彰午4 天前
51-BpmnDesigner集成
java·低代码·架构