服务编排、逻辑流、工作流中的表达式语法规则说明
BWEL指BizWorks Expression Language,可以在服务编排、页面编排及工作流中使用,用于变量赋值、分支条件设定、组件属性的动态配置等场景。
分类 | 操作符 | 返回值类型 | 用法示例 | 用法说明 |
文本 | & | String | str_a & str_b | 用于拼接字符串,并返回拼接结果。例如表达式"BizWorks"&" "&"LightApp"的返回值为"BizWorks LightApp"。 |
== | Boolean | str_a == str_b | 用于比较字符串,并返回比较结果。 返回值:
| |
!= | Boolean | str_a != str_b | 用于比较字符串,并返回比较结果。 返回值:
| |
数字 | + | Number | num_1+num_2 | 对两个数字进行相加。 |
- | Number | num_1-num_2 | 对两个数字进行相减。 | |
* | Number | num_1*num_2 | 对两个数字进行相乘。 | |
/ | Number | num_1/num_2 | 对两个数字进行相除,分母为0时返回null。 | |
% | Number | num_1%num_2 | num_1除以num_2后取的余数。 | |
^ | Number | num_1^num_2 | num_2个num_1彼此相乘。 | |
== | Boolean | num_1==num_2 | 对两个数字进行比较,并返回比较结果。 返回值:
| |
!= | Boolean | num_1!=num_2 | 对两个数字进行比较,并返回比较结果。 返回值:
| |
< | Boolean | num_1<num_2 | 对两个数字进行比较,并返回比较结果。 返回值:
| |
> | Boolean | num_1>num_2 | 对两个数字进行比较,并返回比较结果。 返回值:
| |
<= | Boolean | num_1<=num_2 | 对两个数字进行比较,并返回比较结果。 返回值:
| |
>= | Boolean | num_1>=num_2 | 对两个数字进行比较,并返回比较结果。 返回值:
| |
时间 | == | Boolean | time_1==time_2 | 对两个日期进行比较,并返回比较结果。 返回值:
|
!= | Boolean | time_1!=time_2 | 对两个日期进行比较,并返回比较结果。 返回值:
| |
< | Boolean | time_1<time_2 | 对两个日期进行比较,并返回比较结果。 返回值:
| |
> | Boolean | time_1>time_2 | 对两个日期进行比较,并返回比较结果。 返回值:
| |
<= | Boolean | time_1<=time_2 | 对两个日期进行比较,并返回比较结果。 返回值:
| |
>= | Boolean | time_1>=time_2 | 对两个日期进行比较,并返回比较结果。 返回值:
|
表达式用法示例
通过表达式为Integer数据类型的变量num赋值,表达式示例如下:
1+2
通过表达式撰写分支条件,无需使用IF函数,可直接进行条件判断,表达式返回类型为Boolean即可,表达式示例如下:
str_a=="分支一"
服务编排内BWEL函数说明
函数入参对大小写不敏感 。
分类 | 函数名 | 服务编排 | 页面编排 | 工作流 | 入参 | 返回值类型 | 用法示例 | 用法说明 |
集合 | DIFFERENCE_SET | 不支持 | 支持 | 不支持 | Set, Set | Set | SET(set1, set2) | 获取两个集合对象的差集。 |
INSERT_TO_ARRAY | 不支持 | 支持 | 不支持 | List, 动态类型, Integer | List | INSERT_TO_ARRAY(array, item, index) | 在目标数组的指定位置插入元素。 | |
INTERSECTION_SET | 不支持 | 支持 | 不支持 | Set, Set | Set | SET(set1, set2) | 获取两个集合对象的交集。 | |
KEY_SET | 不支持 | 支持 | 不支持 | Map | Set | KEY_SET(mapVariable) | 获取Map类型变量的Key值的集合。 | |
REMOVE_FROM_ARRAY | 不支持 | 支持 | 不支持 | List, 动态类型 | List | REMOVE_FROM_ARRAY(array, item) | 在目标数组中删除指定元素。 | |
REMOVE_FROM_ARRAY_AT | 不支持 | 支持 | 不支持 | List, Integer | List | REMOVE_FROM_ARRAY_AT(array, index) | 在目标数组中删除指定位置的元素。 | |
SUBSET | 不支持 | 支持 | 不支持 | Set, Set | Boolean | SUBSET(set1, set2) | 判断set2是否是set1的子集。 | |
UNION_SET | 不支持 | 支持 | 不支持 | Set, Set | Set | UNION_SET(set1, set2) | 获取两个集合对象的并集。 | |
KEYSET | 支持 | 不支持 | 支持 | Map | Set | KEYSET(mapVariable) | 获取Map类型变量的Key值的集合。 | |
PUSH_TO_LIST | 不支持 | 支持 | 不支持 | List,动态类型 | List | PUT_TO_LIST(list, item) | 在集合变量list的末尾插入一个元素item。 | |
PUT_TO_MAP | 支持 | 支持 | 支持 | Map,动态类型,动态类型 | Map | PUTTOMAP(mapVariable, key, value) | 用于给Map类型变量添加key和value值。 | |
REMOVE_FROM_MAP | 支持 | 支持 | 支持 | Map,动态类型 | Map | REMOVEFROMMAP(mapVariable, key) | 用于从Map中删除指定key的键值对。 | |
SIZE | 支持 | 支持 | 支持 | List/Set/Map | Integer | SIZE(list) | 返回集合对象内的元素个数。 | |
时间 | ADD_DAY | 支持 | 支持 | 支持 | Date,Integer | Date | ADDDAY(date,number) | 返回日期加、减天数后的日期值,number必须为整数(负整数视为减去天数)。 |
ADD_HOUR | 支持 | 支持 | 支持 | Date,Integer | Date | ADDHOUR(datetime,number) | 返回日期时间加、减小时后的日期时间值,number必须为整数(负整数视为减去小时)。 | |
DATE | 支持 | 支持 | 支持 | Integer,Integer,Integer | Date | DATE(year,month,day) | 根据输入的年月日的值,返回日期类型的数据。 其中年月日均为必填:
错误日期:如输入1998,2,31返回null。 | |
DATETIME | 支持 | 不支持 | 支持 | Integer,Integer,Integer,Integer,Integer,Integer | Date | DATETIME(year,month,day,hour,minute,second) | 根据输入的年月日的值,返回日期类型的数据。 其中年月日和时间均为必填:
错误日期:如输入1998,2,31返回null。 | |
DAY | 支持 | 支持 | 支持 | Date | Integer | DAY(date) | 如果当天是2019-07-09,则返回为9。将日期转化返回为整数,在1~31之间。 | |
DAYS | 支持 | 支持 | 支持 | Date,Date | Integer | DAYS(end_date,start_date) | 返回两个日期间的天数差值,日期和日期时间字段可以参与计算(时分秒不参与计算)。 | |
FORMAT_DATETIME | 支持 | 支持 | 支持 | Date,String | String | FORMAT_DATETIME(DATE,pattern) | 将日期格式转化为指定格式文本格式;例如:FORMAT_DATETIME([日期],"yyyy-mm-dd HH:MM:SS")。 | |
HOUR | 支持 | 支持 | 支持 | Date | Integer | HOUR(datetime) | 如果当前时间为2019-07-09 14:34:45,则返回14。返回的是小时数,在0~23之间。 | |
HOURS | 支持 | 支持 | 支持 | Date,Date | Integer | HOURS(end_time,start_time) | 返回两个时间之间的小时差值。例如计算耗时。 | |
MINUTE | 支持 | 支持 | 支持 | Date | Integer | MINUTE(datetime) | 如果当前时间为2019-07-09 14:34:45,则返回34。返回的是分钟数,在0~59之间。 | |
MINUTES | 支持 | 支持 | 支持 | Date | Integer | MINUTES(end_time,start_time) | 返回两个时间之间的分钟差值。例如计算耗时。 | |
MONTH | 支持 | 支持 | 支持 | Date | Integer | MONTH(TODAY()) | 如果当天是2019-07-09,则返回为7。将日期转化返回为整数,在1~12之间。 | |
NOW | 支持 | 支持 | 支持 | 无 | Date | NOW() | 返回数据填写时的日期+时间。 | |
QUARTER | 支持 | 支持 | 支持 | Date | Integer | QUARTER(date) | 返回填写日期所属的季度。返回是1~4之间的整数。 | |
SECOND | 支持 | 支持 | 支持 | Date | Integer | SECOND(datetime) | 如果当前时间为2019-07-09 14:34:45,则返回45。返回的是秒数,在0~59之间。 | |
TODAY | 支持 | 支持 | 支持 | 无 | Date | TODAY() | 返回数据填写时的日期。 | |
WEEKDAY | 支持 | 支持 | 支持 | Date | Integer | WEEKDAY(date) | 返回指定日期、日期时间字段或者数据的星期几,返回值是1~7之间的整数。1代表周一,以此类推。 | |
WEEKNUM | 不支持 | 支持 | 不支持 | Date | Integer | WEEKNUM(date, return_type) | 返回特定日期在一年中的“第几周”。Return_type默认1是周一开始,2是周二开始(以此类推)。返回的是个整数。 | |
YEAR | 支持 | 支持 | 支持 | Date | Integer | YEAR(TODAY()) | 如果当天是2019-07-09,则返回为2019。将日期转化返回为整数,在1970~9999之间。 | |
YEARS | 支持 | 支持 | 支持 | Date | Integer | YEARS(end_date,start_date) | 返回两个日期之间的年数差值。例如计算年龄时可用,只对年份数据进行计算,默认四舍五入后输入整数(时分秒不参与计算)。 | |
TIMESTAMP | 支持 | 不支持 | 不支持 | 无 | Long | TIMESTAMP() | 返回当前时间的时间戳。 | |
文本 | CONCATENATE | 支持 | 支持 | 支持 | String,String | String | CONCATENATE(text1, text2) | 拼接多个字符串。 |
CONTAINS | 支持 | 支持 | 支持 | String,String | Boolean | CONTAINS(text1,text2) | 判断字符串(text1)是否包含字符串(text2)的值。 返回值:
| |
ENDS_WITH | 支持 | 支持 | 支持 | String,String | Boolean | ENDSWITH(text,startString) | 判断字符串(text)是否以特定字符串(startString)结尾。 返回值:
| |
FIND | 支持 | 支持 | 支持 | String,String,Integer | Boolean | FIND(pattern, string, position) | 判断给定字符串从某个位置开始是否符合某种范式。 | |
INDEX_OF | 支持 | 支持 | 支持 | String/List,String | Integer | INDEX_OF(string, search) | 在第一个文本字符串中查找第二个文本字符串,并返回第二个文本字符串的起始位置在第一个字符串中出现的起始位置。返回0则表示未查找到。 | |
JOIN | 支持 | 支持 | 支持 | Set,String | String | JOIN(v, sep) | 将一个集合对象以指定分隔符拼接为一个字符串。 | |
LEFT | 支持 | 支持 | 支持 | String,Integer | String | LEFT(text,[num_chars]) | 将一个字符串取最左的几位数,num_chars可选,不填写默认是1。例如LEFT("阿里巴巴",2),返回的是阿里。 | |
LENGTH | 支持 | 支持 | 支持 | String/List | Integer | LENGTH(string) | 字符串长度或列表中元素个数。 | |
LOWER | 支持 | 支持 | 支持 | String | String | LOWER_CASE(string) | 将一个文本字符串中的所有字母转换为小写字母。 | |
MID | 不支持 | 支持 | 不支持 | String,Integer,Integer | String | MID(string, startindex, endindex) | 返回从第一个字符串的begin开始长度为len的内容,begin必填,若len不填写,表示最后位置。 | |
REPLACE | 支持 | 支持 | 支持 | String,String,String | String | REPLACE(string, search, replacement) | 将第一个字符串中出现的所有第二个字符串内容,替换为第三个字符串的内容。 | |
RIGHT | 支持 | 支持 | 支持 | String,Integer | String | RIGHT(text,[num_chars]) | 将一个字符串取最右的几位数,num_chars可选,不填写默认是1。例如RIGHT("阿里巴巴",2),返回的是巴巴。 | |
SPLICE | 支持 | 支持 | 支持 | String,String,String | String | REPLACE(string, search, replacement) | 将第一个字符串中出现的所有第二个字符串内容,替换为第三个字符串的内容。 | |
SPLIT | 支持 | 支持 | 支持 | String | List<String> | split("abc")=["a","b","c"] | 拆分字符串为数组。 | |
STARTS_WITH | 支持 | 支持 | 支持 | String,String | Boolean | STARTSWITH(text,startString) | 判断字符串(text)是否以特定字符串(startString)开始。 返回值:
| |
SUBSTRING | 支持 | 不支持 | 支持 | String,Integer,Integer | String | SUBSTRING(string, startindex, endindex) | 返回从第一个字符串的startindex到endindex位置的内容,startindex必填,若endindex不填写,表示最后位置。 | |
TEXT | 支持 | 支持 | 支持 | Number | String | TEXT(number) | 将给定数据转换为字符串。 | |
TO_DATETIME | 支持 | 支持 | 支持 | String | Date | TO_DATETIME("2020-10-09 08:09:58") | 根据输入的年月日和时间值,返回一个日期时间类型数据。参数需为文本类型,输出为日期时间类型。 | |
TO_NUMBER | 支持 | 支持 | 支持 | String | Number | TO_NUMBER(string) | 将文本转换为数值,例如:
| |
TRIM | 支持 | 支持 | 支持 | String | String | TRIM(string) | 删除字符串首尾的空格,但是会保留字符串内部作为词与词之间分隔的空格。 | |
UPPER | 支持 | 支持 | 支持 | String | String | UPPER_CASE(string) | 将一个文本字符串中的所有字母转换为大写字母。 | |
UUID | 支持 | 支持 | 支持 | 无 | String | UUID()将参数 number向上舍入 | 随机生成一个唯一标识符,标识符长度为XX位。 | |
逻辑 | AND | 支持 | 不支持 | 支持 | Boolean | Boolean | (express1) AND (express2) | 表达式与。 |
CASE | 支持 | 支持 | 支持 | 动态类型 | 动态类型 | CASE(expression, value1, result1, value2, result2, ..., else_result) | 将expression值与给定的一组值进行比较,如果等于其中的某个值,则返回相应的结果,如果表达式的值不等于其中的任何一个值,则返回设定的其他值(else_result)。
| |
IF | 支持 | 支持 | 支持 | Boolean,动态类型,动态类型 | 动态类型 | IF(boolean, trueValue, falseValue);IF(isFemale, 'right', 'left') | 3元表达式。 | |
IS_EMPTY | 支持 | 支持 | 支持 | Object | Boolean | S_EMPTY(object) | 判断字符串、结构对象等是否为空。 | |
IS_NULL | 支持 | 支持 | 支持 | String, Object | Boolean | IS_EMPTY(object) | 判断字符串、结构对象等是否为空。 | |
IS_NUMBER | 支持 | 支持 | 支持 | String | Boolean | IS_NUMBER(fieldName) | 判断文本值是否为数字。 返回值:
| |
NULL_VALUE | 支持 | 支持 | 支持 | 动态类型 | 动态类型 | NULLVALUE(value, defaultValue);NULLVALUE(amount, 10)=10 | 如果value为null,返回defaultValue。 | |
OR | 支持 | 不支持 | 支持 | Boolean | Boolean | (express1) OR (express2) | 表达式或。 | |
数字 | ABS | 支持 | 支持 | 支持 | Number | Number | ABS(number) | 返回入参的绝对值,可使用整数、浮点等数值字段、常量或表达式参与计算。 |
AVERAGE | 支持 | 支持 | 支持 | Number | Number | AVERAGE(number1,number2,…) | 返回参数的平均值(算术平均值),可使用整数、浮点等字段以及数值。 | |
CEIL | 支持 | 支持 | 支持 | Number | Number | CEIL(number) | 将参数number向上舍入。 | |
FLOOR | 支持 | 支持 | 支持 | Number | Number | FLOOR(number) | 将参数number向下舍入。 | |
FORMAT_NUMBER | 支持 | 不支持 | 支持 | Number,Integer | String | FORMAT_NUMBER(num1,quantize) | 将数字格式转化为指定格式文本,第二个参数是精度,表示小数点后的位数;FORMAT_NUMBER([数字字段],quantize),默认进行四舍五入。比如 FORMAT_NUMBER(3.1415926,4)="3.1416"。 | |
FORMAT_NUM | 不支持 | 支持 | 不支持 | Number,String | String | FORMAT_NUM(num1,pattern) | 将数字格式转化为指定格式文本,第二个参数为转化模式,默认进行四舍五入。比如FORMAT_NUM(3.141526,"x.xxxx")="3.1416"。 | |
MAX | 支持 | 支持 | 支持 | Number | Number | MAX(number1,number2,…) | 返回一组数值中的最大值。 | |
MIN | 支持 | 支持 | 支持 | Number | Number | MIN(number1,number2,...) | 返回一组值中的最小值。 | |
POWER | 支持 | 支持 | 支持 | Number,Integer | Number | POWER(number, power) | number为数值型,power为基数乘幂运算的指数(power必填)。 | |
RANDOM | 支持 | 支持 | 支持 | 无 | Float | RANDOM() | 0~1的随机浮点数。 | |
RANDOM_INT | 支持 | 支持 | 支持 | Integer | Integer | RANDOM_INT(max) | 0~max的随机整数。 | |
ROUND | 支持 | 支持 | 支持 | Number,Integer | Number | ROUND(number, quantize) | 根据指定精度对number进行四舍五入,比如ROUND(3.1415926, 4) = 3.1416; ROUND(3.5, 0)=4。 | |
SUM | 支持 | 支持 | 支持 | Number | Number | SUM(number1,number2,...) | 返回入参的求和值,可使用整数、浮点等字段以及数值。 | |
流程 | WF_PROCESS_INSTANCE_ID | 不支持 | 不支持 | 支持 | 无 | String | WF_PROCESS_INSTANCE_ID() | 获取运行时当前流程实例ID。 |
WF_BUSINESS_KEY | 不支持 | 不支持 | 支持 | 无 | String | WF_BUSINESS_KEY() | 获取运行时当前流程实例业务Key。 | |
WF_START_USER_ID | 不支持 | 不支持 | 支持 | 无 | String | WF_START_USER_ID() | 获取运行时当前流程实例发起人ID。 | |
WF_TASK_ID | 不支持 | 不支持 | 支持 | 无 | String | WF_TASK_ID() | 获取运行时当前流程实例上下文任务实例ID。 | |
WF_TASK_ASSIGNEE | 不支持 | 不支持 | 支持 | 无 | String | WF_TASK_ASSIGNEE() | 获取运行时当前流程实例上下文任务处理人ID。 | |
其他 | MD5_32 | 支持 | 不支持 | 不支持 | String | String | MD5_32("xxxx") | 返回由一组字符串共同生成的加密值,返回长度为32。 |
CLONE_DEEP | 不支持 | 支持 | 不支持 | 动态类型 | 动态类型 | CLONE_DEEP(obj) | 对一个变量进行深拷贝并返回相同数据类型的值。 | |
FORMAT_OBJECT | 不支持 | 支持 | 不支持 | 对象类型 | String | FORMAT_OBJECT(obj) | 将对象类型的变量转为对应的JSON数据字符串。 |