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

说明 BWEL指BizWorks Expression Language,可以在服务编排、页面编排及工作流中使用,用于变量赋值、分支条件设定、组件属性的动态配置等场景。
分类操作符返回值类型用法示例用法说明
文本&Stringstr_a & str_b用于拼接字符串,并返回拼接结果。例如表达式"BizWorks"&" "&"LightApp"的返回值为"BizWorks LightApp"。
==Booleanstr_a == str_b用于比较字符串,并返回比较结果。
返回值:
  • True:字符串相同。
  • False:字符串不同。
!=Booleanstr_a != str_b用于比较字符串,并返回比较结果。
返回值:
  • True:字符串不同。
  • False:字符串相同。
数字+Numbernum_1+num_2对两个数字进行相加。
-Numbernum_1-num_2对两个数字进行相减。
*Numbernum_1*num_2对两个数字进行相乘。
/Numbernum_1/num_2对两个数字进行相除,分母为0时返回null。
%Numbernum_1%num_2num_1除以num_2后取的余数。
^Numbernum_1^num_2num_2个num_1彼此相乘。
==Booleannum_1==num_2对两个数字进行比较,并返回比较结果。
返回值:
  • True:数字相等。
  • False:数字不等。
!=Booleannum_1!=num_2对两个数字进行比较,并返回比较结果。
返回值:
  • True:数字不同。
  • False:数字相同。
<Booleannum_1<num_2对两个数字进行比较,并返回比较结果。
返回值:
  • True:num_1小于num_2。
  • False:num_1大于等于num_2。
>Booleannum_1>num_2对两个数字进行比较,并返回比较结果。
返回值:
  • True:num_1大于num_2。
  • False:num_1小于等于num_2。
<=Booleannum_1<=num_2对两个数字进行比较,并返回比较结果。
返回值:
  • True:num_1小于等于num_2。
  • False:num_1大于num_2。
>=Booleannum_1>=num_2对两个数字进行比较,并返回比较结果。
返回值:
  • True:num_1大于等于num_2。
  • False:num_1小于num_2。
时间==Booleantime_1==time_2对两个日期进行比较,并返回比较结果。
返回值:
  • True:日期相同。
  • False:日期不同。
!=Booleantime_1!=time_2对两个日期进行比较,并返回比较结果。
返回值:
  • True:日期不同。
  • False:日期相同。
<Booleantime_1<time_2对两个日期进行比较,并返回比较结果。
返回值:
  • True:time_1小于time_2。
  • False:time_1大于等于time_2。
>Booleantime_1>time_2对两个日期进行比较,并返回比较结果。
返回值:
  • True:time_1大于time_2。
  • False:time_1小于等于time_2。
<=Booleantime_1<=time_2对两个日期进行比较,并返回比较结果。
返回值:
  • True:time_1小于等于time_2。
  • False:time_1大于time_2。
>=Booleantime_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, SetSetSET(set1, set2)获取两个集合对象的差集。
INSERT_TO_ARRAY不支持支持不支持List, 动态类型, IntegerListINSERT_TO_ARRAY(array, item, index)在目标数组的指定位置插入元素。
INTERSECTION_SET不支持支持不支持Set, SetSetSET(set1, set2)获取两个集合对象的交集。
KEY_SET不支持支持不支持MapSetKEY_SET(mapVariable)获取Map类型变量的Key值的集合。
REMOVE_FROM_ARRAY不支持支持不支持List, 动态类型ListREMOVE_FROM_ARRAY(array, item)在目标数组中删除指定元素。
REMOVE_FROM_ARRAY_AT不支持支持不支持List, IntegerListREMOVE_FROM_ARRAY_AT(array, index)在目标数组中删除指定位置的元素。
SUBSET不支持支持不支持Set, SetBooleanSUBSET(set1, set2)判断set2是否是set1的子集。
UNION_SET不支持支持不支持Set, SetSetUNION_SET(set1, set2)获取两个集合对象的并集。
KEYSET支持不支持支持MapSetKEYSET(mapVariable)获取Map类型变量的Key值的集合。
PUSH_TO_LIST不支持支持不支持List,动态类型ListPUT_TO_LIST(list, item)在集合变量list的末尾插入一个元素item。
PUT_TO_MAP支持支持支持Map,动态类型,动态类型MapPUTTOMAP(mapVariable, key, value)用于给Map类型变量添加key和value值。
REMOVE_FROM_MAP支持支持支持Map,动态类型MapREMOVEFROMMAP(mapVariable, key)用于从Map中删除指定key的键值对。
SIZE支持支持支持List/Set/MapIntegerSIZE(list)返回集合对象内的元素个数。
时间ADD_DAY支持支持支持Date,IntegerDateADDDAY(date,number)返回日期加、减天数后的日期值,number必须为整数(负整数视为减去天数)。
ADD_HOUR支持支持支持Date,IntegerDateADDHOUR(datetime,number)返回日期时间加、减小时后的日期时间值,number必须为整数(负整数视为减去小时)。
DATE支持支持支持Integer,Integer,IntegerDateDATE(year,month,day)根据输入的年月日的值,返回日期类型的数据。
其中年月日均为必填:
  • 年份只接受1970~9999之间的整数。
  • 月只接受1~12之间的整数。
  • 日只接受1~31之前的整数。
