服务编排、逻辑流、工作流中的表达式语法及BWEL函数规则说明

服务编排、逻辑流、工作流中的表达式语法规则说明

说明

BWEL指BizWorks Expression Language,可以在服务编排、页面编排及工作流中使用,用于变量赋值、分支条件设定、组件属性的动态配置等场景。

分类

操作符

返回值类型

用法示例

用法说明

文本

&

String

str_a & str_b

用于拼接字符串,并返回拼接结果。例如表达式"BizWorks"&" "&"LightApp"的返回值为"BizWorks LightApp"。

==

Boolean

str_a == str_b

用于比较字符串,并返回比较结果。

返回值:

  • True:字符串相同。

  • False:字符串不同。

!=

Boolean

str_a != str_b

用于比较字符串,并返回比较结果。

返回值:

  • True:字符串不同。

  • False:字符串相同。

数字

+

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

对两个数字进行比较,并返回比较结果。

返回值:

  • True:数字相等。

  • False:数字不等。

!=

Boolean

num_1!=num_2

对两个数字进行比较,并返回比较结果。

返回值:

  • True:数字不同。

  • False:数字相同。

<

Boolean

num_1<num_2

对两个数字进行比较,并返回比较结果。

返回值:

  • True:num_1小于num_2。

  • False:num_1大于等于num_2。

>

Boolean

num_1>num_2

对两个数字进行比较,并返回比较结果。

返回值:

  • True:num_1大于num_2。

  • False:num_1小于等于num_2。

<=

Boolean

num_1<=num_2

对两个数字进行比较,并返回比较结果。

返回值:

  • True:num_1小于等于num_2。

  • False:num_1大于num_2。

>=

Boolean

num_1>=num_2

对两个数字进行比较,并返回比较结果。

返回值:

  • True:num_1大于等于num_2。

  • False:num_1小于num_2。

时间

==

Boolean

time_1==time_2

对两个日期进行比较,并返回比较结果。

返回值:

  • True:日期相同。

  • False:日期不同。

!=

Boolean

time_1!=time_2

对两个日期进行比较,并返回比较结果。

返回值:

  • True:日期不同。

  • False:日期相同。

<

Boolean

time_1<time_2

对两个日期进行比较,并返回比较结果。

返回值:

  • True:time_1小于time_2。

  • False:time_1大于等于time_2。

>

Boolean

time_1>time_2

对两个日期进行比较,并返回比较结果。

返回值:

  • True:time_1大于time_2。

  • False:time_1小于等于time_2。

<=

Boolean

time_1<=time_2

对两个日期进行比较,并返回比较结果。

返回值:

  • True:time_1小于等于time_2。

  • False:time_1大于time_2。

>=

Boolean

time_1>=time_2

对两个日期进行比较,并返回比较结果。

返回值:

  • True:time_1大于等于time_2。

  • False: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)

根据输入的年月日的值,返回日期类型的数据。

其中年月日均为必填:

  • 年份只接受1970~9999之间的整数。

  • 月只接受1~12之间的整数。

  • 日只接受1~31之前的整数。

错误日期:如输入1998,2,31返回null。

DATETIME

支持

不支持

支持

Integer,Integer,Integer,Integer,Integer,Integer

Date

DATETIME(year,month,day,hour,minute,second)

根据输入的年月日的值,返回日期类型的数据。

其中年月日和时间均为必填:

  • 年份只接受1970~9999之间的整数。

  • 月只接受1~12之间的整数。

  • 日只接受1~31之前的整数。

  • 小时只接受0~23之间的整数。

  • 分钟只接受0~59之间的整数。

  • 秒只接受0~59之间的整数。

错误日期:如输入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)的值。

返回值:

  • True:字符串(text1)包含字符串(text2)的值。

  • False:字符串(text1)没有包含字符串(text2)的值。

ENDS_WITH

支持

支持

支持

String,String

Boolean

ENDSWITH(text,startString)

判断字符串(text)是否以特定字符串(startString)结尾。

返回值:

  • True:字符串是以特定字符串结尾。

  • False:字符串不是以特定字符串结尾。

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)开始。

返回值:

  • True:字符串是以特定字符串开始。

  • False:字符串不是以特定字符串开始。

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)

将文本转换为数值,例如:

  • TO_NUMBER("1")=1

  • TO_NUMBER("1.1")=1.1

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)。

  • 如果expression是一个单选字段,则value1入参需要是一个code(避免后续选项显示名称修改造成表达式错误执行)。

  • 如果expression是文本,则value也需要是一个文本。

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)

判断文本值是否为数字。

返回值:

  • True:文本是数字。

  • False:文本不是数字。

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数据字符串。