【问题标题】:In Talend, how do you keep input values provided to tSoap so that you can use them with the Soap response?在 Talend 中,您如何保留提供给 tSoap 的输入值,以便您可以将它们与 Soap 响应一起使用?
【发布时间】:2015-02-05 11:43:40
【问题描述】:

我有一个 Talend 工作,目前执行以下操作:

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

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

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

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

问题在于输入 CSV 中的 TYPE 没有传递到与 SOAP 响应数据合并。只有响应数据似乎可以访问。

我查看了 tBufferInput / tBufferOutput 和 tFlowToIterate,但它们似乎在 tSoap 组件不依赖于来自主流的输入的情况下工作。

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

谢谢

【问题讨论】:

    标签: csv soap talend


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我最终通过以下方式解决了这个问题:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-23
        • 1970-01-01
        • 1970-01-01
        • 2023-02-20
        • 2018-04-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多