错误日期:如输入1998,2,31返回null。
DATETIME支持不支持支持Integer,Integer,Integer,Integer,Integer,IntegerDateDATETIME(year,month,day,hour,minute,second)根据输入的年月日的值,返回日期类型的数据。
其中年月日和时间均为必填:
  • 年份只接受1970~9999之间的整数。
  • 月只接受1~12之间的整数。
  • 日只接受1~31之前的整数。
  • 小时只接受0~23之间的整数。
  • 分钟只接受0~59之间的整数。
  • 秒只接受0~59之间的整数。
错误日期:如输入1998,2,31返回null。
DAY支持支持支持DateIntegerDAY(date)如果当天是2019-07-09,则返回为9。将日期转化返回为整数,在1~31之间。
DAYS支持支持支持Date,DateIntegerDAYS(end_date,start_date)返回两个日期间的天数差值,日期和日期时间字段可以参与计算(时分秒不参与计算)。
FORMAT_DATETIME支持支持支持Date,StringStringFORMAT_DATETIME(DATE,pattern)将日期格式转化为指定格式文本格式;例如:FORMAT_DATETIME([日期],"yyyy-mm-dd HH:MM:SS")。
HOUR支持支持支持DateIntegerHOUR(datetime)如果当前时间为2019-07-09 14:34:45,则返回14。返回的是小时数,在0~23之间。
HOURS支持支持支持Date,DateIntegerHOURS(end_time,start_time)返回两个时间之间的小时差值。例如计算耗时。
MINUTE支持支持支持DateIntegerMINUTE(datetime)如果当前时间为2019-07-09 14:34:45,则返回34。返回的是分钟数,在0~59之间。
MINUTES支持支持支持DateIntegerMINUTES(end_time,start_time)返回两个时间之间的分钟差值。例如计算耗时。
MONTH支持支持支持DateIntegerMONTH(TODAY())如果当天是2019-07-09,则返回为7。将日期转化返回为整数,在1~12之间。
NOW支持支持支持DateNOW()返回数据填写时的日期+时间。
QUARTER支持支持支持DateIntegerQUARTER(date)返回填写日期所属的季度。返回是1~4之间的整数。
SECOND支持支持支持DateIntegerSECOND(datetime)如果当前时间为2019-07-09 14:34:45,则返回45。返回的是秒数,在0~59之间。
TODAY支持支持支持DateTODAY()返回数据填写时的日期。
WEEKDAY支持支持支持DateIntegerWEEKDAY(date)返回指定日期、日期时间字段或者数据的星期几,返回值是1~7之间的整数。1代表周一,以此类推。
WEEKNUM不支持支持不支持DateIntegerWEEKNUM(date, return_type)返回特定日期在一年中的“第几周”。Return_type默认1是周一开始,2是周二开始(以此类推)。返回的是个整数。
YEAR支持支持支持DateIntegerYEAR(TODAY())如果当天是2019-07-09,则返回为2019。将日期转化返回为整数,在1970~9999之间。
YEARS支持支持支持DateIntegerYEARS(end_date,start_date)返回两个日期之间的年数差值。例如计算年龄时可用,只对年份数据进行计算,默认四舍五入后输入整数(时分秒不参与计算)。
TIMESTAMP支持不支持不支持LongTIMESTAMP()返回当前时间的时间戳。
文本CONCATENATE支持支持支持String,StringStringCONCATENATE(text1, text2)拼接多个字符串。
CONTAINS支持支持支持String,StringBooleanCONTAINS(text1,text2)判断字符串(text1)是否包含字符串(text2)的值。
返回值:
  • True:字符串(text1)包含字符串(text2)的值。
  • False:字符串(text1)没有包含字符串(text2)的值。
