使用 Biztalk Server 處理 JSON Message 輸入輸出
以下,我們將以一個「JSON訂單-->Biztalk Server-->JSON發票」的 Lab 來簡單介紹 Biztalk Server 的設計與開發流程。
(from MSDN)
Step 1:產生 JSON 訊息的 Schema
請先將以下訂單 JSON 另存新檔:
{
"PO": {
"poNum": "poNum_0",
"poDate": "1999-05-31",
"shipDate": "1999-05-31",
"subTotal": "10.4",
"shipCost": "10.4",
"shipMethod": "shipMethod_0",
"paymentMethod": "paymentMethod_0",
"totalQty": "10",
"poTotal": "10.4",
"discount": "10.4",
"status": "status_0",
"fulfillment": "fulfillment_0",
"customer": {
"customerID": "customerID_0",
"companyName": "companyName_0",
"address": "address_0",
"city": "city_0",
"state": "state_0",
"zip": "zip_0",
"country": "country_0",
"phone": "phone_0",
"email": "email_0"
},
"shipTo": {
"customerID": "customerID_0",
"companyName": "companyName_0",
"address": "address_0",
"city": "city_0",
"state": "state_0",
"zip": "zip_0",
"country": "country_0",
"phone": "phone_0",
"email": "email_0"
},
"items": {
"item": {
"lineNo": "10",
"partNum": "partNum_0",
"productName": "productName_0",
"qty": "10",
"itemPrice": "10.4",
"itemTotal": "10.4",
"manufacturer": "manufacturer_0"
}
}
}
}
我們將利用此 JSON 產需我們所需的 Schema。在「新增項目」中選擇「JSON 結構描述精靈」,在「執行個體檔案」選擇剛剛另存新檔的 JSON 檔案。
發票的 Schema 這裡設計為 PO.xsd 的子集合,手動新增的設計如下:
透過精靈,我們非常方便就能取得 PO.xsd Schema,Invoice.xsd 則是依需求要產出的 Schema。
Step 2:建立 Schema 的 Map
透過 Map 我們整理出 PO 與 Invoice 的對應關係。此範例單純資料對應,沒使用到運算質。
Step 3:建立自訂 Pipeline 來處理 JSON Message
Biztalk Server 2013 R2支援 JSON Decoder / Encoder,讓我們利用 JSON Decoder / Encoder 來設計 Pipeline。
接收管線
傳送管線
Step 4:建立 Orchestration
Orchestration 是整體核心,用以整合所有內容至流程,用流程說明應用程式。
定義 Message
依照需求,我們定義兩個 Message:PurchaseOrder、InvoiceMsg。
設計 Orchestration
- 加入「接收」,指定訊息 PurchaseOrder,並設定為啟動。
- 加入「轉換」,指定訊息 InvoiceMsg。轉換選擇現有對應,來源指定 PurchaseOrder,目的地指定 InvoiceMsg。
- 加入「傳送」,指定訊息 InvoiceMsg。
新增二個 Port,一個通訊方向為「接收」與「接收」圖示連接。一個通訊方向為「傳送」與「傳送」圖示連接。
設定 Biztalk Server 接收與傳送埠
完成 Orchestration 之後,我們就能部署應用程式至 Biztalk Server。部署之後的應用程式,只有虛擬 Ports,我們必須在 Biztalk Server 中設定實體 Ports,然後將實體 Ports 與虛擬 Ports 連接起來,這樣應用程式才會動起來。
新增接收埠
在接收埠 → 新增 → 單向接收埠 → 在「接收位置」點擊「新增」。
類型選擇「File」並設定好接收位置,接收管線選擇我們設計好的 JSONtoXMLReceivePipeline。
新增傳送埠
在傳送埠 → 新增 → 靜態單向傳送埠。
你能發現,傳送埠並無像接收位置的設計,這是因為大多數的傳送端並不是 Biztalk Server 可控範圍。
類型選擇「File」並設定好URI,傳送管線選擇我們設計好的 XmlToJSONSendPipeline。
設定 Port 繫結
現在我們在應用程式裡擁有虛擬 Ports,在 Biztalk Server 設定好實體 Ports,最後一步是把兩者繫結起來。
在協調流程,點擊開啟協調流程屬性,在繫結一一指定兩者關係:
啟動應用程式。
測試應用程式
將最前面的 PO 的 JSON 複製到 In 目錄下,等檔案消失,到 Out 目錄看發票 JSON 檔:
確認發票訊息:
小結
透過以上 Lab 可以學習到 Biztalk Service 基本設計與處理流程,並且學習到 JSON 要如何在 Biztalk Server 處理。
參考:https://msdn.microsoft.com/zh-TW/library/dn789173.aspx
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。