理解伙伴云的表达式

什么是表达式?

我们知道,一个业务系统的终极目标,就是对各种各样的数据进行高效的流转和处理;伙伴云也不例外。

表达式,就是伙伴云在具体的业务自动化环节中,对数据进行精细、复杂、高效处理的最强大的工具;在伙伴云触发器、数据验证、填写向导、计算字段、自动填写等功能中均有广泛的使用。

伙伴云表达式跟 Excel 公式语法十分相似。以「根据分数,输出是否及格的文字描述」的简单表达式举例:


通过举例可以看出,表达式就像中学数学里学习的「方程式」y=f(x)右侧,通过对自变量x们的各种计算,整个表达式将返回一个y值。唯独不同的是,表达式内部不仅支持数学计算,还支持IF这样的逻辑运算;返回的y值也不一定是数字,还可以是'不及格'这样的文字内容(字符串)、以及 / 这样可用于条件判断的「布尔值」数据。

表达式的相关知识和大部分编程语言一样,大致可以分为:数据类型、变量、常量、运算符和函数。下面为大家逐一讲解。


数据类型

相信大家能看出来,表达式中存放数据唯二方式就是「常量」和「变量」,运算符、函数只是对数据进行加工的工具。

在介绍常量 / 变量之前,我们首先需要知道存储在常量、变量中的数据值,都有哪些类型:

数据类型 对应字段/函数/对象 常量示例
文本 text 文本(单行/多行/带格式)、号码、条码 '你好'
数字 number 数值(数值/百分比)、金额
计算公式(结果为数字/百分比)
99.12
日期 datetime 日期和时间(仅日期/日期和时间)
或函数: TODAY()NOW()
'2023-09-10'
选项 option 选项(单选/多选)、下拉菜单(单选/多选) {C:订单表.订单状态.已完成}
文件 file 图片、附件;仅可在触发器执行操作赋值时使用 {F:文件名称.docx}
布尔值 bool 表达式的逻辑运算、逻辑函数 TRUE()
空值 empty 通过函数 EMPTY() 返回 EMPTY()
用户 user 工作区成员 {U:张三}
部门
department
企业部门对象。不存在对应变量,仅可用于
LEADERSOFDEP()函数
{D:销售部}
表格 table 特定的一张表格 {订单表}
单条数据 item 特定的一条数据 {I:产品表/计算机-550W}

数据类型的概念在表达式撰写中非常重要。很多时候,不同类型的数据不能放在一起运算,也无法互相比较、判断彼此是否相等。


常量与变量

「常量」顾名思义:就是一个已经明确的固定值。你在上面「数据类型」的示例里看到的,都是常量。比如99.12 这样一个数字,在程序的执行过程中它本身是不会变化的——这就是「常量」一词的由来。

「变量」则是一个可以变的值。比如{当前数据.产品单价},它会随每一次「当前数据」的不同而变化。

变量与常量结合使用,就可以实现特定的产品逻辑判断了。比如我们撰写这样一个表达式:

{当前数据.产品单价} > 99.12

这样就实现了如下业务逻辑:当「产品单价」大于 99.12 时,表达式判断通过,否则判断不通过。


伙伴云中的变量

伙伴云中的变量分为「内置变量」和「自定义变量」两类。前者是存储在伙伴云表格数据结构中的既有变量,可直接用于调取数据;后者是我们自行定义的变量,可在零代码程序执行过程中灵活使用。

内置变量

伙伴云的底座是表格,因此我们日常接触的变量,绝大部分都是表格中的内置变量。这些变量帮助我们从表格中提取数据,用以进行判断、计算和传递。内置变量主要有五种类型:

类型 对应数据类型 含义 示例
表格 表格 table 特定的一张表格 {当前表格}
表格的字段 跟随对应字段 特定表格中某个字段的值;用于统计/筛选场景 {当前表格.产品单价}
数据 单条数据 item 特定的一条数据 {当前数据}
数据的字段值 跟随对应字段 某条数据某个字段的值 {当前数据.产品单价}
用户 用户 user 工作区成员;大部分时候是一条
数据的字段值,但存在例外
{当前操作人}

下面按「全局」、「单条数据」两个层级,分别解析伙伴云有哪些可用的内置变量。

1. 全局的内置变量

在自动化的全局层面,我们可以获取以下内置变量:

变量 语法 数据
类型
含义
当前表格 {当前表格} 表格
table
当前自动化所属的表格。可用于统计函数。
当前数据 {当前数据} 数据
item
触发当前自动化的数据。仅在自动化基于数据触发
时可用。
当前操作人 {当前操作人} 用户
user
触发当前自动化的操作人(用户)。仅在自动化基
于用户的操作(含数据增删改)触发时可用,定时
触发时不可用。
目标表格 {目标表格} 表格
table
自动化执行操作中,选择的目标表格。
目标数据 {目标数据} 数据
item
自动化执行操作中,正在被操作的目标数据。
查找数据表格 {查找数据表格} 表格
table
仅在「用找到的数据批量创建新数据」这类场景中
可用。方便引入要查找数据的表格字段。
查找到的数据 {查找到的数据} 数据
item
仅在「用找到的数据批量创建新数据」这类场景中
可用:引入找到的数据。
表格字段 {表格名.字段名} 同字段 对应一个表格的特定字段;作为变量,一般用于批
量操作 / 统计时,对表格数据进行筛选 / 统计计算。
特例:在 ITEM 函数中可作为字段对象使用

