kettle设置变量中变量范围的设置说明

kettle设置变量中变量范围的设置说明

变量类型的作用域范围

“设置变量”插件中的“变量类型”有四个选项

对应着四个不同的作用域范围"s"ystem, "r"oot, "g"randparent, "p"arent。

变量类型选项

作用域

作用域范围说明

在Java虚拟机中(Java Virtual Machine)

S系统级

凡是在一个java虚拟机下运行的线程都受其影响。

在根节点中(the root job)

R级

凡是在根作业下运行的都是生效的。

在父节点中(grand-parent job)

G级

在当前作业的父作业下是生效的。

在当前节点中(parent job)

P级

在当前作业下是生效的。

变量范围上 s > r > g > p, 变量范围重叠时取值的参考变量范围示意图。

变量范围示意图:

kettle如何实现同一个变量在不同的范围有不同的值呢?

简单来说就是在每个范围对象都有个Map保存着变量的值, 所以可以继承上一级范围的Map中的变量值;如果自己有设置变量值的话只设置在自己的Map中,不会去修改父节点Map中的值,这样就实现了会在当前范围Map内覆盖掉同名变量的值,而不会影响上级节点的变量。

比如jvm虚拟里设置了个环境变量,如果流程会把环境变量直接复制到根节点的变量Map里了,如果根节点范围有指定值,那就再把这个值覆盖到根节点的变量Map里来实现在根节点范围的变量值覆盖,而外面的环境变量值不会修改。

代码实现可以看这篇文章:

kettle的变量空间接口VariableSpace实现与委托模式_shy_snow的专栏-CSDN博客

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值