[筆記][Biztalk]使用SQL Adapter讀取SQL的資料

在Biztalk的流程中,如果想要對資料庫做存取,可以使用SQL Adapter進行處理。以透過Stored Procedure讀取SQL資料為例,其處理步驟如下:

 

1.使用工具產生Schema

在Orchestration中要使用SQL Adapter呼叫Stored Procedure以讀取DB,會有資料要傳出去,也有資料要傳進來。因此,就需要建立兩個Schema以定義傳出及傳入的資料。在Biztalk的開發專案中,可以透過Wizard協助我們產生這些Schema。

在專案中使用Add Generated Items...以建立Wizard。

使用Add Adeapter Metadata建立Schema

選擇SQL Adapter作為產生來源

依據Wizard的指示,填入連線資訊、Namespace、Root Name,最後選取要呼叫的Stored Procedure。按下Generate按鈕產生執行Statement,並帶上所需參數。

Namespace需要明確的定義出不會重複的值,否則當數量一多,很容易忘掉之前的設定值,而設定出相同值得Namespace,這會讓Biztalk無法做出判斷,並產生Error。

最後,這個Wizard會產生一個Orchestration與一個Schema。該Schema中,會定義傳入與傳出的Message的結構。

2.設定 Port

因為對SQL的動作有傳入及傳出兩個方向,故建立Request-Response Port Type

再依據Shema定義的Request與Response,定義相對應的Message、Send Port、Receive Port。

3.傳入Stored Procedure參數

通常呼叫Stored Procedure都會有傳入參數,所以需要建立一個Request型別的Message,在該Message中載入Stored Procedure的傳入參數。

最簡單的方式,就是透過Message Assign的方式。透過XmlDocument物件載入帶有參數值的XML字串,再Assign給Request Message。

Message Assignment Shape的內容如下:

//載入XML字串
msgXmlDoc.LoadXml("<ns0:RequestRoot xmlns:ns0=\"http://SqlReadConfig\"><ns0:Usp_ReadConfigByKey ConfigKey=\"KeyABC\" /></ns0:RequestRoot>");
//Assign 給Request Message
msgConfigKey = msgXmlDoc;

4.設定實體Port

設定完成後,如果Build沒問題,就可以佈署到Server上了。接下來,就需要設定實體的Send Port。選擇Solicit-Response Send Port

Type選擇SQL,並設定Pipeline為XML TransmitXML Receive

按下Configure...按鈕,設定Connection String、Target Namesapce、Request Document Root Name


參考