我使用WF4.0有很長一段時間了,但是對WF3.0和WF3.5自知甚少,對狀態機也不甚了解。今天生魚片前輩的博文:WF4實現工作流駁回流 轉模型的幾種設計方案 中提出的四中實現駁回的方式中。第一種大家都覺得太過麻煩。現在我是使用第二種的。第三種沒用過,覺得有些 問題。 他在文中提出第四種方式是最好的,我也非常同意。 這篇文章中,將使用第四種狀態機的方式實現一個請假流程,這個流程中有 駁回操作。
WF4.0的狀態機是微軟今天發布的,下載地址是:http://wf.codeplex.com/releases/view/43586,我就迫不及待的安裝好了,試用了一 番。
這個Demo一是展現一下WF4.0狀態機的功能,二是為了使用狀態機實現這個工作流中常用的駁回操作,三是為了展示用WF4.0實現一個簡 單的請假流程的。流程圖如下:
Flowchart流程圖如下:
狀態機如下圖:
WF4.0中狀態機中共三種活動屬如下:
而我畫的狀態機中多了一種Composite State,這個也是一種state。在composite中的state將會流進同一個 transition 中。
狀態機和順序流、flowchart不同,狀態機的觸發事件和路由條件都設置在連線上面,微軟稱它為transition。我感覺有一點不爽的是, 在狀態機中同樣的條件表達式,不同的情況可能也設置好幾次。比如說這個請假流程,天數小於3要在一個transition中設置一次。大於等 於3在另外一個transition又要設置一次。這點不如flowchart靈活。
總結:
和flowchart畫線駁回相比,雖然少畫了flowdecision,工作量感覺還是差不多。還有在flowchart中可以拖狀態機,而在狀態機中不能 拖放flowchart中的活動。同樣在順序工作流中可以拖放狀態機,在狀態機中不能拖順序工作流。flowchart和順序工作流是可以相互嵌套的 。
例子代碼:http://files.cnblogs.com/zhuqil/leaveFlowSolution.rar