ENDS_WITH支持支持支持String,StringBooleanENDSWITH(text,startString)判断字符串(text)是否以特定字符串(startString)结尾。
返回值:
  • True:字符串是以特定字符串结尾。
  • False:字符串不是以特定字符串结尾。
FIND支持支持支持String,String,IntegerBooleanFIND(pattern, string, position)判断给定字符串从某个位置开始是否符合某种范式。
INDEX_OF支持支持支持String/List,StringIntegerINDEX_OF(string, search)在第一个文本字符串中查找第二个文本字符串,并返回第二个文本字符串的起始位置在第一个字符串中出现的起始位置。返回0则表示未查找到。
JOIN支持支持支持Set,StringStringJOIN(v, sep)将一个集合对象以指定分隔符拼接为一个字符串。
LEFT支持支持支持String,IntegerStringLEFT(text,[num_chars])将一个字符串取最左的几位数,num_chars可选,不填写默认是1。例如LEFT("阿里巴巴",2),返回的是阿里。
LENGTH支持支持支持String/ListIntegerLENGTH(string)字符串长度或列表中元素个数。
LOWER支持支持支持StringStringLOWER_CASE(string)将一个文本字符串中的所有字母转换为小写字母。
MID不支持支持不支持String,Integer,IntegerStringMID(string, startindex, endindex)返回从第一个字符串的begin开始长度为len的内容,begin必填,若len不填写,表示最后位置。
REPLACE支持支持支持String,String,StringStringREPLACE(string, search, replacement)将第一个字符串中出现的所有第二个字符串内容,替换为第三个字符串的内容。
RIGHT支持支持支持String,IntegerStringRIGHT(text,[num_chars])将一个字符串取最右的几位数,num_chars可选,不填写默认是1。例如RIGHT("阿里巴巴",2),返回的是巴巴。
SPLICE支持支持支持String,String,StringStringREPLACE(string, search, replacement)将第一个字符串中出现的所有第二个字符串内容,替换为第三个字符串的内容。
SPLIT支持支持支持StringList<String>split("abc")=["a","b","c"]拆分字符串为数组。
STARTS_WITH支持支持支持String,StringBooleanSTARTSWITH(text,startString)判断字符串(text)是否以特定字符串(startString)开始。
返回值:
  • True:字符串是以特定字符串开始。
  • False:字符串不是以特定字符串开始。
SUBSTRING支持不支持支持String,Integer,IntegerStringSUBSTRING(string, startindex, endindex)返回从第一个字符串的startindex到endindex位置的内容,startindex必填,若endindex不填写,表示最后位置。
TEXT支持支持支持NumberStringTEXT(number)将给定数据转换为字符串。
TO_DATETIME支持支持支持StringDateTO_DATETIME("2020-10-09 08:09:58")根据输入的年月日和时间值,返回一个日期时间类型数据。参数需为文本类型,输出为日期时间类型。
TO_NUMBER支持支持支持StringNumberTO_NUMBER(string)将文本转换为数值,例如:
  • TO_NUMBER("1")=1
  • TO_NUMBER("1.1")=1.1
