在 Talend 中,您如何保留提供给 tSoap 的输入值,以便您可以将它们用于 Soap 响应?

In Talend, how do you keep input values provided to tSoap so that you can use them with the Soap response?

我有一个 Talend 作业当前执行以下操作:

输入CSV --Main--> tMap --Output--> tSoap --Main--> 输出CSV

输入的CSV有 IDTYPE 作为输入列。

地图使用来自 CSV 的 ID 创建一个 Soap XML(字符串)消息,并将该字符串传递给 tSoap 组件。

tSoap 组件触发 Web 请求,该请求将响应发送到下一个组件。然后将该数据写入 CSV。

问题是来自输入 CSV 的 TYPE 没有通过以与 SOAP 响应数据合并。只有响应数据似乎可以访问。

我看过 tBufferInput / tBufferOutput 和 tFlowToIterate,但它们似乎适用于 tSoap 组件不依赖于主流输入的情况。

有谁知道可以使用哪些组件来实现合并?

谢谢

如果您将需要重用的数据输出到 tHashOutput 组件,您应该能够将您的数据与 tSoap 的响应输出重新连接,假设响应中有一些自然连接元素。

我最终解决了这个问题:

  1. 在 tMap 的输出和 tSoap 的输入之间放置一个新组件 - tSetGlobalVar

  2. 在 tSetGlobalVar 中,您可以创建一个新行,将输入列(值)映射到您指定为 'Key' 的命名变量。 例如。键 = "ID",值 = row11.ID

  3. tSetGlobalVar 的输出然后进入 tSoap 组件。

  4. tSoap 的输出进入一个新的 tMap。

  5. 在这个新的 tMap 中是来自先前 tSoap 组件的 Body 列,它映射到一个输出列。为了访问当前 flow/iteration 的存储 "ID" 变量,我创建了一个新的输出列,而不是映射来自输入的任何列,而是使用 (String)globalMap.get("ID");这会将值插入回流中。