2. 属于某条数据的内置变量

{当前数据}{目标数据}{查找到的数据} 这些「数据」变量的基础上,我们还可以通过英文句点「.」带出如下变量:

变量 语法 数据类型 含义
字段值 {数据.字段名} 同字段 该数据各字段的值。
创建时间 {数据.创建时间} 日期 datetime 该数据的创建时间。
创建人 {数据.创建人} 用户 user 该数据的创建人。
修改时间 {数据.修改时间} 日期 datetime 该数据的修改时间。
修改人 {数据.修改人} 用户 user 该数据的修改人。
数据ID {数据.数据ID} 文本 text 该条数据的唯一标识。
详见 表达式中的「数据ID」

如果表达式的使用场景刚好是数据发生了修改,还可以通过「.」带出下列专门为修改场景设计的变量:

变量 语法 数据类型 含义
字段(原值) {数据.字段名-原值} 同字段 字段的数据修改之前的值。
字段(新值) {数据.字段名-新值} 同字段 字段的数据修改之后的值。
修改时间(上次) {数据.修改时间-上次} 日期 datetime 数据上次的修改时间。
修改时间(本次) {数据.修改时间-本次} 日期 datetime 数据本次的修改时间。
修改人(上次) {数据.修改人-上次} 用户 user 数据上次的修改人。
修改人(本次) {数据.修改人-本次} 用户 user 数据本次的修改人。

小贴士:

如果想要判断「某字段值发生了修改」,表达式为:{数据.字段名-新值} != {数据.字段名-原值}


自定义变量

除了使用表格和数据中的变量,我们还能在系统中人工自行定义一些变量,方便完成自动化的执行和表达式的撰写。根据变量可发挥作用的范围(作用域)的不同,分为临时变量、全局变量、执行参数三类。

1. 临时变量:

触发器、数据验证、填写向导等自动化功能的具体表达式前,我们可以定义一些临时变量,存储一些表达式中需要反复用到的数据,让表达式撰写更轻松,同时自动化执行的性能也能够得到提升。一个表达式最多可以设置 10 个临时变量。

img

2. 全局变量

触发器中,我们还有一个临时变量的「加强版」——全局变量。顾名思义,一旦定义,就可以在当前整个触发器范围的各种触发条件和执行操作中使用。一个触发器最多可以设置 20 个全局变量。

img

3. 执行参数

在临时变量/全局变量之外,我们还有一个自定义变量的「超级加强版」——执行参数。执行参数不仅可以在当前触发器范围使用,还可以实现在触发器和触发器之间、流程和触发器之间,跨触发器 / 流程、乃至跨工作区传递值。

具体请参考:配置触发手动执行工作流/触发器


运算符

运算符的概念非常简单,回到前面的例子:

{当前数据.产品单价} > 99.12

左边是变量,右边是常量,而中间的「>」,我们称之为运算符。

伙伴云的运算符分为逻辑运算符和数学运算符两类:

  • 逻辑运算符:返回值为 或者(在条件判断中分别对应通过和不通过)。
  • 数学运算符:返回值为数值。

具体支持的运算符如下:

分类 运算符 含义 适用场景
逻辑运算符 = 等于 文本、数字、选项、日期、成员、图片、附件、
关联数据、扫码、手写签名等
逻辑运算符 != 不等于 文本、数字、选项、日期、成员、图片、附件、
关联数据、扫码、手写签名等
逻辑运算符 > 大于 数字、日期
逻辑运算符 < 小于 数字、日期
逻辑运算符 >= 大于等于 数字、日期
逻辑运算符 <= 小于等于 数字、日期
数学运算符 + 数字
数学运算符 - 数字
数学运算符 * 数字
数学运算符 / 数字

函数

伙伴云有丰富的内置函数,可以用于统计、逻辑判断、数值计算、日期计算、文本处理、数组处理、数据查询等等大量的业务场景中。

在伙伴云的任何表达式编辑框下方,你都可以滚动查看和选择系统支持的所有函数:

image-20231008201953101

选择特定的函数后,在界面中就可以看到函数的简明使用帮助:

image-20231008201451570

所有函数的语法,都遵循类似这样语法结构:

CONCAT('文本1', '文本2', '文本3', '文本4')

英文小括号外为函数名,英文小括号内是参数。多个参数之间,用英文逗号 , 进行分隔。参数的个数由不同函数自行约定。

在绿色语法示例中,一般用中括号 [] 代表可选参数(IN、LIKE 等函数中的数组参数除外)

伙伴云表达式中函数的完整速查清单,请参阅:函数速查

2023-12-07 更新
1761 次查看