2014-02-21 61 views
0

在Oracle數據庫中,我在Id和Name中獲得了一個客戶表,並且一些customerstuff表都與一個關鍵字相關聯。 利用Oracle WCF適配器在BizTalk需要建立與所有的客戶文件,並有東西 像這樣:在他們在BizTalk中循環

<Root> 
    <Customers> 
    <Customer> 
     <Id>1</Id> 
     <Name>A</Name> 
     <Stuff1> 
     <data> 
     . 
     . 
     </data> 
     </Stuff1> 
     . 
     . 
     <Stuff6> 
     <data> 
     . 
     . 
     </data> 
     </Stuff6> 
    </Customer> 
    <Customer> 
    <Id>2</Id> 
     <Name>B</Name> 
     <Stuff1> 
     . 
     . 
     . 
     </Stuff6> 
    </Customer> 
    </Customers> 
</Root> 

我開始了一個選擇所有的客戶,並在編排我環路,從每個customerstuff表中選擇當前客戶的密鑰,讓我爲結果文件中的第一個客戶節點準備好所有數據。

問題:我該如何構建結果文件?我必須將當前客戶/ customerstuff數據添加到結果文件中,然後在保留結果文件的同時執行新循環,那麼在BizTalk中如何執行此操作?

回答

0

這可能與自定義XSLT,但我不確定沒有看到有關輸入和輸出模式的更多細節。

如果你去用循環的方式,這將需要3個消息

  • 輸出消息(你的最終輸出)
  • 電流輸出佔位符消息(相同的架構作爲您的最終輸出)
  • 客戶的東西(你想追加到輸出的數據給定通過循環)

    和一個地圖有兩個消息對一個(或一些基於XPATH的操作):

爲每個客戶

  • 創建「客戶資料」
  • 拷貝輸出信息給電流輸出佔位符
  • 執行地圖即以客戶的東西,電流輸出佔位符消息作爲輸入和地圖「輸出消息」
+0

這就是我正在做的,但「複製輸出消息到當前輸出佔位符」必須在ConstructMessage形狀中完成希望正在創建一個新的輸出消息,丟失以前的版本,或者我是否缺少什麼? –

+0

它可以丟失輸出消息,因爲必須在第三步重建消息 – yieldvs

0

嘗試在sql server中使用類似於「for xml」的東西,當您讀取它的數據時f使用查詢或存儲過程。在oracle中,你可以使用dbms_xmlgen包返回結果集爲xml:

select dbms_xmlgen.getxml('select * from emp where rownum < = 2')xmlstr from dual;

+0

這是否適用於BizTalk中的Oracle WCF適配器? –

+0

它應該工作,使用此查詢創建一個存儲過程並使用該存儲過程來生成模式。 –