[Develop]Lab1-HelloWorld

[Develop]Lab1-HelloWorld

Lab1 、 HelloWorld

Biztalk 第一個範例,我們先來由一個範例來展示Biztalk在資料交換的方便魅力。。

狀況假設:

我們接收了一份XML文件,文件裡面帶有一個Usename,這份文件在被Biztalk接收之後;Biztalk會產出一份新的文件,文件內容是

回應一個 Hello + 你傳進去的 Username

這個範例操作步驟大概如下

1. 開啟一個新的Biztalk 空白專案。

2. 新增一個接收檔案的 XML Schema.

3. .新增一個傳送檔案的Xml Schema.

4. 新增一個協調流程

5. 新增一個傳送埠

6. 新增傳送位置

7. 新增一個接收埠

8. 新增一個接收元件

9. 新增一個傳送元件

10. 新增一個轉換元件

11. 設定轉換

12. 新增金鑰

13. 建置與部署

14. 新增實體接收

15. 新增實體傳送

16. 協調流程繫結與啟動

17. 執行


開啟一個新的空白
Bizalk Server 專案。

在Visual Studio中的Biztalk專案右邊開啟一個新的空白 Biztalk Server 專案。

clip_image001

可以從方案總管內看到我們的新增好的專案,因為新增的是空白專案,所以裡面是沒有任何東西的。

clip_image002


新增傳入檔案的文件XML Schema

在資料交換的過程中,我們要替將要傳入的檔案定義好他的XML Schema。在實務上,這各檔案不見得由我們來定義。也可以由你

的合作夥伴給你他們已經定義好的XML Schema。 舉例來說;當你準備要和一家合作夥伴公司在網路上交換資料,由他的系統傳送

出來的資料會有他定好的Xml Schema( 在這我們先假設他們送出的資料是Xml格式而不是一些怪格式 )。那我們就可以直接引用他的

Xml Schema 檔案 。

clip_image003


在加入新項目的部份新增結構描述

在此我們新增一的 [ 結構描述 ]的XML檔案,檔案名稱我們就訂為 [Lab1_UserRequest ]。這份檔案是一份 Xml Schema
的檔案,是

用來描述Xml文件的結構的。

clip_image004

新增的檔案Xml Schema檔案格式。

clip_image005


修改UserRequest
XML Schema檔案的格式

在檔案內容之中的Root部分裡面先 [ 插入結構描述節點 ] 中的 [ 子欄位項目 ], 項目名稱我們把它命名為 [ Username ]。

clip_image006

完成結果如下。

clip_image007


新增一個Biztalk 要回覆給前端的XML文件的結構描述 !!

依據剛剛新增Xml 結構描述的步驟在新增一個系統要傳送給前端的Xml文件的文件結構。這個文件結構被命名為

[ Lab1_ServerResponse.xsd ],裡面包含一個項目元素,名稱叫做 [ ReponseMessage ]。

clip_image008

clip_image009


新增Biztalk 協調流程 !!

接下來,我們新增一個 [ Biztalk 協調流程 ] 項目,將它取名 Lab1_HelloWorld.odx。

clip_image010

在 Biztalk 協調流程 中 可以將工具箱的圖形依據你的邏輯拉到中間來,完成你的商務邏輯。而左右邊的連接埠介面就是邏輯的連接

埠,在這邊是用來指定邏輯的連接部份;而實體的連接到後面我們再來設定。

clip_image011


新增接收與傳送物件

在左邊的工具箱中拉出兩個物件。一個是[ 接收 ] 物件、一個是 [ 傳送 ]物件。因為這個範例是要接收一份Xml文件後在產出一份新

的Xml文件。所以我們先在 Biztalk 協調流程中放這兩個物件。這邊很容易理解這兩個元件的工作,一個是將文件接收進我們的流

程中,讓我們對文件作任何你像要的加工動作、另一個就是將我們加工完的文件送出去。

clip_image012


新增連接埠

在 [ 連接埠介面 ] 上來按右鍵來新增一個[連接埠]。這是一個邏輯的接收埠,是協調流程接收檔案的邏輯位置。實體位置在稍後

佈署時再做設定。

clip_image013


設定連接埠

接著來設定剛剛新增的連接埠。在剛剛的新增的連接埠上按下右鍵,然後選擇 [ 設定連接埠 ]。

clip_image014

畫面上會出現歡迎使用設定連接埠組態的精靈。

clip_image015

我們將這個連接埠的名稱設定為 [ Lab1_ReceivePort ]。

clip_image016

這個部份我們把連接埠類型名稱設定為 Lab1_ReceivePortType 然後將這個連接埠設定為[單向]。因為我們在這邊只做接收檔案的

動作。

clip_image017

在連接埠這邊這定為 [ 我將一律在此連接埠接收訊息]。我們要在此用這個連接埠去連接 協調流程裡面的接收訊息元件。

clip_image018

設定完成!!

clip_image019


接著設定一個新的連接埠

