搜索本产品文档关键词
参数传递
所有文档
menu
没有找到结果,请重新输入

运维编排 OOS

参数传递

参数传递

一个执行在运行的过程中,会有三种参数的来源,如下所示:

参数来源 说明
全局输入参数 在创建模板时,你可以为模板添加全局输入参数
在创建模板执行时,你需要为模板的全局参数赋值,这些参数值构成了执行的全局输入参数
任务输入参数 不同的任务类型,有不同的输入参数,在创建模板时,你需要为每个任务的输入参数赋值。
在赋值时,你可以填写常量,也可以使用内置函数来引用全局参数或上游任务的输出参数。这些参数构成了任务的输入参数
任务输出参数 每个任务在运行后,会产生输出参数,输出参数可以作为后续任务的输入参数被引用

这些参数会对所有在运行中的任务可见。当发生参数同名的情况时,这些参数会互相覆盖,了解这些参数的优先级和覆盖规则,对正确运行模板就尤为重要。当然,你也可以利用这一覆盖规则,在执行过程中,动态的修改下游任务可见的参数值。

参数覆盖规则

参数覆盖规则如下:

当前任务输入参数 > 上游任务输出参数 > 全局输入参数

这一参数覆盖规则,和一般编程语言中的变量覆盖规则是一致的,容易理解且符合直觉。

以下是一个示例:

{
    // 全局参数
    "properties": {
        "arg": "v1",
    },
    "operators": [
        {
            "name": "我的任务_1"// 任务输入参数
            "properties": {
                "arg": "v2",  // 与全局参数同名,会覆盖全局参数
            }
        },
        {
            "name": "我的任务_2"// 任务输入参数
            "properties": {
                // 使用函数引用参数'arg'
                // 若上游任务'我的任务_1'输出参数包含arg=v3,将覆盖全局参数,读取到arg=v3
                "local": {"Ref": "arg"},
            }
        },
    ]
}
  1. 全局参数设置了arg=v1
  2. 我的任务_1执行时,任务的输入参数将覆盖全局参数,读取到arg=v2
  3. 假设,我的任务_1执行成功后,输出arg=v3
  4. 我的任务_2执行时,通过函数引用参数arg,此时,上游任务的输出参数优先级高于全局参数,因此读取到arg=v3
上一篇
执行概述
下一篇
执行管理