Talend:在迭代中触发子作业

时间:2014-08-18 10:22:26

标签: talend

我有一个Talend工作,我试图重构迭代运行。原始作业会在prejob-> tJava中将值放入全局映射,然后fileInput使用该值打开文件(tFileInputDelimited)并在子作业中执行rowMain。 fileInput还有一个OnSubjobOk,它触发另一个fileInput,它有一系列rowMain进程。

我现在正在尝试重构这个工作,以便tJava prejob设置一个列表并将其添加到globalMap。然后我使用迭代器迭代到tJavaFlex,然后迭代到fileInput触发第一个subjob。但是,我不能从第一个subjob触发第二个subjob,并想知道如何从1迭代器迭代一系列的子作业。

我怎样才能设计这样的工作?

这是原始作业的示例。它使用了一个context参数来指定一个文件名,然后由“read demo”使用。我想遍历每个文件的所有子工作。作业需要完成第一个子作业,然后完成第二,第三和第四个子作业,然后再使用下一个文件名进行下一次迭代。如果没有提供,prejob只在文件名上设置默认值,并且不是必需的。

我尝试过使用tIterate进入“read demo”组件,但无法根据需要使用它。

original job

1 个答案:

答案 0 :(得分:1)

而不是OnSubJobOK只需使用tFlowToIterate - >迭代链接以触发读取价格CSV。

请注意,在作业中无法轻易更改读取价格CSV文件名。当你添加一个迭代链接时,整个readCSV将成为subjob的一部分,动态更改它是一件痛苦的事。你还有几个选择:

  • 将读取的CSV部分移动到接受文件名的单独子工作站。
  • 使用fileInputStream读取文件,可以动态更改此fileInputStream。
  • 迭代Tjava并使用On * OK组件触发当前读取的CSV。