覆盖主要内容
版本: 6.1.0

变量

变量简介

提供一种在一处定义,多处使用的方案。定义好变量名以及对应的变量值后,之后在系统中直接使用变量名,系统运行时会自动解构出对应的变量值。变量使您的解决方案能够适应不断变化的环境。例如,如果数据库服务器在开发时与在生产中运行时不同,则将其设置为一个变量。

如何使用

如下例子,使用Dollar符号搭配英文花括号来表明这是一个变量

${VARIABLE_NAME}

甚至,引用变量还可以做字符串拼接

${ENVIRONMENT_HOME}/input/source-file.txt

变量定义

在UDI Studio中,我们可以在以下几处定义变量

  • 在系统中定义

点击系统左上角【设置变量】处,即可查看和编辑变量

系统初始存储有一些系统运行时所需的变量,可以在此处新增、删除、编辑变量。(这里不建议删除掉系统初始的变量)

  • 在项目中定义

用户在【添加新项目】或者【编辑项目】时都可以定义变量

用户可以在项目属性的【项目变量】表格中新增、删除、编辑变量

  • 在环境中定义

用户在【添加新项目】或者【编辑项目】时都可以定义变量

首先要在环境配置中,新建一个文件来存储变量

选择文件并【编辑】,即可在配置文件变量的表格中新增、删除、编辑变量

  • 在PIPELINE(转换)的运行配置中定义

PIPELINE的运行配置是编辑后端执行引擎相关的地方,在此处同样也可以定义变量,可以按照如下步骤打开

如下图,在Pipeline运行配置中,点击【变量】,即可新增、删除、编辑变量

  • 使用组件来定义

在PIPELINE(转换)或者WORKFLOW(作业)中也可以使用组件来定义变量

如下,在PIPELINE中使用【设置变量】组件来定义变量

在WORKFLOW中使用【设置变量】组件来定义变量

  • 在执行配置中定义

在PIPELINE或者WORKFLOW执行前,可以在执行配置中定义变量

如下PIPELINE的例子

变量等级

在使用过程中,难免出现在不同地方定义了相同的变量名,这样就会出现变量之间的覆盖,下面是在不同地方定义的变量所对应的等级

1. 在系统中定义(一级)

2. 在环境中定义(二级)

3. 在项目中定义(三级)

4. 在PIPELINE运行配置中定义(四级)

5. 在PIPELINE或WORKFLOW执行配置中定义(五级)

6. 在PIPELINE或WORKFLOW中使用组件定义(六级)

变量覆盖的原则:高级处定义的变量会覆盖掉低级处定义的变量,如在项目中定义的变量会覆盖掉在系统中定义的变量

变量使用案例

本案例通过使用变量分别从生产环境数据库、开发环境数据库来获取数据,并且输出到文本文件当中。

总体流程如下:

案例准备

准备两个Mysql数据库管理系统,分别是(127.0.0.1:3306)代表开发环境,(192.168.100.16:33061)代表生产环境。

在两个数据库管理系统中分别建立(udi-test)这个数据库,并在此数据库下面建立一张测试表(env

SQL语句可以参考:

CREATE DATABASE udi-test;

DROP TABLE IF EXISTS `env`;
CREATE TABLE `env` (
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`os` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`env` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

分别在开发环境以及生产环境的测试表(env)中插入测试数据

SQL语句可以参考:

INSERT INTO `env` VALUES ('这是开发环境', 'windows', 'dev'); # 开发环境

INSERT INTO `env` VALUES ('这是生产环境', 'linux', 'prod'); #生产环境

案例操作

定义变量

该步骤先在项目中定义好连接数据库的相关变量,如【数据库地址】、【用户名】、【数据库开放端口】,如下图:

表输入

该步骤用于从数据库中获取数据,在PIPELINE(转换)中添加【表输入】组件,开始编辑连接数据库的信息

如下图,在编辑数据库连接信息时,部分信息我们可以使用刚才定义好的变量来代替

编辑完后,可以测试能否成功连接数据库

如下图,数据库连接成功,表明我们刚才定义的变量有效

我们还需要在【表输入】组件编辑好查询语句,表明从数据库的那张表获取数据,这里我们将从测试表(env)中获取数据

文本文件输出

该步骤用来定义将数据库获取的数据输出到那个文本文件中,这里只需定义好输出文本的文件名即可

结果预览

按照上面的步骤编辑好组件后,点击【执行】,执行完毕后【文件库】会生成文本输出文件env.txt,点击【下载】来查看

本地打开env.txt文件,表明获取的数据来自开发环境

重新编辑变量

在项目中重新编辑变量,把变量的值改成生产环境相关的信息

重新执行PIEPLINE(转换),重新下载env.txt,结果为

表明获取的数据来自生产环境