現在,估計三層架構仍然被程序員廣泛使用。先列出這三層,不是怕大家不知道這三層,而是下文的需要,:)。
1、數據訪問層
2、業務邏輯層
3、表示層
還有就是數據交換的實體層
很多程序員都用代碼生成器,我也不另外。一般的代碼生成器會幫助程序員生成數據訪問層和業務邏輯層。由於表示層是千變萬化的, 是很難通過生成器生成出來的。當固定生成的業務層不能滿足需求的時候。往往需要去手動的修改代碼,這篇文章教你如何通過圖形化的界 面定制流程化的業務邏輯,無需修改你的代碼。
先看下我的這套數據數據訪問層的截圖:
數據訪問層:
訂購產品的業務邏輯:
實體層:
應用層調用:
1 IDictionary<string, object> input = new Dictionary<string, object>
2 {
3 { "Request" , ListItem }
4 };
5
6 WorkflowInvoker.Invoke(new yewuloji(), input);
以上看了我的數據訪問層的一個大概。
說明1:除了訂購產品的業務邏輯,其他都是從代碼生成器中生成的;
說明2:我的數據表操作都是sp。
下面敘述一下如何實現:
數據訪問層:以一個添加操作為例,看下圖:
這是微軟新發布的WF4.0中的ado.net操作的活動,這裡我用於調用已經生成好的基本存儲過程。一個數據訪問的xaml文件對應數據庫中 的一個sp。xaml文件以及對應數據庫中的sp都是生成器自動生成的。
存儲過程:自動產生的存儲過程
這個例子的數據表結構:
Order是訂單表,Item是訂單項表,我要將要制定的業務是:訂購一批產品,如果代碼實現,方式是:在數據中Order表中新增一筆記錄 ,接著將所有的訂單項添加到Item表中,在此過程中要統計所有項的數量和價格,最後修改新增的Order表中的那筆記錄的ItemCount和 OrderPrice。
而在我的這套數據訪問層中有下面兩幅圖的活動供你選擇。第一副圖是自定義的數據訪問層的活動,第二副圖是IF、Foreach等進行判斷 和循環還有事務等功能的WF4.0內置的活動。
通過拖拽上面兩幅圖的活動,我們就可以定制任意的復雜的業務邏輯,如下圖。
調試和運行:
Demo使用代碼:
1 ItemInfo i1 = new ItemInfo();
2 i1.Price = 18;
3 i1.ProductName = "鼠標";
4 ItemInfo i2 = new ItemInfo();
5 i2.Price = 32;
6 i2.ProductName = "鍵盤";
7
8 ItemInfo i3 = new ItemInfo();
9 i3.Price = 5;
10 i3.ProductName = "鍵盤墊";
11
12
13 List<ItemInfo> li = new List<ItemInfo>();
14 li.Add(i1);li.Add(i2);li.Add(i3);
15
16 IDictionary<string, object> input = new Dictionary<string, object>
17 {
18 { "ItemList" , li }
19 };
20
21 WorkflowInvoker.Invoke(new Test2(), input);
結果:
優點:
1、業務邏輯用圖形化表示,非常清晰。
2、可擴張性強,可以把常用的業務流程存放在DB中
3、容易維護,如果你的業務邏輯需要改動的時候。可以把業務邏輯的xaml文件拿出來。在vs或者宿主在windowsform、wpf中的wf4.0流 程設計器進行修改。而無需從新修改和編譯你的代碼。
4、代碼量少。由於sp、數據訪問層、一般的業務邏輯都是自動生成的。只有一些復雜和特殊的業務邏輯需要人工去定制。
.......
缺點:
由於在普通的三層上加了工作流的思想,效率可能會有些損耗。有多少我沒有測試過。
總結:這套數據訪問層是從我現在的使用的數據訪問層演變過來的。我將以前的代碼統統的工作流化了。將.cs文件更改成了.xaml文件 ,但是還沒有完善好。
代碼:http://files.cnblogs.com/zhuqil/WorkflowConsoleApplication12.rar
數據庫:http://files.cnblogs.com/zhuqil/Test.rar