TRIM支持支持支持StringStringTRIM(string)删除字符串首尾的空格,但是会保留字符串内部作为词与词之间分隔的空格。
UPPER支持支持支持StringStringUPPER_CASE(string)将一个文本字符串中的所有字母转换为大写字母。
UUID支持支持支持StringUUID()将参数 number向上舍入随机生成一个唯一标识符,标识符长度为XX位。
逻辑AND支持不支持支持BooleanBoolean(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支持支持支持ObjectBooleanS_EMPTY(object)判断字符串、结构对象等是否为空。
IS_NULL支持支持支持String, ObjectBooleanIS_EMPTY(object)判断字符串、结构对象等是否为空。
IS_NUMBER支持支持支持StringBooleanIS_NUMBER(fieldName)判断文本值是否为数字。
返回值:
  • True:文本是数字。
  • False:文本不是数字。
NULL_VALUE支持支持支持动态类型动态类型NULLVALUE(value, defaultValue);NULLVALUE(amount, 10)=10如果value为null,返回defaultValue。
OR支持不支持​支持BooleanBoolean(express1) OR (express2)表达式或。
数字ABS支持支持支持NumberNumberABS(number)返回入参的绝对值,可使用整数、浮点等数值字段、常量或表达式参与计算。
AVERAGE支持支持支持NumberNumberAVERAGE(number1,number2,…)返回参数的平均值(算术平均值),可使用整数、浮点等字段以及数值。
CEIL支持支持支持NumberNumberCEIL(number)将参数number向上舍入。
FLOOR支持支持支持NumberNumberFLOOR(number)将参数number向下舍入。
FORMAT_NUMBER支持不支持​支持Number,IntegerStringFORMAT_NUMBER(num1,quantize)将数字格式转化为指定格式文本,第二个参数是精度,表示小数点后的位数;FORMAT_NUMBER([数字字段],quantize),默认进行四舍五入。比如 FORMAT_NUMBER(3.1415926,4)="3.1416"。
FORMAT_NUM不支持支持不支持Number,StringStringFORMAT_NUM(num1,pattern)将数字格式转化为指定格式文本,第二个参数为转化模式,默认进行四舍五入。比如FORMAT_NUM(3.141526,"x.xxxx")="3.1416"。
MAX支持支持支持NumberNumberMAX(number1,number2,…)返回一组数值中的最大值。
MIN支持支持支持NumberNumberMIN(number1,number2,...)返回一组值中的最小值。
POWER支持支持支持​Number,IntegerNumberPOWER(number, power)number为数值型,power为基数乘幂运算的指数(power必填)。
RANDOM支持支持支持FloatRANDOM()0~1的随机浮点数。
RANDOM_INT支持支持支持IntegerIntegerRANDOM_INT(max)0~max的随机整数。
ROUND支持支持支持Number,IntegerNumberROUND(number, quantize)根据指定精度对number进行四舍五入,比如ROUND(3.1415926, 4) = 3.1416; ROUND(3.5, 0)=4。
SUM支持支持支持NumberNumberSUM(number1,number2,...)返回入参的求和值,可使用整数、浮点等字段以及数值。
流程WF_PROCESS_INSTANCE_ID不支持不支持支持StringWF_PROCESS_INSTANCE_ID()获取运行时当前流程实例ID。
WF_BUSINESS_KEY不支持不支持支持StringWF_BUSINESS_KEY()获取运行时当前流程实例业务Key。
WF_START_USER_ID不支持不支持支持StringWF_START_USER_ID()获取运行时当前流程实例发起人ID。
WF_TASK_ID不支持不支持支持StringWF_TASK_ID()获取运行时当前流程实例上下文任务实例ID。
WF_TASK_ASSIGNEE不支持不支持支持StringWF_TASK_ASSIGNEE()获取运行时当前流程实例上下文任务处理人ID。
其他MD5_32支持不支持不支持StringStringMD5_32("xxxx")返回由一组字符串共同生成的加密值,返回长度为32。
CLONE_DEEP不支持支持不支持动态类型动态类型CLONE_DEEP(obj)对一个变量进行深拷贝并返回相同数据类型的值。
FORMAT_OBJECT不支持支持不支持对象类型StringFORMAT_OBJECT(obj)将对象类型的变量转为对应的JSON数据字符串。