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