2015-10-27 67 views
0

我不得不處理這些步驟:PDI:如何處理多行作爲一個單獨的XML值

- order (table input) 
    - id 

- order row (table input) 
    - order_id 
    - row_id 
    - product_id 
    - quantity 

- a soap web service to call 

我要傳遞的所有訂單的行對於給定的順序每個順序執行的SOAP網絡服務。

舉例來說,如果我有3個訂單,我必須執行該Web服務3次,並在每次執行我要傳遞給SOAP網絡服務的所有訂單的行作爲XML的說法是這樣的:

<rows> 
    <item> 
    <order_id>1</order_id> 
    <row_id>1</row_id> 
    <product_id>123</product_id> 
    <quantity>12</quantity> 
    </item> 
    <item> 
    <order_id>1</order_id> 
    <row_id>2</row_id> 
    <product_id>456</product_id> 
    <quantity>65</quantity> 
    </item> 
    ... and so on... 
</rows> 

我無法弄清楚如何設計轉換,以便它可以爲每個單一訂單執行soap web服務,將所有訂單的行作爲xml單值傳遞。

任何幫助? (很多預先感謝...)

回答

0

它看起來像你需要看看與數據集成包分發的例子。

查找到$ KETTLE_HOME /採樣/轉換/改造執行人

2個有用的步驟是「離結果行」和「複製行導致」將讓ü管理您的需求。

+0

非常感謝simar !!! – giates

+0

好吧,我已經看到了這個例子,但我不明白如何收集所有的行來創建一個單一的XML。我已經嘗試過使用xml輸出,但它爲每一行都創建了xml ... – giates

0

相同。

查看示例目錄的內部並找到「XML加入 - 創建多層XML文件」。

但還有另一種解決問題的方法。 U可以將所有片段轉儲到xml文件,然後在下一次轉換中再次加載文件。

+0

我試圖創建使用「trasformation executor」步驟調用子trasformation的第一個(父trasformation),父trasformation調用每個訂單的兒童轉變(所有的好處)。子變換然後是「獲取行」(訂單ID),並使用「表輸入」步驟過濾訂單行,這裏我嘗試用「xml輸出」步驟編寫所有行。父轉換然後加載xml文件,但如果我打印內容它不同於xml文件的內容,似乎是2 trasformations已異步執行... – giates

+0

你是正確的。轉換並行執行(異步)。 – simar

相關問題