接著再設定一個新的連接埠,這個連接埠是要將資料傳送出去用的。在設定上大多數跟剛剛的設定都一樣,這邊列出設定不一樣

的地方。 這個連接埠我們命名他為 [Lab1_SendPort ] ,故名思意,我們要用這個連接埠來傳送出我們要送出的檔案。

clip_image020

連接埠類型名稱設定為 [Lab1_SendPortType]。

clip_image021

因為這個連接埠將要替我們傳送資料出去。所以在連接埠繫結的部份我們選擇 [ 我將一律在此連接埠傳送訊息]。

clip_image022


替接收與傳送元件建立訊息!!

回到剛剛的協調流程中我們拉了兩個元件,一個是接收元件、一個是傳送元件。在元件右上角有一個小驚嘆號。點他一下他會顯

示 [ 沒有訊息。選取訊息或按一下建立新的訊息 ]

clip_image012[1]

clip_image023

建立後你可以在協調流程檢視視窗裡面發現 [ 訊息_1 ]。這是我們建立出來的訊息。但是這個訊息還需要指定 [ 訊息類型 ]給他。

也就是他的訊息結構描述。

clip_image024

在[ 訊息_1 ] 的訊息類型我們中我們指定剛剛增的 [Lab1_UserReequest] 的XML結構描述。

clip_image025

接者在[ 接收 ]元件裡面的[ 訊息_2 ] 我們指定將其訊息類型指定為 [ Lab1_ServerRespnse ] 的XML結構描述。

clip_image026

兩個訊息都指定完成後就會看到這樣的訊息畫面。

clip_image027


將連接埠與接收元件連接起來!!

設定完接收與傳送元件後,依舊還是有驚嘆號在? 這是因為還要設定一個東西,就是要將連接埠與接收元件連接起來。當然傳送埠

也要與傳送元件連接起來。

clip_image028

連接完畢後,驚嘆號就會看不見。

clip_image029


新增轉換元件

在協調流程中我們拉出一個轉換元件。這個元件可以幫我們將傳送進來的Xml文件轉換成送出的文件。新增進來的轉換元件上有兩

驚嘆號,再這邊我們要在做一些設定。

clip_image030

首先點選第一個建構訊息上的驚嘆號。會出現 [沒有建構訊息。按一下以在[屬性]視窗中編輯 ]。按下之後會跳出建構訊息屬性視

窗。在此我們選擇 [ 建構的訊息 ] 屬性裡面我們選擇 [ 訊息_2 ]。

clip_image031

接著點選第二個驚嘆號,然後在右方 [ 屬性 ] 視窗裡面點選 [ 建構的訊息 ] 然後勾選 [ 訊息_2 ] 。

clip_image032

接著我們按下轉換元件上的第二個驚嘆號。會跳出一個 [ 轉換組態 ] 的視窗,在完整格式的對應名稱我們先依照他的預設值。而在

來源的部份我們選擇 [訊息_1]而在目的地的部份我們選擇 [訊息_2 ]。設定完成後按下 [確定]。

clip_image033

clip_image034

再按下[ 確定 ]後,會跳出一個視窗。這是文件轉換的對應視窗。左邊是來源的結構描述文件而右邊是目的地結構描述文件。

因為來源文件裡面會傳來一個Username。我們在這邊要將Username取出並在前面加入Hello字串後再塞到目的地結構描述區塊去。

所以這邊我們要做字串新增的動作,所以我們要在左邊拉出一個[ 字串串連 ]的元件。

clip_image035

clip_image036

在元件上點兩下,會開啟設定運算值輸入的視窗。我們在右上方新增按鈕按下,並在輸入參數的部分打上』Hello!!』

clip_image037

然後在滑鼠點在右邊的 [ Username ] 元素上按住左鍵不放可以拖曳出連線;將連線連到中間的 [字串串連 ]元件,再從[ 字串串連
]

元件拉一個連線連接到 [ResponseMessage ]上。

clip_image038


!!

看到結果了吧 !! 第一隻WWF 程式完成了。

clip_image039


新增金鑰與指定組件金鑰檔案

在這我門要先替 Biztalk 專案新增一個金鑰。 到 [ 開始 ] –>[ 程式集 ] –>[ Visual Studio
2005 ] –> [ Visual Studio Tools ] –>

[ Visual Studio 2005 命令提示字元 ] 開啟命令提示字元視窗後,在裡面打上 [ sn -k Lab_key.snk ]
按下確定後。.Net 會在

C:\Program Files\Microsoft Visual Studio 8\VC 幫我們建立一個Lab_key.snk的金鑰。

clip_image040

接下來我們在右方[ 檔案總管 ] 中的專案名稱上按下滑鼠右鍵,選擇[ 屬性 ] !! 。

clip_image041

然後在 [ 通用屬性 ] 中的 [ 組件 ] 右方的 [ 組件金鑰檔案 ] 按下 [...],去選擇你剛剛新增出來的金鑰。新增完成就按下確定。

