变量与赋值
# 1 变量介绍
一个逻辑流可以定义多个变量的声明,为了便于理解,用户可以把逻辑流的变量类比为Java中的方法所在类中定义的变量。
# 1.1 如何声明变量
打开逻辑流属性配置界面, 变量定义模块可以点击右上角加号增加变量;选中一条变量数据后,可点击右上角删除图标删除该变量。
# 2 赋值
# 2.1 赋值图元介绍
赋值图元提供了对变量赋值的功能、可以对一个或多个可赋值变量进行赋值。
其中可赋值变量包括:已定义变量、已定义变量属性(当变量是SDO DataObject、Java对象、数据实体时)、未定义变量、未定义变量属性(当变量是SDO DataObject、Java对象、数据实体时)。
赋值图元中左值通常为一个可赋值变量;右值类别共有三种,说明如下:
(a)常量:表示右值赋给左值的是常量。此时赋值方式必须为"传值"。 右值为常量的情况下,不允许不输入任何值;Studio会做编译检查。 例如左值的类型是字符串,右值是"5",相当于左值 = "5"。 变量:右值是值对象的名称或者引用路径,相当于左值=name。 例如name、name[1]、name.0、user/age等。 此时赋值方式支持"传值"和"传引用"2种。
(b)传值:变量必须实现序列化或者提供clone的功能;传引用:相当于左值和右值指向同一个对象的引用,如果其中任何一个的修改都会同时影响到左值和右值。
(c)表达式:将单行表达式结果赋值给左值,相当于id=(name==age)。此时赋值方式无意义。 Java表达式为一行JAVA表达式,返回值必须是布尔类型。例如:name.equals("pimeton")。在Java表达式中,可以使用隐含变量。访问当前逻辑流上下文中的数据,逻辑流上下文隐含变量:context; 访问会话上下文中的数据,会话上下文隐含变量:sessionContext 这两个隐含变量均实现了IDataContext接口,可以使用该接口提供的一系列get方法来获取值。
根据"值类别"不同,分别输入字符串、变量名称或Java表达式。
注意:
未定义变量只有在运行的时候才知道左值的类型,将会根据右值的类型为左值进行赋值;
如果左值是一个已经定义过的变量,右值需要与左值是相同类型或者其子类型,
如果类型不匹配,运行过程中将会抛出运行期异常(ClassCaseException)。
用户如果希望给变量赋值空字符串或者null,可以选择右值类别为"表达式",空字符串输入"",空对象输入null。
# 3 使用变量与赋值
实现变量赋值通常有两种方式:使用赋值图元进行赋值操作;使用脚本图元进行赋值操作。
# 3.1 简单类型赋值
# 3.1.1 字符串、日期、数字等类型赋值
对于简单类型变量进行赋值,如果左值与右值是同一数据类型,可以直接在写在对应位置。
示例一:如何使用基础类型变量赋值?
(1)使用赋值图元
a.变量定义
如下图:定义三个基本类型返回值,分别是out1(字符串)、out2(日期)、out3(数字类型),然后使用赋值图元进行赋值后执行逻辑流获取返回结果。
b.变量赋值
out1是字符类型,右值可直接写字符串即可,值类型选择常量,赋值方式为传值。
out2为日期类型,右值使用表达式new Date()获取当前时间为其赋值,值类型为表达式,赋值方式传引用。
out3为数字类型,右值可直接输入数字即可,值类型选择常量,赋值方式为传值。
c.执行调试
执行该逻辑流并查看返回结果。
(2)使用脚本图元
使用脚本图元进行简单类型赋值,只需遵循groovy语法即可。
此处延用上述案例,返回值配置不变,替换赋值图元为脚本图元,在脚本图元中对其直接赋值。赋值完成后,点击执行图标执行逻辑流即可查看简单类型赋值结果。
# 3.2 对象类型赋值
# 3.2.1 SDO对象类型赋值
对于对象类型赋值,数据类型一致的两个实体可直接使左值等于右值即可;也可对某个实体对象中的属性进行赋值,通过XPath:User/name给User对象中的name属性赋值。
示例二:如何使用对象类型变量赋值?
(1)使用赋值图元
a.变量定义与赋值
如下图:定义两个相同数据类型的变量params
和返回值project1
,首先使用赋值图元对变量params中的属性字段赋值,再将params
对象赋值给返回值project1
即可。
b.执行调试
完成上述配置后,执行逻辑流即可查看实体类型赋值结果。
(2)使用脚本图元
此处延用上述前提配置,变量与返回值不变,在脚本图元中对其直接赋值。赋值完成后,执行逻辑流即可查看对象类型赋值结果。
# 3.3 数组对象赋值
# 3.3.1 Array数组赋值
数组对象赋值目前支持以下2种格式。
1.下标方式:
采用 []
,下标从1开始。例如有一个数组array
,值为["男","女","未知"]
,使用array[1]
即可取出数组中的第一个元素男
。
2.打点方式:
采用 .
方式,下标从0
开始。如username
为数组,给第一个元素赋值,采用打点方式为username.0
。
说明:
如果左值是List类型,右值是Array;或者左值是Array,右值是List,这样的赋值都是传值。
另外如果左值是Array,右值也是Array,这样的赋值也是传值。
示例三:如何使用数组对象类型赋值?
(1)使用赋值图元
a.变量定义与赋值
如下图:定义两个相同String数据类型的数组arrayOut
和arrayOut2
,首先使用赋值图元对返回值数组arrayOut以下标方式赋值,再将返回值数组arrayOut2以打点方式赋值即可。
b.执行调试
完成上述配置后,点击执行图标执行逻辑流即可查看实体类型赋值结果。
(2)使用脚本图元
此处延用上述前提配置,返回值设置不变,替换赋值图元为脚本图元,在脚本图元中对其直接赋值。赋值完成后,执行逻辑流即可查看数组对象类型赋值结果。