在 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有
ID 和 TYPE 作为输入列。
地图使用来自 CSV 的 ID 创建一个 Soap XML(字符串)消息,并将该字符串传递给 tSoap 组件。
tSoap 组件触发 Web 请求,该请求将响应发送到下一个组件。然后将该数据写入 CSV。
问题是来自输入 CSV 的 TYPE 没有通过以与 SOAP 响应数据合并。只有响应数据似乎可以访问。
我看过 tBufferInput / tBufferOutput 和 tFlowToIterate,但它们似乎适用于 tSoap 组件不依赖于主流输入的情况。
有谁知道可以使用哪些组件来实现合并?
谢谢
如果您将需要重用的数据输出到 tHashOutput 组件,您应该能够将您的数据与 tSoap 的响应输出重新连接,假设响应中有一些自然连接元素。
我最终解决了这个问题:
在 tMap 的输出和 tSoap 的输入之间放置一个新组件 - tSetGlobalVar
在 tSetGlobalVar 中,您可以创建一个新行,将输入列(值)映射到您指定为 'Key' 的命名变量。
例如。键 = "ID",值 = row11.ID
tSetGlobalVar 的输出然后进入 tSoap 组件。
tSoap 的输出进入一个新的 tMap。
在这个新的 tMap 中是来自先前 tSoap 组件的 Body 列,它映射到一个输出列。为了访问当前 flow/iteration 的存储 "ID" 变量,我创建了一个新的输出列,而不是映射来自输入的任何列,而是使用 (String)globalMap.get("ID");这会将值插入回流中。
我有一个 Talend 作业当前执行以下操作:
输入CSV --Main--> tMap --Output--> tSoap --Main--> 输出CSV
输入的CSV有 ID 和 TYPE 作为输入列。
地图使用来自 CSV 的 ID 创建一个 Soap XML(字符串)消息,并将该字符串传递给 tSoap 组件。
tSoap 组件触发 Web 请求,该请求将响应发送到下一个组件。然后将该数据写入 CSV。
问题是来自输入 CSV 的 TYPE 没有通过以与 SOAP 响应数据合并。只有响应数据似乎可以访问。
我看过 tBufferInput / tBufferOutput 和 tFlowToIterate,但它们似乎适用于 tSoap 组件不依赖于主流输入的情况。
有谁知道可以使用哪些组件来实现合并?
谢谢
如果您将需要重用的数据输出到 tHashOutput 组件,您应该能够将您的数据与 tSoap 的响应输出重新连接,假设响应中有一些自然连接元素。
我最终解决了这个问题:
在 tMap 的输出和 tSoap 的输入之间放置一个新组件 - tSetGlobalVar
在 tSetGlobalVar 中,您可以创建一个新行,将输入列(值)映射到您指定为 'Key' 的命名变量。 例如。键 = "ID",值 = row11.ID
tSetGlobalVar 的输出然后进入 tSoap 组件。
tSoap 的输出进入一个新的 tMap。
在这个新的 tMap 中是来自先前 tSoap 组件的 Body 列,它映射到一个输出列。为了访问当前 flow/iteration 的存储 "ID" 变量,我创建了一个新的输出列,而不是映射来自输入的任何列,而是使用 (String)globalMap.get("ID");这会将值插入回流中。