這個用例結合了很多WF4.0和WCF的功能。使用這兩種技術實現了一個文件的審批。包括一個客戶端應用程序,它提交文件、審批文件; 審批流程管理應用程序方便客戶端之間的通信,並執行該審批程序的規則。這個用例中有3種類型的審批工作流程:
1、一個簡單的審批流程
2、一個quorum審批流程
3、一個復雜的審批流程
架構圖如下:
首先我在一台電腦上模擬一下復雜的審批流程
1、我在一台PC上,先啟動服務端. 然後啟動四個客戶端.客戶端如下圖所示:
2、申請用戶
3、用戶A啟動一個復雜的流程
4、B和C同時收到審批任務
5、B,C同意之後,任務到達給D.
6、D處理完,流程結束
從客戶端來看,審批流程有如下功能:
1、在客戶端可以申請一個用戶
2、客戶端的WCF調用服務端的WCF服務。
3、一個唯一的user ID返回給客戶端,此時用戶才可以開啟一個審批流程。
4、客戶端可以發起一個審批文件,進行簡單的、quorum或復雜的審批程序。
5、在客戶端的界面審批按鈕被點擊後,在客戶端工作流服務宿主中啟動一個工作流實例。
6、工作流向服務端發送一個審批請求。
7、服務端自身也啟動一個工作流,回應審批流程。
8、一旦執行完服務端的審批工作流,就結果發送回客戶端。
9、客戶端顯示的結果。
10、客戶端會收到審批請求,可以在任何時間響應審批要求。
11、宿主在客戶端的WCF服務可以收到來自服務端的審批要求。
12、呈現審查的文件資料。
13、用戶可以批准或否決該文檔。
14、WCF客戶端發送一個響應返回給服務端。
從服務端的角度來看,審批程序功能如下:
1、客戶端請求參與審批流程。
2、服務端的WCF服務能接受客戶端請求
3、為客戶端生成一個唯一的ID。將用戶信息存儲在數據庫中。
4、唯一的ID發送回給用戶。
5、接受審批請求,執行審批流程
6、收到一個請求批准理,開啟新的工作流程。
7、根據請求的類型(簡單,quorum,或復雜),不同的工作流活動被執行。
8、相關的發送和接收活動被用來給客戶端發送請求批准的審查和等待接收響應。
9、此次批准的工作流的結果發送到客戶端。
服務端實現:
1、服務端項目如下圖所示,ApprovalManager用於啟動服務。ApprovalManagerActivityLibrary裡面包含了定義的工作流模版。 ApprovalMessageContractLibrary是數據契約。TrackingLibrary用於跟蹤。
2、服務的核心在ApprovalManagerActivityLibrary中。使用Correlation活動定義三種流程。
客戶端實現,客戶端定義了一個ClientRequestApprovalWorkflow工作流:
總結:這個是微軟的官方示例,寫得比較繁瑣。
示例下載:http://www.microsoft.com/en-us/download/details.aspx?id=21459