【问题标题】:Pass variable to CtalendJob from route, create file and store it将变量从路由传递给 CtalendJob,创建文件并存储它
【发布时间】:2022-01-03 20:16:10
【问题描述】:

大家新年快乐:)

我是 Talend studio 的新用户,这是我第二次使用 ESB 指挥,我认为我在这里做错了。

所以,一开始我从一个 SFTP 收到一个文件,然后我将它交给另一个 SFTP。 这里没有问题。 其次,发送此文件后,我需要创建第二个文件,取第一个发送的名称,重命名并将其存放到目标 SFTP。

My Route

所以对于第一个组件(cProcessor),我设置了 2 个变量:

  • exchange.setProperty("target_directory", targetDirectory);
  • exchange.setProperty("x_filename_trg", trgFileName); 在这里,我检索了正确的文件名 (xxx.trg) 和正确的 targetDirectory。

现在我正在使用 cTalendJob 来调用可以创建空文件的作业:

Inside cTalendJob

为了恢复我的路线变量,在我的 cTalendJob 中,我检查了“使用路线的上下文” 在我的 tRouteInput 中,我设置了这样的架构 cRouteInput

然后我尝试在文件夹中创建新文件: Create new file

目前我的问题是:我的变量没有传输到我的 cTalendJob。如何正确传输和使用它们? File Directory + FileName 我可以将此文件发送到 cTalendJob 上的 SFTP 还是需要从我的路由发送?

感谢您阅读我的内容并帮助我:)

【问题讨论】:

  • 抱歉,忘了说“嗨” :)

标签: java talend jobs esb


【解决方案1】:

您是否尝试过使用 cSetHeader 而不是 cProcessor 来将变量作为标题而不是属性传递?

【讨论】:

  • 感谢您的回复,我来晚了,但我解决了这个问题。
  • 在我的 CtalendJob 之前,我使用 cSetheader 将变量传递给作业(检查 cTalendJob 中的传播标头)然后在我的 cTalendJob 中我使用 RouteInput => tJavaRow(设置 globalMap 变量)=> tFileExist(检查我的新文件是否存在)=> tFileInputDelimited => tFileOutputDelimited 创建新文件。在 cTalendJob 之后的路由结束时,只需使用 cFtp 发送这个新文件。谢谢你的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 2016-10-06
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多