整体说明

离线开发的任务中包含节点,节点支持设置“输入参数”,任务开发模式选中节点运行时,也可配置输入参数。此外,任务支持配置参数组,使用参数组中的参数。任务调度设置中,也支持设置参数。另外,如果使用了嵌套流节点,还会有嵌套流参数等。本小结对上述提到的参数的优先级进行说明。

任务开发模式运行

案例:一个任务引用了一个参数组,其中变量str1=c,任务中包含一个SQL节点,代码为“select '${str1};'”,同时节点设置了输入参数,str1=a。开发模式选中该节点运行,在运行设置中设置了str1=b。

结果:SQL实际运行的是“select 'a'”。

说明:这里参数的优先级为节点内的参数优先级最高,运行时设置的其次,参数组的优先级最低。

专项说明:参数优先级 - 图1

专项说明:参数优先级 - 图2

专项说明:参数优先级 - 图3

任务调度运行

案例:一个任务引用了一个参数组,其中变量str1=c,任务中包含一个SQL节点,代码为“select '${str1};'”,同时节点设置了输入参数,str1=a。调度设置中,设置了str1=b。

结果:SQL实际运行的是“select 'a'”。

说明:这里参数的优先级为节点内的参数优先级最高,调度设置的其次,参数组的优先级最低。

专项说明:参数优先级 - 图4

任务开发模式运行嵌套流节点

嵌套流节点支持循环执行,并设置“循环参数”,开发模式运行时,会按照如下优先级生成循环参数的参数取值:循环参数中的参数固定值>输入参数>开发模式运行设置的参数。

比如下方节点的设置,str1=1,str2=${str22},str2=${str33},并设置了输入参数,str22=2,开发模式运行时,设置str22=0,str33=3,则循环参数最终的取值为:str1=1,str2=2,str3=3。

嵌套流节点的“循环参数”,以及当前任务“引用参数组的参数”,设置的“嵌套流参数”,会按照“循环参数”〉“嵌套流参数”>“引用参数组的参数”的优先级,合并得到参数,以最高优先级传递给被引用的任务,优先级高于任务内节点内设置的参数,高于引用的参数组中的参数。

专项说明:参数优先级 - 图5

开发模式运行时,会按照上面的优先级,生成循环参数中的参数。

案例: 被嵌套任务flow1,引用了一个参数组,其中变量str7=7,任务中包含一个SQL节点,节点设置了输入参数,str6=6。SQL节点代码如下:

SELECT '${str1}' as str1,
'${str2}' as str2,
'${str3}' as str3,
'${str4}' as str4,
'${str5}' as str5,
'${str6}' as str6,
'${str7}' as str7;

任务flow2,引用了一个参数组,其中变量str5=5。任务中包含嵌套流节点job1,并引用了已提交上线的flow1。

job1设置了循环执行,并设置了循环参数,str1=1,str2=${str22},str2=${str33},并设置了输入参数,str22=2,嵌套流参数str4=4。

开发模式选中job1运行,在运行设置中设置了str33=3。

结果:查询结果中,st1-str7,为1-7。