clip_image042

clip_image043


設定接收元件為啟動元件!!

在到協調流程上的的 [ 接收_1 ] 的屬性去設定 [ 啟動 ] 屬性為 [ True ]。

clip_image044

clip_image045


建置專案

接者我們在專案右鍵上按下 [ 建置 ]‧來編譯整個專案。

clip_image046

如果運氣好的話就會看到 [ 建置成功 ]。有沒有很感動?? 當然,運氣不好的話就會看到一堆錯誤….><|||。那就要DeBug了!

clip_image047


將專案部署到伺服器上!!

建置完成後我們在專案旁邊再按下 [ 部署 ],來部署整個專案。

clip_image048

運氣好的話還是會看到 [ 部署成功喔] !!!

clip_image049


Biztalk
檔案總管!!

在Biztalk檔案總管的地方,我們可以在組態資料庫中看到我們剛剛部署的 Lab1_HelloWorld 專案。接著我們要來定義 實體的檔案

接收位置了。

clip_image050


新增檔案接收與傳送資料夾!!

這個專案是要接收一個帶有Username 元素的 Xml文件,然後再傳送一份Biztalk邊修過後的文件出來。在這範例中,我們先以檔案

接收與傳送的方式來傳送檔案。我們在這裡新增兩個資料夾, [ Inbound ]與 [ OutBound ]。然後我們之後設定當Xml檔案被放到

[ Inbound ] 資料夾中的時候,Biztalk會自動吞掉這個檔案;然後 Biztalk 會產出一份新的檔案放到[ OutBound
]資料夾中。

clip_image051


新增接收埠!!

接著我們在接收埠裡面新增接收埠,這是一個可有許多實體接收位子的集合。白話一點就是說,同樣一個協調流程中,只要送進

來的檔案符合被定義的 Xml Schema 話,可以有多種方式來接收檔案。例如你可以設定為 Ftp 傳進這份檔案或者是以Web Service或

是檔案傳輸模式….等。Biztalk在這邊為設計者保留了相當大的彈性。

clip_image052

這邊我們設定接收埠為單向接收埠類型。

clip_image053

這邊我們設定名稱為 [ Lab1_HelloWorld_Receive ]

clip_image054


新增接收位置!!

接下來我們新增實體接收位址。我們在剛剛新增的接收埠上按下右鍵去新增一個實體接收位子。

clip_image055

clip_image056

在實體接收位子下有幾個設定要設定。

在傳輸類型的部分我們設定為 [FILE]。

在位址(URI)部分我們設定為 剛剛我們新增的 [Inbound] 資料夾位址。

接收處理常式選擇 [ BizTalkServerApplication ]

在接收管線的部份我們選擇 [ Microsoft.BizTalk.DefaultPipelines.XMLReceive ]。

clip_image057

clip_image058


新增實體傳送位址!!

接者,我們在傳送埠上新增傳送埠。

clip_image059

這邊我們選擇 [ 靜態單向連接埠 ]。

clip_image060

這邊也是有幾項設定要作。

我們將名稱定為 [ Lab1_HelloWorldSendPort ]。

傳輸類型 我們選擇 [ FILE ]。

位址(URI) 則選擇為我們剛剛新增的 [Outbound]資料夾位址。

啟用服務窗口設定為 [True]。

clip_image061

clip_image062

再到 左邊[ 傳送 ]資料夾中設定傳送管線為 [ Microsoft.BizTalk.DefaultPipelines.XMLTransmit
]。

clip_image063


繫結協調流程與實體接收位址!!

我們到協調流程中選擇我們剛剛建立的 [Lab1_Helloworld.Orchestration_1]的協調流程中。還記得我們在設定協調流程的時候,在流

程中我們拉了一個邏輯接收埠跟一個邏輯傳送埠。現在我們要將他們對應到實體接收位址跟實體傳送位址。在這我們選擇協調流

程的 [ 屬性 ]。

clip_image064

clip_image065

進到裡面來有一個 [輸入連接埠]的區塊,在 [ Lab1_ReceivePort ] 我們選擇對應到 [Lab1_HelloWorld_Receive
]實體位址。

而在[ Lab1_SendPort ] 這個邏輯連接位址 我們則對應到 [ Lab1_HelloWorldSendPort ]。

clip_image066

然後在主控件的部份設定為 [ BizTalkServerApplication ]。

clip_image067

最後起動這個協調流程。

clip_image068

運氣很好的話,你也會看到啟動結果是成功的。

clip_image069


測試!!

接者我們將一份XML文件放到 [Inbound]資料夾中。這份文件的內容如下,文件中有一個Username元素,裡面有一個名子。

你會看到這份文件馬上就不見了;因為Biztalk協調流程將這份文件取走了。

clip_image070

clip_image071


完成!!

接著你到你剛剛設定的 [OutBound]資料夾中。你會看到出現一份新的XML文件,文件內容在名子前面被加了一個』Hello!!』的文字。

clip_image072

clip_image073