[Develop]Lab6-BussinessRule

[Develop]Lab6-BussinessRule

Lab6、Visaul Studio 呼叫 BussinessRule

先前在Biztalk的文章中研究過商業邏輯編輯器(Bussiness Rule)這個好用的功能,沒看過那篇文章的話,建議您在開始這個章節的時候先去參考那邊文章,請點這裡來連結

這一個章節我們要來研究的是Biztalk 商務邏輯編輯器的功能,怎麼樣與.Net的程式做整合。這樣您可以在開發.net程式的同時,將一些經常變動的商務邏輯交給商務邏輯編輯器。
使商務邏輯日後在頻繁異動的過程中,儘量減輕您閱讀前人程式的痛苦。


首先建立一個XML Schema來描述資料結構。

我們要先建立一份XSD的XML Schema資料結構描述檔案。這個資料結構將是讓 .Net 與 Biztalk 商業邏輯編輯器溝通的的資料標準。這邊我們建立如下圖的一份XSD檔案,我們命名為PO.XSD。在這個檔案中會有兩個項目稍後我們會用來作為仲裁判斷的 依據。分別是
[Quantity] 用來作為仲裁的依據 與 [Status]來寫入結果。

clip_image001

接著我們先到[商務規則編輯器]裡面的[事實總管]去新增一個[詞彙]。這邊我們新增一個 [簽核]的詞彙。

clip_image002

在新增出來的 [簽核詞彙] 下我們新增一個版本。

clip_image003 clip_image004

這邊我們新增第一個詞彙,在詞彙定義精靈的彈出視窗中,我們選擇XML文件項目與屬性。這邊我們要利用我們剛剛建立的Xml Schema來定義詞彙,選擇好後按下下一步,跳到詞彙定義的視窗。

clip_image005

在結構描述的地方去按下 [瀏覽],選到剛剛定義的 Xml Schema的XSD檔案。

clip_image006

我們先選擇[Quantity]元素,我們將利用這個元素的值來當作仲裁判斷的立基。也就是說用他當做判別簽核結果的依據。這邊要特別注意的是在選取作業我們要設定為[取得]作業,因為要從傳入的Xml文件中取得資訊來仲裁判斷

clip_image007

將這個詞彙名稱定義命名為[金額],也就是我們要用來判斷是否可以簽核的依據。

clip_image008

我們重複設定詞彙的動作。我們在定義一個[結果]的詞彙,這個詞彙要用來呈現簽核結果。這邊我們一樣選到XML Schema,並且選擇[Status]元素項目。

clip_image009

一樣去瀏覽選擇到剛剛的XSD文件,在定義名稱中我們輸入[結果],下方的選取作業我們選擇[執行取得作業]。因為我們要將我們待會要設定的同意與不同意字的文字簽核結果寫入XML檔案之中。

clip_image010 clip_image011


新增原則。

接著我們來新增一個商業邏輯的原則。這邊我們要定義一個簽核的邏輯,當金額大於等於 1000 元的時候,這個簽核結果我們就設定 [不同意]。當金額小於
1000 元的時候,這個簽核結果我們就設定 [同意]。所以我們在原則的地方按滑鼠右鍵來[新增原則]。

clip_image012

在條件的地方把剛剛建立的事實中的金額拖曳到條件的左邊項目,並且設定條件為[大於或等於],在比較條件我們輸入1000,這樣就完成上方條件的設定。接著到下方動作的部分,將剛剛事實總管的結果拉近動作,在結果欄的部分我們設定為[不同意]。

clip_image013

在條件的地方把剛剛建立的事實中的金額拖曳到條件的左邊項目,並且設定條件為[大於或等於],在比較條件我們輸入1000,這樣就完成上方條件的設定。接著到下方動作的部分,將剛剛事實總管的結果拉近動作,在結果欄的部分我們設定為[不同意]。


建立Visual studio windows form 程式。

我們開啟一個Visual Studio windows Form 的專案。我們建立一個Windows Form的程式,並且在這個Windows
Form上拉兩個  [button]的控制向與一個 [Textbox]的控制項。

clip_image014

接著我們建立兩份XML文件。我們利用這兩份XML文件丟給[商務邏輯編輯器]來幫我們執行簽核的判斷動作,這邊我們建立 [SamplePO.xml]與[SamplePO_2.xml]兩份文件。

clip_image015

我們來檢視 [SamplePO.xml]這份文件。文件中的 [Quantity]元素所帶的值是 400,這是我們要用來仲裁判斷的金額項目。在 [Status]元素就是最後經由商務邏輯編輯器要去判斷的資料區域。

clip_image016

我們來檢視 [SampleP_2O.xml]這份文件。文件中的 [Quantity]元素所帶的值是 5000。因此在這份文件中,我們會經由商務邏輯編輯器得到不同意的結果。

clip_image017

我們在Windows Form上點兩下,來到程式編輯的區域。在最上頭我們要先加入兩項參考,一個是 [ Using System.xml;]這部分是待會要用來讀取與操作有關於XML文件的部分。接著我們要加入[Using Microsoft.RuleEngine;]這個參考,
這個類別是用來取得[商業邏輯編輯器]相關的操作所需要參考的類別。

clip_image018

在剛剛的按鈕的部分我們點下第一個按鈕進入程式編輯區域,編寫下圖程式。這部分程式會讀入XML文件,並 且交由商務規則編輯器去判斷。最後回傳結果並且顯示在Textbox裡面。在這邊我們先建立一個要用來讀取XML文件的類別,讀取第一份文件。然後建立一 個Policy類別,並且去呼叫flow1的商務邏輯。並且文件送出給商務邏輯引擎做處理,最後將結果在
textbox 裡面顯示出來。

clip_image019

點擊第二個按鈕進入程式編輯區域。這邊撰寫下方的程式,讀取第二份資料,並且交由商務規則編輯器去判斷。最後回傳結果並且顯示在Textbox裡面。

clip_image020

接著我們編譯執行來測試程式,先按下第一個 button,執行第一段程式。

clip_image021

接著可以看到textbox裡面出現了訊息,我們原本的XML檔案裡的 [ Status ] 狀態被更改了,顯示同意的字樣了。因為第一份文件在金額的地方小於1000元,所以簽核結果是同意的。再來我們按下第二個按鈕。

clip_image022

此時textbox裡面回傳的訊息被改成不同意了 !!

clip_image023

這樣的運用讓您的應用程式也可以去呼叫 [ 商務邏輯編輯器] 裡面的商務規則,使得在撰寫程式的時候更為方便去對商務規則做版本控管的動作。