Biztalk應用程式四大金剛-Schema, Pipeline, Map, Orchestration

Biztalk應用程式四大金剛-Schema, Pipeline, Map, Orchestration

Biztalk應用程式基本上是一個資料轉換+流程設計的封裝,這個流程的每個步驟(細節)都必一一定義清楚。最後,開發好的 Biztalk 應用程式部署提供給 Biztalk Server 來使用。讀者可以參考使用 Biztalk Server 處理 JSON Message 輸入輸出來閱讀本文,會更清楚Schema, Pipeline, Map, Orchestration四者的本質。

定義 Schema (.xsd)

Schema 定義 Message 式格。通常會定義最少二組 Schema:Receive Schema 與 Send Schema。就是 Input 資料格式與處理後要 Output 資料格式。

換個想法,把這裡的 Schema 當成 Database 的 Table Schema,只是定義「格式」,或是我們程式中的 Model 定義,但資料會從那裡來或輸出到那裡都還不知道。而 Schema 會一直在整個 Biztalk 應用程式中被使用,就如同程式中的 Model 一樣。

定義 Pipeline (.btp)

Pipeline 定義管線流程。這裡通常會指定 Receive / Send Schame 進行處理。

Data Source → Receive Pipeline → Biztalk Application → Send Pipeline → Output Data Schema。

Biztalk Server 是一個以 XML 為核心的產品。預設進出會使用 XML Pipeline 處理。也就是說,如果來源資料或輸出資料非 XML,那麼就需要自訂對應方向的 Pipeline 來處理。

定義 Map (.btm)

Map 定義轉換規則。

Receive Schema → Map → Output Schema。

Map 最重要是這些規則可程式化。透過一系列轉換規則,將 Receive Schema 接收到的資料透過 Map 轉換為 Output Schema 格式資料。

資料進入 Map 之前已經是 XML 格式。其中的程式化使用「運算質」來處理。
換用程式開發角度,,這部份很像我們使用 AutoMapper 在做處理,對應兩個 Model 之間的關係。

定義 Orchestration (.odx)

Orchestration 定義設計流程,將上面的 Schema、Map整合為一個完整流程,也就是最後 Biztalk 應用程式所執行的流程程序。

Orchestration View 設定 Orchestration 相關屬性:

  • Message:指定 Schema(.xsd) 來源。
  • Port:指定 Pieline(.btp) 來源。
  • Transform:指定 Map(btm) 來源。

接下來就是依討論好的工作流程開始設計 Orchestration。這裡很有 Scratch 計設的感覺,可以進行第二次流程程式化的細部調整,也就在流程中對資料進行處理。

Orchestration 的程式化與 Map 裡的程式化差異在於,Map 針對 A 格式轉換至 B 格式的資料格式對應時的資料處理。比如說,訂單資料有單價、數量與折扣三項資料,發票資料則有額外總價資料,「總價=單價*數量*折扣」,這種公式就可以透過 Map 運算質去設計,在資料轉換過程直接會進行計算。Orchestration 裡的程式化指的是,在流程進行中的狀態改變,例如,一個文件簽核流程中,有一個「進度欄位」,值可能有「處理中、通過、退回」,這是依目前文件所進行的進度來決定狀態值的不同,而這個值不是資料對應所能處理,而是由流程管理去判斷進度欄位的值。

小結

Schema、Pipeline、Map、Orchestration 是組成 Biztalk 應用程式的四大金剛。其中,如果來源與輸出資料格式都能以 XML 為標準,那麼 Pipeline 是可以省略的。

2 則留言:

  1. 大大感謝你的付出,希望不要被流言婓語打擊你的熱情,這世界存在聰明人就一定會有蠢蛋來襯托,他們之間差別就在於一個活在世上只會抱怨不懂反省而不思長進最終被社會淘汰,一個則積極向上熱愛分享也熱愛學習有著影響他人的領袖特質,散發著耀眼光芒

    回覆刪除
  2. 您的mvc美學我有購買,希望您繼續保持您的熱情且熱愛一切你所愛的

    回覆刪除

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