在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 Transmit 與 XML Receive
按下Configure...
按鈕,設定Connection String、Target Namesapce、Request Document Root Name