kettle的命名参数接口NamedParams实现与Job命名参数的传递和使用实现

kettle执行Job流程时可以设置命名参数(Parameters)。命名参数的接口为NamedParams,其默认实现为NamedParamsDefault类,Job类实现该接口,并委托NamedParamsDefault实现具体方法。

kettle的命名参数接口NamedParams实现与Job命名参数的传递和使用实现_第1张图片

命名参数接口NamedParams的实现类:

kettle的命名参数接口NamedParams实现与Job命名参数的传递和使用实现_第2张图片

默认实现类NamedParamsDefault:

kettle的命名参数接口NamedParams实现与Job命名参数的传递和使用实现_第3张图片

默认实现类NamedParamsDefault中Map类型的params属性,是HashMap对象,用来保存变量(字符串键值对)。命名参数的操作比较简单就是对该Map属性的put,get和ketset的列出,合并的话就是查看Map的key不存在的就put。单个命名参数对象封装为OneNameParam对象包含四个属性(key,description,defaultValue,value)。

https://blog.csdn.net/shy_snow/article/details/105781793

Job实现了NamedParams接口,在内部保存一个NamedParamsDefault对象并将NamedParams接口的方法实现都调用该NamedParamsDefault对象的对应方法实现。

kettle的命名参数接口NamedParams实现与Job命名参数的传递和使用实现_第4张图片

 

命名参数的设置和获取:

界面设置了命名参数并执行Job时,参数被设置到JobExecutionConfiguration对象中并和Job对象一起以Xml的形式发送到AddJobServlet流程增加接口。在从xml恢复成Job对象和JobExecutionConfiguration之后遍历命名参数并设置到流程元数据对象JobMeta中,并使用activateParameters方法激活命名参数(就是放到Variables里去,在environmentSubstitute变量解析的时候能获取到.参照另一篇kettle变量实现有解释https://blog.csdn.net/shy_snow/article/details/105564107)。

kettle的命名参数接口NamedParams实现与Job命名参数的传递和使用实现_第5张图片

activateParameters方法没有做统一的实现, 在JobMeta中是覆盖了变量(Variables)的值。

你可能感兴趣的:(开源软件kettle)