本文意在列全所有内置函数与表达式,方便大家查阅。
一、内置函数
内置函数是系统预先定义好的函数,并且提供表达式调用支持。
通用函数
数学函数
表达式 |
名称 |
说明 |
ABS |
绝对值 |
函数场景: 表达式函数示例: ABS(number)函数说明: 获取number的绝对值 |
FLOOR |
向下取整 |
函数场景: 表达式函数示例: FLOOR(number)函数说明: 对number向下取整 |
CEIL |
向上取整 |
函数场景: 表达式函数示例: CEIL(number)函数说明: 对number向上取整 |
ROUND |
四舍五入 |
函数场景: 表达式函数示例: ROUND(number)函数说明: 对number四舍五入 |
MOD |
取余 |
函数场景: 表达式函数示例: MOD(A,B)函数说明: A对B取余 |
SQRT |
平方根 |
函数场景: 表达式函数示例: SQRT(number) 函数说明: 对number平方根 |
SIN |
正弦 |
函数场景: 表达式函数示例: SIN(number)函数说明: 对number取正弦 |
COS |
余弦 |
函数场景: 表达式函数示例: COS(number)函数说明: 对number取余弦 |
PI |
圆周率 |
函数场景: 表达式函数示例: PI() 函数说明: 圆周率 |
ADD |
相加 |
函数场景: 表达式函数示例: ADD(A,B)函数说明: A与B相加 |
SUBTRACT |
相减 |
函数场景: 表达式函数示例: SUBTRACT(A,B)函数说明: A与B相减 |
MULTIPLY |
乘积 |
函数场景: 表达式函数示例: MULTIPLY(A,B)函数说明: A与B相乘 |
DIVIDE |
相除 |
函数场景: 表达式函数示例: DIVIDE(A,B)函数说明: A与B相除 |
MAX |
取最大值 |
函数场景: 表达式函数示例: MAX(collection) 函数说明: 返回集合中的最大值,参数collection为集合或数组 |
MIN |
取最小值 |
函数场景: 表达式函数示例: MIN(collection) 函数说明: 返回集合中的最小值,参数collection为集合或数组 |
SUM |
求和 |
函数场景: 表达式函数示例: SUM(collection)函数说明: 返回对集合的求和,参数collection为集合或数组 |
AVG |
取平均值 |
函数场景: 表达式函数示例: AVG(collection)函数说明: 返回集合的平均值,参数collection为集合或数组 |
COUNT |
计数 |
函数场景: 表达式函数示例: COUNT(collection)函数说明: 返回集合的总数,参数collection为集合或数组 |
UPPER_MONEY |
大写金额 |
函数场景: 表达式函数示例: UPPER_MONEY(number)函数说明: 返回金额的大写,参数number为数值或数值类型的字符串 |
表4-1-12-1 数学函数
文本函数
表达式 |
名称 |
说明 |
TRIM |
空字符串过滤 |
函数场景: 表达式函数示例: TRIM(text)函数说明: 去掉文本字符串text中的首尾空格,文本为空时,返回空字符串 |
IS_BLANK |
是否为空字符串 |
函数场景: 表达式函数示例: IS_BLANK(text)函数说明: 判断文本字符串text是否为空 |
STARTS_WITH |
是否以指定字符串开始 |
函数场景: 表达式函数示例: STARTS_WITH(text,start)函数说明: 判断文本字符串text是否以文本字符串start开始,文本为空时,按照空字符串处理 |
ENDS_WITH |
是否以指定字符串结束 |
函数场景: 表达式函数示例: ENDS_WITH(text,start)函数说明: 判断文本字符串text是否以文本字符串end结束,文本为空时,按照空字符串处理 |
CONTAINS |
包含 |
函数场景: 表达式函数示例: CONTAINS(text,subtext)函数说明: 判断文本字符串text是否包含文本字符串subtext,文本text为空时,按照空字符串处理 |
LOWER |
小写 |
函数场景: 表达式函数示例: LOWER(text)函数说明: 小写文本字符串text,文本为空时,按照空字符串处理 |
UPPER |
大写 |
函数场景: 表达式函数示例: UPPER(text)函数说明: 大写文本字符串text,文本为空时,按照空字符串处理 |
REPLACE |
替换字符串 |
函数场景: 表达式函数示例: REPLACE(text,oldtext,newtext)函数说明: 使用文本字符串newtext替换文本字符串text中的文本字符串oldtext |
LEN |
获取字符串长度 |
函数场景: 表达式函数示例: LEN(text)函数说明: 获取文本字符串text的长度,文本为空时,按照空字符串处理 |
JOIN |
连接字符串 |
函数场景: 表达式函数示例: JOIN(text,join)函数说明: 将文本字符串text连接文本字符串join,文本为空时,按照空字符串处理 |
PARSE |
反序列化JSON字符串 |
函数场景: 表达式函数示例: PARSE(text)函数说明: 将JSON文本字符串text反序列化为集合或者map |
JSON |
序列化为JSON字符串 |
函数场景: 表达式函数示例: JSON(object)函数说明: 将记录object序列化为JSON字符串 |
表4-1-12-2 文本函数
正则函数
表达式 |
名称 |
说明 |
MATCHES |
正则匹配 |
函数场景: 表达式函数示例: MATCHES(text,regex)函数说明: 校验字符串是否满足正则匹配,例如regex为[a-zA-Z][a-zA-Z0-9]*$,来校验text是否匹配 |
CHECK_PHONE |
手机号校验 |
函数场景: 表达式函数示例: CHECK_PHONE(text)函数说明: 校验手机号是否正确 |
CHECK_EMAIL |
邮箱校验 |
函数场景: 表达式函数示例: CHECK_EMAIL(text)函数说明:?校验邮箱是否正确 |
CHECK_USER_NAME |
用户名校验 |
函数场景: 表达式函数示例: CHECK_USER_NAME(text)函数说明:?校验用户名是否正确 |
CHECK_PWD |
密码强弱校验 |
函数场景: 表达式函数示例: CHECK_PWD(text)函数说明: 判断密码是否满足强弱校验 |
CHECK_INTEGER |
整数校验 |
函数场景: 表达式函数示例: CHECK_INTEGER(text)函数说明:?校验是否为整数 |
CHECK_ID_CARD |
身份证校验 |
函数场景: 表达式函数示例: CHECK_ID_CARD(text)函数说明:?校验身份证是否正确 |
CHECK_URL |
合法URL校验 |
函数场景: 表达式函数示例: CHECK_URL(text)函数说明:?校验URL是否正确 |
CHECK_CHINESE |
中文校验 |
函数场景: 表达式函数示例: CHECK_CHINESE(text)函数说明:?校验是否为中文文本 |
CHECK_NUMBER |
纯数字校验 |
函数场景: 表达式函数示例: CHECK_NUMBER(text)函数说明:?校验是否为纯数字 |
CHECK_TWO_DIG |
验证是否两位小数 |
函数场景: 表达式函数示例: CHECK_TWO_DIG(text)函数说明:?校验是否两位小数 |
CHECK_IP |
IP地址校验 |
函数场景: 表达式函数示例: CHECK_IP(text)函数说明:?校验IP地址是否正确 |
CHECK_CONTAINS_CHINESE |
包含中文校验 |
函数场景: 表达式函数示例: CHECK_CONTAINS_CHINESE(text)函数说明:?校验是否包含中文 |
CHECK_SIZE_MAX |
只能输入n个字符 |
函数场景: 表达式函数示例: CHECK_SIZE_MAX(text,n)函数说明:?只能输入n个字符 |
CHECK_SIZE_MIN |
至少输入n个字符 |
函数场景: 表达式函数示例: CHECK_SIZE_MIN(text,n)函数说明:?至少输入n个字符 |
CHECK_SIZE |
输入m-n个字符 |
函数场景: 表达式函数示例: CHECK_SIZE(text,m,n)函数说明:?输入m-n个字符 |
CHECK_CODE |
只能由英文、数字、下划线组成 |
函数场景: 表达式函数示例: CHECK_CODE(text)函数说明:?只能由英文、数字、下划线组成 |
CHECK_ENG_NUM |
只能包含英文和数字 |
函数场景: 表达式函数示例: CHECK_ENG_NUM(text)函数说明:?只能包含英文和数字 |
表4-1-12-3 正则函数
时间函数
表达式 |
名称 |
说明 |
NOW |
返回当前时间 |
函数场景: 表达式函数示例: NOW()函数说明: 返回当前时间 |
NOW_STR |
返回当前时间字符串 |
函数场景: 表达式函数示例: NOW_STR()函数说明: 返回当前时间字符串,精确到时分秒,格式为yyyy-MM-dd hh:mm:ss |
TODAY_STR |
返回今天的日期字符串 |
函数场景: 表达式函数示例: TODAY_STR()函数说明: 返回今天的日期字符串,精确到天,格式为yyyy-MM-dd |
ADD_DAY |
加减指定天数 |
函数场景: 表达式函数示例: ADD_DAY(date,days)函数说明: 将指定日期加/减指定天数,date为指定日期,days为指定天数,当为负数时在date上减去此天数 |
ADD_MONTH |
加减指定月数 |
函数场景: 表达式函数示例: ADD_MONTH(date,months)函数说明: 将指定日期加/减指定月数,date为指定日期,months为指定月数,当为负数时在此date上减去此月数 |
ADD_YEAR |
加减指定年数 |
函数场景: 表达式函数示例: ADD_YEAR(date,years)函数说明: 将指定日期加/减指定年数,date为指定日期,years为指定年数,当为负数时在此date上减去此年数 |
TO_DATE |
转换为时间 |
函数示例: TO_DATE(date,pattern)函数说明: 将date字符串按格式转换为时间 |
ADD_WORK_DAY |
工作日加减天数(跳过周末) |
函数示例: ADD_WORK_DAY(date,days) 函数说明: 将指定工作日加/减指定天数(跳过周末),date为指定日期,days为指定天数,当为负数时在date上减去此天数 |
表4-1-12-4 时间函数
集合函数
表达式 |
名称 |
说明 |
LIST_GET |
获取集合(或数组)中的元素 |
函数场景: 表达式函数示例: LIST_GET(list,index)函数说明: 获取集合list中索引为数字index的元素 |
LIST_IS_EMPTY |
判断集合(或数组)是否为空 |
函数场景: 表达式函数示例: LIST_IS_EMPTY(list)函数说明: 传入一个对象集合,判断是否为空 |
LIST_CONTAINS |
判断集合(或数组)是否包含元素 |
函数场景: 表达式函数示例: LIST_CONTAINS(list,item)函数说明: 判断集合list是否包含元素item |
LIST_ADD |
将元素添加到集合(或数组) |
函数场景: 表达式函数示例: LIST_ADD(list,item)函数说明: 将元素item添加到集合list |
LIST_ADD_BY_INDEX |
将元素添加到集合(或数组)的指定位置 |
函数场景: 表达式函数示例: LIST_ADD_BY_INDEX(list,index,item)函数说明: 将元素item添加到集合list的索引index处 |
LIST_REMOVE |
移除集合(或数组)中的元素 |
函数场景: 表达式函数示例: LIST_REMOVE(list,item)函数说明: 从集合list中移除元素item |
LIST_COUNT |
获取集合(或数组)元素数量 |
函数场景: 表达式函数示例: LIST_COUNT(list)函数说明: 传入一个对象集合,获取集合元素数量 |
LIST_IDS |
获取集合(或数组)中的所有id |
函数场景: 表达式函数示例: LIST_IDS(list)函数说明: 传入一个对象集合,获取集合中的所有id组成的列表 |
LIST_FIELD_VALUES |
将对象集合(或数组)转化为属性集合 |
函数场景: 表达式函数示例: LIST_FIELD_VALUES(list,model,field)函数说明: 传入一个对象集合,该对象的模型和属性字段,返回属性值集合 |
LIST_FIELD_EQUALS |
判断对象集合(或数组)中属性值匹配情况 |
函数场景: 表达式函数示例: LIST_FIELD_EQUALS(list,model,field,value)函数说明: 判断对象集合(或数组)中属性值匹配情况,返回布尔集合 |
LIST_FIELD_NOT_EQUALS |
判断对象集合(或数组)中属性值不匹配情况 |
函数场景: 表达式函数示例: LIST_FIELD_NOT_EQUALS(list,model,field,value)函数说明: 判断对象集合(或数组)中属性值不匹配情况,返回布尔集合 |
LIST_FIELD_IN |
判断对象集合(或数组)中属性值是否在指定集合(或数组)中 |
函数场景: 表达式函数示例: LIST_FIELD_IN(list,model,field,list)函数说明: 判断对象集合(或数组)中属性值是否在指定集合(或数组)中,返回布尔集合 |
LIST_FIELD_NOT_IN |
判断对象集合(或数组)中属性值是否不在指定集合(或数组)中 |
函数场景: 表达式函数示例: LIST_FIELD_NOT_IN(list,model,field,list)函数说明: 判断对象集合(或数组)中属性值是否不在指定集合(或数组)中,返回布尔集合 |
LIST_AND |
将一个布尔集合进行逻辑与运算 |
函数场景: 表达式函数示例: LIST_AND(list)函数说明: 将一个布尔集合进行逻辑与运算,返回布尔值 |
LIST_OR |
将一个布尔集合进行逻辑或运算 |
函数场景: 表达式函数示例: LIST_OR(list)函数说明: 将一个布尔集合进行逻辑或运算,返回布尔值 |
STRING_LIST_TO_NUMBER_LIST |
将一个字符集合转换为数值集合 |
函数场景: 表达式函数示例: STRING_LIST_TO_NUMBER_LIST(list)函数说明: 将一个字符集合转换为数值集合,如果转换成功,返回一个数值集合;转换失败,返回集合本身 |
COMMA |
将集合里面的值用逗号拼接 |
函数场景: 表达式函数示例: COMMA(list)函数说明: 将集合里面的值用逗号拼接「集合里面的值只能是Number或者String类型」,返回一个字符串 |
CONCAT |
将集合里面的值用指定的符号拼接 |
函数场景: 表达式函数示例: CONCAT(list, split)函数说明: 将集合里面的值用split拼接「集合里面的值只能是Number或者String类型」,返回一个字符串 |
表4-1-12-5 集合函数
键值对函数
表达式 |
名称 |
说明 |
MAP_GET |
从键值对中获取指定键的值 |
函数场景: 表达式函数示例: MAP_GET(map,key)函数说明: 从键值对中获取键为key的值 |
MAP_IS_EMPTY |
判断键值对是否为空 |
函数场景: 表达式函数示例: MAP_IS_EMPTY(map)函数说明: 判断键值对map是否为空 |
MAP_PUT |
向键值对中添加键值 |
函数场景: 表达式函数示例: MAP_PUT(map,key,value)函数说明: 将键为key的值为value添加到键值对map中 |
MAP_REMOVE |
移除键值对中的元素 |
函数场景: 表达式函数示例: MAP_REMOVE(map,key)函数说明: 从键值对map中移除键key |
MAP_COUNT |
获取键值数量 |
函数场景: 表达式函数示例: MAP_COUNT(map)函数说明: 获取键值对map的键值数量 |
表4-1-12-6 键值对函数
上下文函数
表达式 |
名称 |
说明 |
CURRENT_UID |
获取当前用户id |
函数场景: 表达式函数示例: CURRENT_UID()函数说明: 获取当前用户id |
CURRENT_USER_NAME |
获取当前用户名 |
函数场景: 表达式函数示例: CURRENT_USER_NAME()函数说明: 获取当前用户的用户名 |
CURRENT_USER |
获取当前用户 |
函数场景: 表达式函数示例: CURRENT_USER()函数说明: 获取当前用户 |
CURRENT_ROLE_IDS |
获取当前用户的角色id列表 |
函数场景: 表达式函数示例: CURRENT_ROLE_IDS()函数说明: 获取当前用户的角色id列表 |
CURRENT_ROLES |
获取当前用户的角色列表 |
函数场景: 表达式函数示例: CURRENT_ROLES()函数说明: 获取当前用户的角色列表 |
CURRENT_PARTNER_ID |
获取当前用户的合作伙伴id |
函数场景: 表达式函数示例: CURRENT_PARTNER_ID()函数说明: 获取当前用户的合作伙伴id |
CURRENT_PARTNER |
获取当前用户的合作伙伴 |
函数场景: 表达式函数示例: CURRENT_PARTNER()函数说明: 获取当前用户的合作伙伴 |
表4-1-12-7 上下文函数
对象函数
表达式 |
名称 |
说明 |
IS_NULL |
判断是否为空 |
函数场景: 表达式函数示例: IS_NULL(文本或控件)函数说明: 判断对象是否为空,为空则返回true,不为空则返回false,可用于判断具体值或者控件 |
EQUALS |
判断是否相等 |
函数场景: 表达式函数示例: EQUALS(A,B)函数说明: 判断A和B是否相等 |
FIELD_GET |
获取对象属性值 |
函数场景: 表达式函数示例: GET(obj,dotExpression)函数说明: 从对象中根据点表达式获取属性值 |
表4-1-12-8 对象函数
逻辑函数
表达式 |
名称 |
说明 |
IF |
条件表达式 |
函数场景: 表达式函数示例: IF(A,B,C)函数说明: 如果F满足条件A,则返回B,否则返回C,支持多层嵌套IF函数 |
AND |
逻辑与 |
函数场景: 表达式函数示例: AND(A,B)函数说明: 返回 条件A 逻辑与 条件B 的值 |
OR |
逻辑或 |
函数场景: 表达式函数示例: OR(A,B)函数说明: 返回 条件A 逻辑或 条件B 的值 |
NOT |
逻辑非 |
函数场景: 表达式函数示例: NOT(A)函数说明: 返回 逻辑非 条件A 的值 |
表4-1-12-9 逻辑函数
特定场景函数
商业函数
表达式 |
名称 |
说明 |
CURRENT_CORP_ID |
获取当前用户的公司id |
函数场景: 商业公司函数示例: CURRENT_CORP_ID()函数说明: 获取当前用户的公司id |
CURRENT_CORP |
获取当前用户的公司 |
函数场景: 商业公司函数示例: CURRENT_CORP()函数说明: 获取当前用户的公司 |
CURRENT_SHOP_ID |
获取当前用户的店铺id |
函数场景: 商业店铺函数示例: CURRENT_SHOP_ID()函数说明: 获取当前用户的店铺id |
CURRENT_SHOP |
获取当前用户的店铺 |
函数场景: 商业店铺函数示例: CURRENT_SHOP()函数说明: 获取当前用户的店铺 |
表4-1-12-10 商业函数
逻辑DSL函数
表达式 |
名称 |
说明 |
FOR_INDEX |
获取循环的index |
函数场景: 逻辑DSL函数示例: FOR_INDEX(context)函数说明: 获取循环的index |
表
4-1-12-11 逻辑DSL函数
二、表达式
表达式,是由数字、算符、函数、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。约束变量在表达式中已被指定数值,而自由变量则可以在表达式之外另行指定数值。
表达式可以使用运算符(+、-、*、/、&&、||、!、==、!=)、点表达式(例如:模型A.字段C.关联模型字段A)和内置函数。表达式格式如:IF(ISNULL(模型A.字段x),模型A.字段y.关联模型字段z,模型A.字段m)
表达式中模型字段的前端展现使用展示名称displayName,表达式原始内容使用技术名称name。
点表达式
点表达式是表达式的子集,由变量名与点组成。点前的变量与点后的变量为从属关系,点后的变量从属于点前的变量。可以使用点表达式获取由全表达式确定的最后一个点后变量的值。
正则表达式
对应内置函数 |
说明 |
正则表达式 |
CHECK_PHONE |
手机号校验 |
^(1[3-9])\d{9}$ |
CHECK_EMAIL |
邮箱校验 |
^[a-z0-9A-Z]+[- |
CHECK_USER_NAME |
用户名校验 |
非空校验 |
CHECK_PWD |
密码强弱校验(强密码校验) |
^(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9~!@&%#_(.)]{8,16}$ |
CHECK_INTEGER |
整数校验 |
^-{0,1}[1-9]\d*$ |
CHECK_ID_CARD |
身份证校验 |
^\d{15}$) |
CHECK_URL |
合法URL校验 |
^(?:(?:https?)://)(?:(?:1\d{2} |
CHECK_CHINESE |
中文校验 |
^[\u4e00-\u9fa5]{0,}$ |
CHECK_NUMBER |
纯数字校验 |
^[0-9]*$ |
CHECK_TWO_DIG |
验证是否两位小数 |
^[0-9]+(.[0-9]{2})?$ |
CHECK_IP |
IP地址校验 |
^((2[0-4]\d |
CHECK_CONTAINS_CHINESE |
包含中文校验 |
^.?[\u4e00-\u9fa5]{0,}.?$ |
CHECK_SIZE |
只能输入n个字符 |
^.{n}$ |
CHECK_SIZE_MIN |
至少输入n个字符 |
^.{n,}$ |
CHECK_SIZE_MAX |
最多输入n个字符 |
^.{0,n}$ |
CHECK_SIZE_RANGE |
输入m-n个字符 |
^.{m,n}$ |
CHECK_CODE |
只能由英文、数字、下划线组成 |
^[a-z0-9A-Z_]*$ |
CHECK_ENG_NUM |
只能包含英文和数字 |
^[a-z0-9A-Z]*$ |
表4-1-12-12 正则表达式
内置变量
在表达式中可以使用点表达式来获取内置变量的属性及子属性的属性。例如,使用activeRecord来获取当前记录。activeRecord.id来获取当前选中行记录的id。
数据变量
变量 |
名称 |
说明 |
activeRecord |
当前选中值 |
选中单行记录跳转视图初始化时,值为单条当前选中记录;选中多行记录跳转视图初始化时,值为当前选中记录列表;整表单校验时,值为当前表单提交记录;单字段校验时,值为当前字段值。作为动作筛选条件时,值为动作模型定义数据。 |
表4-1-12-13 数据变量
上下文变量
变量 |
名称 |
说明 |
module |
模块 |
使用示例: context.module示例说明:请求上下文中的模块 |
tenant |
租户 |
使用示例: context.tenant示例说明:请求上下文中的租户 |
lang |
语言 |
使用示例: context.lang示例说明:请求上下文中的语言 |
country |
国家 |
使用示例: context.country示例说明:请求上下文中的国家 |
env |
环境 |
使用示例: context.env示例说明:请求上下文中的环境 |
extend |
扩展信息 |
使用示例: context.extend.扩展变量名示例说明:请求上下文中的扩展信息 |
表4-1-12-14 上下文变量
内置函数
内置函数章节介绍的内置函数可以在表达式中使用。例如,使用ABS(activeValue.amount)来获取当前选中记录金额的绝对值。