Loops Talend:运行条件VS迭代
如果我使用一个'Run If'条件,它也不能作为一个'Iterate'工作吗 我有一个变量_X,它允许许多值(在“tflowtointerate”组件中定义)。然后,根据变量_Y的值,我想将变量_X的所有值传递给另一个作业(4个可用作业之一)。 因此,我希望在每个作业之前使用“Run If”条件,但我希望通过所选作业迭代变量X的值Loops Talend:运行条件VS迭代,loops,if-statement,talend,Loops,If Statement,Talend,如果我使用一个'Run If'条件,它也不能作为一个'Iterate'工作吗 我有一个变量_X,它允许许多值(在“tflowtointerate”组件中定义)。然后,根据变量_Y的值,我想将变量_X的所有值传递给另一个作业(4个可用作业之一)。 因此,我希望在每个作业之前使用“Run If”条件,但我希望通过所选作业迭代变量X的值 我该怎么做呢?我有点困惑。您想使用变量Y来选择要调用的subjob,但是您想向该subjob传递一个变量X,该变量X从TflowToItem流(因此在每次迭代时都会更
我该怎么做呢?我有点困惑。您想使用变量Y来选择要调用的subjob,但是您想向该subjob传递一个变量X,该变量X从TflowToItem流(因此在每次迭代时都会更改) 据我所知,恐怕不可能。您可以通过一个小技巧从迭代信号中抛出不同的RunIf信号,但是您不能迭代子作业。子作业将在每次迭代时使用单个值X调用,也不会调用集合。如果需要,恐怕您必须稍微更改一下设计(例如,在单个字符串上串联X的可能值,在子作业中分解它并在本地循环) 如果您想从一个迭代符号触发多个信号,可以使用未记录的“组件缓冲区”技巧。Talend团队可能并不乐于知道这一点,但它确实有效。其思想是使用代理迭代信号的虚拟组件
/--->RunIf--->[stuff1]
/
/
tRowGenerator---row--->tFlowToIterate---Iterate--->tWarn--->RunIf----->[stuff2]
\
\
\--->RunIf--->[stuff3]
tWarn
(例如,您可以用来打印详细调试)将充当代理。因此,RunIf将在每次迭代时进行评估。“stuff”可以是subbob,但它将获得X的当前值,而不是整个集合。“您希望使用变量Y来选择要调用的subbob,但随后您希望向该subbob传递一个变量X,该变量X从一个tflowtointerate(因此在每次迭代时都会发生变化)?”是的,就是这样。我想我的问题是,正如你所说,当我试着重复做一份儿童工作时。现在,我已经将每个子作业复制到父作业中,并且在“If语句”之前有一个空的“tJava”,用作伪作业,如您所说。显然,它正在发挥作用。再次感谢:)