[Develop]Lab5-BussinessRule
Lab5、BussinessRule |
假如過去你究是個開發人員,你因該也遇過一些類似的情形。過去開發的程式,在程式碼裡面有一些商務邏輯。例如有時候 會撰寫一些程式,當什麼條件成立的時候做什麼;當什麼條件不成立的時候又要做什麼 !! 這因該是非常經常遇到的問題。當 金額小於5000的時候不給老闆簽核,當金額大於5000時要給老闆簽核。這樣的邏輯在開發中因該是非常的常見。但是大家因該 也都有一種經驗就是,當前人甚至自己開發的程式久了,有時候商務規則的變動,就是開發人員的痛苦所在。 ( 商務規則是經常性的被調整,企業總是要能很迅速的跟上外在環境的步伐而調整 )。常常遇到 User 反應,只是將本來的 1000元改成5000元,有很難嗎 ? 為什麼要這麼久阿 ? 開發人員總是跟使用者有一個鴻溝在,我常常覺得這是一個開發人員一直 無法說出的痛。事實上商業程序本來就是會經常變動,使用者提出要求也是合情合理。而商務規格的變動,1000元變成5000 元,也確實因該要很簡單才對。但是當一切沒有好的Tool協助的時候,商務規則就變的無比的艱辛了。這個Lab 我們要來探索一下 Biztalk 一個很彈性的架構,商務規則編輯器。用來幫助我們很彈性的建立商務邏輯,以及維護商務邏輯的版本。使以往的商務邏輯 變更的需求能更簡單的被滿足。 ※ 這個範例我們要模擬一個簽核的動作;概念很簡單,當你傳入一張申請單,上面會有金額。商務規則編輯器會依照金額來判斷,當金額小於 一萬元時,簽核結果為同意。而當金額大於一萬元時,簽核結果為不同意。 建立一個空白的Biztalk專案。 首先建立一個空白的 Biztalk Server 專案,我替他取名為 [ Lab5_BussinessRule ]。 在專案中我們新增一個 [ 結構屬性 ] 的項目,也就是一份 XML Schema 。我們替他命名為 [ Form.xsd ]。 再剛剛建立的 [ Form.xsd ] 檔案中我們建立兩個子項目,第一個子項目為 Amount,型態我們選擇 int 。這個欄位是要用來提供給商務規則編輯器 判斷金額用的。接著我們新增第二的子項目 [ Result ],型態是 String。這個欄位是用來讓商務規則編輯器回覆簽核結果用的欄位。 商務流程規則編輯。 接著我們來開啟商務規則編輯器。在Windows 桌面上我們在程式集中找到 Biztalk Server 的介面,選擇裡面的 [ 進到了商務規則編輯器後,我們看到左邊有兩個區塊。[ 原則總管 ] 與 [ 事實總管 ]。首先我們要來認識這兩個區域的功用。我們先探到一下所謂的 商用邏輯的概念。當我們在跟需求單位(可能是會計部、財務部….等)討論需求時,需求單位可能會要求我們協助開發一些程式或是系統。我們在 需求訪談過程中常常可以聽到下列的語言,當金額大於多少時要給誰簽、當請假天數超過三天時要怎麼樣、當產品過保固時要怎麼處理、 當庫存小於多少時要怎麼處裡………….等。當…..時要…..處理,這種對話方式出現時,就是商務規則編輯器派上用場的時候。 當 ??? 時候,要 ??? 處理,再商務規則編輯器中,??? 的地方就是要定義所謂的詞彙了。在這邊我們的範例是,當金額大於一萬時,簽核結果為不同意。 當金額小於一萬時,簽核結果為同意。也就是判斷詞彙有兩個,金額 與 簽核結果。因此我們要在這裡設定兩個辭彙。 商務流程規則編輯 在詞彙的地方按下滑鼠郵件,選擇[ 新增詞彙 ]。我們將詞彙命名為 [ Lab5_BussinessRule ]。 在我們新增出來詞彙的地方按下滑鼠右鍵來 [ 新增定義 ] 。 會進入到 [ 歡迎使用詞彙定義精靈 ],這邊我們選擇 [ XML文件項目或屬性 ],然後按下一步來繼續動作。 這時我們先定義名稱為 [ 金額 ],並且按下 [ 瀏覽 ] 按紐。 選擇到我們剛剛建立的 Biztalk專案中那個 Form 的 Xml Schema 檔案。 在跳出的 [ 選取繫結 ]部分我們選擇剛剛在 XML Schema裡面的 [ Amount ],也就是金額會運用XML文件中的這個欄位值來作為判斷。 選擇完畢後按下 [ 確定 ]。 回到 [ XML 文件項目或屬性 ],在最下方我們要設定 [ 執行取得作業 ]。因為要從XML文件中取得這個元素內容的值來提供給 商務流程規則編輯器作為判斷。設定完成後,就新增好了金額的定義了。 接著再新增第二個定義 [ 簽核結果]。 進到 [ XML 文件項目或屬性 ] ,在定義名稱中我們打上[ 簽核結果 ]。然後按下 [ 瀏覽 ]。依照剛剛的步驟選擇到 Biztalk專案中的 XML Schema檔案,並且這次選擇 [ Result ] 元素。 回到 [ XML 文件項目或屬性 ],這邊因為我們要對簽核結果的內容寫入同意或是不同意的簽核結果。所以在下方的選取作業上我們要輸入 [ 執行設定作業 ]。 在詞彙設定精靈中我們先使用預設值,直接按下 [ 完成 ]。 當兩個定義都完成後,我們在版本的地方按下[ 發佈 ] 來發佈這個版本的詞彙。 商務流程規則編輯 再來我們要看到原則的地方,剛剛我們設定了詞彙。而我們在前面有說到商務規則的部份會遇上,當….的時候,要…如何處理。 而我們已經設定好詞彙了,接著就是當 ??? 的時候。例如: 當金額大於多少、當請假大於幾天、當保固期過後..等。因此接著我們就要來輸入所謂的 [ 判斷式 ]。我們在原則的地方打上 [ 新增原則 ]。 在出現 [ 版本 1.0 ]的地方按下滑鼠右鍵 [ 新增規則 ]。 在新建出來的版本的地方,我們新增一個規則。可以看到右邊出現了兩個區域,[ 條件區域 ] 與 [ 動作區域 ]。條件區域就是建立商務規則編輯器中 的條件式,可想成以往在撰寫程式中的 IF 部分。而動作區域也就是撰寫程式中的 Then 了。 在條件的地方我們按下右鍵,選擇 [ 述詞 ] 中的 [ 大於或等於]。接著會看到條件部分出現了右下圖的畫面,這部份因該可以很直覺的瞭解。引數1 就是要置放我們剛剛建立的 [ 金額 ],而輸入值就是比對基準。也就是輸入當金額大於等於10000,這樣的一個判斷式。 這邊我們直接將左邊的詞彙中的[ 金額 ] 拖拉到條件式中的引數里,在後面的輸入值中輸入10000。接著將詞彙中的 [ 簽核結果 的動作中,然後在後面打上 [ 不同意 ]。表示當金額大於10000時,這個動作是申請是不被同意的。 繼續在原則中建立第二個規則,當金額小於一萬元的規則。按照上面的步驟,當金額小於一萬時,審核結果為 [同意]。 設定完畢後我們將這個規則發佈與部署。 回到Biztalk 回到 Biztalk 專案中,我們新增一個 Biztalk 協調流程。我名稱取為 [ Lan5_BussinessRule ]。 在協調流程中我們建立一個 [ 新訊息 ],訊息內容指定為我們建立的 Form.xsd 。 在協調流程中我們拉出三個元件,[ 接收元件]、[ 呼叫規則 ]、[ 傳送元件]。 然後點兩下 呼叫規則的元件,進入呼叫規則的組態視窗。在 [ 選取你要呼叫的商務原則中 ] 選擇我們剛剛建立的原則,在下面原則參數的部份 選擇我們的訊息。這邊是指定你要送入哪個訊息到這個商務規則之中。 接著我們新增兩個連接埠,連接接收與傳送元件。這部份不多說明,要是您不知道這部份如何設定,可以參考 Biztalk範例的 Lab1。 都設定完成後,我們建置專案。運氣好的話會看到建置成功。建置成功後就部署專案。 ( 要記得要選擇今要組件喔 !!! 如果不知道金要組件是什麼的話 ? 也請參考Biztalk Lab1。) 新增實體連接埠。 新增接受埠,選擇 [ 單向接收埠 ]。 我命名為 [ Lab5_ReceiveLocationPool ]。 在接收埠下我新增一個接收位置 [ Lab5_ReceivePort ]。傳輸類型我指定為 [ FILE ] ,並且點選位置URI來指定檔案接收位置。而接收管線選擇 預設管線 [ DefaultPiplines ]。按下確定後就新增完成了。 接著新增一個傳送埠。 傳送類型也選擇,[ FILE ]。並且指定檔案要傳送的實體位置。 接著到左邊一般的區域,設定傳送管線也是 [ DefaultPiplines ]。 接著我們到協調流程中來繫結實體連接位置。 在傳送位置與接收位置選擇我們剛剛建立的那兩個連接埠。 然後在主控件的地方選擇 [ BiztalkServerApplication ]。( 也可以選擇你自己建立的其他主控件 )。 繫結完成後我們啟動協調流程。 測試。 接著我們準備一份 XML文件,內容如下圖。在金額的部份我們輸入5000元。 將文件放到剛剛我們建立的實體接收埠位置,接著你會看到這個接收位置的檔案被Biztalk收走。 到傳送實體位置去,會看到產出了一份檔案。 點兩下後可以看到這個檔案的 [ Result ] 元素中的文字被改成 同意 。這是由商務規則編輯器在判斷金額後所做的修改。 我們再做一個金額大於10000元的文件測試,一樣放入你的檔案實體接收位置。 我們看到結果可以發現檔案被商務規則編輯器給修改成不同意了。 |