在Talend中,如何保持为tSoap提供的输入值,以便您可以将它们与Soap响应一起使用?

时间:2015-02-05 11:43:41

标签: csv soap talend

我有一个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组件不依赖主流输入的情况。

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

谢谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我最后解决了这个问题:

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

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

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

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

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