我在PDI中运行的作业是将数据从不同的源传输到不同的目标,然后返回特定系统。这份工作有很多孩子的工作。让我们称之为Job MasterJob1。
我们有相同的系统运行用于其他目的。因此,我想在PDI中复制该作业。在这里,我只需要更改一些设置。让我们称之为MasterJob2。
为了使整个作业可以使用不同的变量(也包括主作业的父作业,子作业等),我们正在使用" Set Variables"。在这里,我们有很多不同的变量。让我们说,一个变量叫做TestVar。目前,"可变范围类型" MasterJob1中的这些变量始终设置为"在Java虚拟机中有效"。
根据PDI文档http://wiki.pentaho.com/display/EAI/Set+Variables,这意味着,变量在虚拟机中随处可用。根据我的理解,这意味着,如果我复制工作并让"可变范围类型"就像它一样,Variable TestVar可以由MasterJob1编写,但也可以被MasterJob2覆盖。
我明确地希望避免MasterJob1可以覆盖MasterJob2的变量,反之亦然。但是,在MasterJob1中设置的变量必须在MasterJob1中随处可用,并且MasterJob2中的变量必须在MasterJob2中随处可用。因此,我继续阅读文档。它表示存在"可变范围类型" "在根作业中有效"。我的假设是正确的,这是我需要使用的可变范围类型吗?
不幸的是,我没有那么多经验,我希望你能告诉我这是不是正确的方法?!创建测试环境对我来说需要几天时间。因此,我希望你能给我一个简单的"是的,去吧#34;或正确的解决方案。
答案 0 :(得分:2)
你的假设是正确的。
避免在服务器上使用Valid in the virtual machine
作业,尽管在开发PC上进行调试非常方便。
当转换(或作业)必须将值返回给调用者时,请使用Valid in the parent job
。
极少使用Valid in the grand-parent job
,虽然我记得有些特殊时刻它很有用。
几乎所有时间都使用Valid in the root job
。