使用Biztalk Server處理JSON Message輸入輸出

使用 Biztalk Server 處理 JSON Message 輸入輸出

以下,我們將以一個「JSON訂單-->Biztalk Server-->JSON發票」的 Lab 來簡單介紹 Biztalk Server 的設計與開發流程。

JSON Process(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 檔案。

BizTalk JSON Schema精靈

發票的 Schema 這裡設計為 PO.xsd 的子集合,手動新增的設計如下:

Invoice Schema

透過精靈,我們非常方便就能取得 PO.xsd Schema,Invoice.xsd 則是依需求要產出的 Schema。

Step 2:建立 Schema 的 Map

透過 Map 我們整理出 PO 與 Invoice 的對應關係。此範例單純資料對應,沒使用到運算質。

Po Invoice Mapping

Step 3:建立自訂 Pipeline 來處理 JSON Message

Biztalk Server 2013 R2支援 JSON Decoder / Encoder,讓我們利用 JSON Decoder / Encoder 來設計 Pipeline。

接收管線

Receive Pipeline for JSON Message

傳送管線

Send Pipeline for JSON Message

Step 4:建立 Orchestration

Orchestration 是整體核心,用以整合所有內容至流程,用流程說明應用程式。

定義 Message

依照需求,我們定義兩個 Message:PurchaseOrder、InvoiceMsg。

PO Message
Invoice Message

設計 Orchestration

  1. 加入「接收」,指定訊息 PurchaseOrder,並設定為啟動
  2. 加入「轉換」,指定訊息 InvoiceMsg。轉換選擇現有對應,來源指定 PurchaseOrder,目的地指定 InvoiceMsg。
  3. 加入「傳送」,指定訊息 InvoiceMsg。

新增二個 Port,一個通訊方向為「接收」與「接收」圖示連接。一個通訊方向為「傳送」與「傳送」圖示連接。

PO to Invoice Orchestration

設定 Biztalk Server 接收與傳送埠

完成 Orchestration 之後,我們就能部署應用程式至 Biztalk Server。部署之後的應用程式,只有虛擬 Ports,我們必須在 Biztalk Server 中設定實體 Ports,然後將實體 Ports 與虛擬 Ports 連接起來,這樣應用程式才會動起來。

新增接收埠

在接收埠 → 新增 → 單向接收埠 → 在「接收位置」點擊「新增」。

類型選擇「File」並設定好接收位置,接收管線選擇我們設計好的 JSONtoXMLReceivePipeline。

Receive Port Location
Receive Port - File Setting

新增傳送埠

在傳送埠 → 新增 → 靜態單向傳送埠。

你能發現,傳送埠並無像接收位置的設計,這是因為大多數的傳送端並不是 Biztalk Server 可控範圍。

類型選擇「File」並設定好URI,傳送管線選擇我們設計好的 XmlToJSONSendPipeline。

Send Port Uri
Send Port - File Setting

設定 Port 繫結

現在我們在應用程式裡擁有虛擬 Ports,在 Biztalk Server 設定好實體 Ports,最後一步是把兩者繫結起來。

在協調流程,點擊開啟協調流程屬性,在繫結一一指定兩者關係:

Port Mapping

啟動應用程式。

測試應用程式

將最前面的 PO 的 JSON 複製到 In 目錄下,等檔案消失,到 Out 目錄看發票 JSON 檔:

Invoice Json File

確認發票訊息:

Invoice Json File Content

小結

透過以上 Lab 可以學習到 Biztalk Service 基本設計與處理流程,並且學習到 JSON 要如何在 Biztalk Server 處理。

參考:https://msdn.microsoft.com/zh-TW/library/dn789173.aspx

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。