[筆記][Biztalk]使用SQL Adapter

SQL Adapter是用來當作Biztalk與SQL Server之間的橋樑,可以透過它進行資料庫的異動。這裡紀錄一下在Biztalk中如何使用SQL Adapter以Polling資料庫中的資料,以隨時接收資料庫中新增的資料。

 

SQL Server的處理

基本上,可以使用Sql Statement或是Stored Procedure。但使用Stored Procedure比較易於管理,所以這裡使用的都是Stored Procedure。

建立Stored Procedure

SQL Adapter只能處理回傳XML的Stored Procedure,所以Select語句要使用MS SQL的XML語法,也就是加個FOR xml auto在句尾。如以下的Example。

SELECT [ColA]
    ,[ColB]
    ,[IsDone]
FROM LabTable
WHERE IsDone = 0
FOR xml auto

這個語法將讀取到的資料轉換成XML的格式

<LabTable ColA="AAA" ColB="BBB" IsDone="0" />

另外,因應Biztalk的SQL Adapter Schema產生器的需求,需要知道各欄位型別的定義,所以在Select語句的最後面加上xmldata語法。最後,Select語句會是以下這種樣子

SELECT [ColA]
    ,[ColB]
    ,[IsDone]
FROM LabTable
WHERE IsDone = 0
FOR xml auto, xmldata

當Schema產生完成後,再把, xmldata拿掉

Orchestration處理

在Biztalk的開發專案中,透過專案右鍵選單中,選取Add Generated Items...

圖-1

選取Add Adapter Metadata template,

圖-2

下一步,選擇所使用的Adapter,選SQL就對了

圖-3

下一步,依據自己的環境設定Connection String

圖-4

下一步,填入Target namespace以及document root element name,這會用在XML的定義上。

圖-5

下一步,選擇Stored Procedure

圖-6

下一步,選取所使用的Stored Procedure,並按下Generate按鈕以產生script

圖-7

最後,按下Finish按鈕以結束SQL Adapter Schema產生器

圖-8

產生完Schema後,記得要把Stored Procedure中的, xmldata拿掉

這個產生器會產生一個XML Schema

圖-9

以及一個Orchestration檔,在Orchestration檔中,已經定義好Port Type以供Receive Port使用。另外還定義好一個Multi-part Message Type,型別則是剛才所產生的Schema。

在Orchestration中,就可以使用該Schema處理DB得到的資料。

實體Receive Port的處理

當Orchestration開發完並部署到Biztalk Server上後,還需要設定Receive Location以實際的連結到DB。

新建立一個One-Way Receive Location,並選擇Transport TypeSQLReceive pipeline選擇XMLReceive

圖-10

按下Configure...按鈕,會跳出一個對話視窗,以進行SQL相關參數設定。

按下Connection String旁的按鈕,會出現一個連線字串設定Wizard。設定完連線設定後,該Wizard會將Connection String填入,並帶出URI的設定

圖-11

再按下SQL Command旁的按鈕,會跳出另一個對話視窗。 圖-12

透過選取Project,以及該Project中的Schema,可以取得Schema的Target NamespaceRoot Element Name的資訊,還有所要執行的Stored Procedure的設定。

圖-13

這樣,SQL Adapter才算完整的設定完成。這時候,就可以把資料塞入DB中,以測試由DB的資料驅動Biztalk的流程運作。