参数传递
更新时间:2024-08-16
参数传递
一个执行在运行的过程中,会有三种参数的来源,如下所示:
参数来源 | 说明 |
---|---|
全局输入参数 | 在创建模板时,你可以为模板添加全局输入参数 在创建模板执行时,你需要为模板的全局参数赋值,这些参数值构成了执行的全局输入参数 |
任务输入参数 | 不同的任务类型,有不同的输入参数,在创建模板时,你需要为每个任务的输入参数赋值。 在赋值时,你可以填写常量,也可以使用内置函数来引用全局参数或上游任务的输出参数。这些参数构成了任务的输入参数 |
任务输出参数 | 每个任务在运行后,会产生输出参数,输出参数可以作为后续任务的输入参数被引用 |
这些参数会对所有在运行中的任务可见。当发生参数同名的情况时,这些参数会互相覆盖,了解这些参数的优先级和覆盖规则,对正确运行模板就尤为重要。当然,你也可以利用这一覆盖规则,在执行过程中,动态的修改下游任务可见的参数值。
参数覆盖规则
参数覆盖规则如下:
当前任务输入参数 > 上游任务输出参数 > 全局输入参数
这一参数覆盖规则,和一般编程语言中的变量覆盖规则是一致的,容易理解且符合直觉。
以下是一个示例:
JSON
1{
2 // 全局参数
3 "properties": {
4 "arg": "v1",
5 },
6 "operators": [
7 {
8 "name": "我的任务_1",
9
10 // 任务输入参数
11 "properties": {
12 "arg": "v2", // 与全局参数同名,会覆盖全局参数
13 }
14 },
15 {
16 "name": "我的任务_2",
17
18 // 任务输入参数
19 "properties": {
20 // 使用函数引用参数'arg'
21 // 若上游任务'我的任务_1'输出参数包含arg=v3,将覆盖全局参数,读取到arg=v3
22 "local": {"Ref": "arg"},
23 }
24 },
25 ]
26}
- 全局参数设置了
arg=v1
我的任务_1
执行时,任务的输入参数将覆盖全局参数,读取到arg=v2
- 假设,
我的任务_1
执行成功后,输出arg=v3
我的任务_2
执行时,通过函数引用参数arg
,此时,上游任务的输出参数优先级高于全局参数,因此读取到arg=v3