服务编排设计器内节点说明
您可以调用依赖限界上下文中的应用服务方法、轻应用内您自定义的服务方法及系统内置的服务方法。节点名称将默认为服务方法名称,您需要在调用节点内对入参赋值,并为方法输出绑定变量。
对应用服务方法调用的节点中,您还能通过绑定变量的方式获取该服务调用返回值中的code、message信息。
服务编排节点 | 说明 |
调用 |
|
分支 | If用于为流程创建多个分支流程,在节点中,您可以自定义分支名称,并通过表达式来定义分支条件,表达式的最终值类型需为Boolean。当不满足任何分支条件时,系统将会执行默认分支。 添加后可在属性面板上对每个分支进行设置,设置内容包括分支的条件、每个分支条件中通过组合一个或多个变量及条件运算符构成复杂条件编排。 |
循环 |
|
语句 |
|
异常 | 异常抛出:
|
自定义脚本
变量调用
自定义脚本支持调用变量,变量范围包括:
服务编排内定义的流程变量。
服务编排内支持调用的静态变量。
变量调用方式:$bw
作为Bizworks内置关键字,通过$bw.{变量名}
即可对Variable变量值进行读取或修改。对于类型为结构对象的变量,支持通过$bw.{变量名}.{字段名}
的方式调用变量内部的字段。
# 基础类型
// 修改
$bw.name="123"
//读取
String nameLocal = $bw.name
# 结构对象
$bw.user.name ="123"
String nameLocal = $bw.user.name
当静态变量和流程变量重名时,脚本中对变量的调用顺序和服务编排中相同,优先调用流程变量。
变量调用的注意事项
无法在自定义脚本中修改静态变量。例如:定义静态变量为
name
,$bw.name=222
是非法的,引擎不会执行该语句。无法添加或修改尚未定义的变量。例如:
用户未定义
age
变量,$bw.age=222
是非法的,引擎会跳过该语句的执行。用户未定义
age
变量,String age =$bw.age
,该语句执行后变量age
的值为null
。
循环节点中定义的迭代变量支持被自定义脚本内调用。例如:循环节点中,迭代变量是可以被其中的脚本节点通过
$bw.
变量名方式使用。不支持使用函数类关键字作为变量名,若将变量名定义为关键字如
CollectionUtils
,通过$bw.CollectionUtils
语句返回的是函数类,并不会返回用户自定义的变量值。脚本节点关键字如下:NumberUtils:数据计算函数类关键字。
LogicUtils: 逻辑计算关键字。
DateUtils : 时间函数。
CollectionUtils:集合函数。
用户在脚本中使用的所有流程变量必须在前序节点中进行初始化(赋初值或对内部字段赋初值),否则为变量赋值后仍可能产生变量未赋值的报错,或消费类型为结构对象的变量中的某个属性时会出现空指针问题。当前引擎暂不会代替用户完成结构对象的初始化操作。
BWEL函数调用
自定义脚本中支持调用服务编排内的BWEL函数,可使用$bw.函数类名.函数名(参数)
的对BWEL函数进行调用,具体函数名称及入参设置参见BWEL函数说明。也支持在函数中写Groovy表达式:
# 调用MAX函数,执行数学计算MAX函数
$bw.NumberUtils.MAX(1,2,3)
# 调用IF函数,执行复杂表达式
$bw.LogicUtils.IF(2+3>5,"22"+"444","44");
# 抛出异常,异常中包含code、message信息
$bw.ExceptionUtils.throwException([code:"400",message:"自定义异常抛出"]);
BWEL函数调用的注意事项
函数名称需要区分大小写。例如:使用MAX函数时写作
max
,会导致引擎无法识别该函数。无法对函数类进行赋值操作。例如:
$bw.LogicUtils.name = "111"
,该语句无法生效。不支持使用函数类关键字作为变量名,若将变量名定义为关键字如CollectionUtils,通过
$bw.CollectionUtils
语句返回的是函数类,并不会返回用户自定义的变量值。脚本节点关键字如下:NumberUtils:数据函数。
LogicUtils:逻辑函数。
StringUtils:文本函数。
DateUtils:时间函数。
CollectionUtils:集合函数。
ExceptionUtils:异常函数
Groovy使用约束
针对脚本运行时可能出现的安全风险,引擎对脚本允许引用的类做了一定的安全约束。
脚本节点中能够直接使用的类如下:
"com.google.common.collect.*", "java.util.*", "java.util.stream.*", "java.util.regex.*", "java.util.function.*", "java.lang.Math.*", "org.apache.commons.lang3.StringUtils"
脚本节点中允许导入的类如下:
"java.lang.Object", "java.lang.String", "java.lang.Boolean", "java.lang.StringBuffer", "java.lang.StringBuilder", "java.lang.Byte", "java.lang.Float", "java.lang.Integer", "java.lang.Long", "java.lang.Math", "java.lang.Short"
除去上述支持的类型和包外,其他类或者包都不得引入,引入后会导致引擎拒绝执行,脚本编译失败。
从数据源批量创建服务方法
在服务编排页面,单击从数据源批量创建。
在从数据源批量创建服务方法面板的左侧导航栏中,选中目标接口。
说明单次最多只能创建10个服务方法。
单击保存。
系统自动创建服务方法包括以下内容:
服务方法入参:服务方法的入参和接口的请求参数保持一致,包括参数名称、编码、参数类型、描述和必填。
服务方法出参:服务方法的出参和接口的响应参数保持一致,包括参数类型和描述。
中间变量:如果应用服务方法有出参,则系统会自动创建一个中间变量,类型与出参相同。
流程节点:系统自动生成一个开始节点、一个调用服务方法节点和一个结束节点,调用服务方法节点调用所选的接口,节点名称与应用服务方法名称相同,服务方法的入参作为参数传给接口,节点的出参赋值给中间变量。
结束节点:如果接口有响应参数,则系统会自动将
output
参数在结束节点赋值给服务方法的出参。
系统提示保存成功,您可以在服务方法页面查看所创建的服务方法。