最近我開始研究
Windows Workflow Foundation,簡稱WF,這個
基礎(Foundation)主要是用來處理工作流程(Workflow),注意到WF是在.NET Framework 3.0之後才有的功能。
什麼是
工作流程(Workflow)呢?工作流程(Workflow)是指一個
項目(Item)從一個人移動到另一個人的過程(process)。在商業世界當中,這樣的過程則是業務流程(Business Process),業務流程會定義完成一件
工作(Work)所需要的多個
階段(Step),換句話說,一個階段完成,接續下一個階段,直到所有的階段都完成,一件工作將結束。
WF的工作流程可以分成兩類:State-Based Workflow與Sequential Workflow。
State-Based Workflow(State Machine Workflow)的工作流程必須是每個階段的條件(稱為External Entity)都滿足才會繼續下一個階段。而
Sequential Workflow則是一連串階段的工作,通常沒有分支(branching)和迴圈(looping),注意是可以有分支與迴圈喔!Sequential Workflow開始之後,每個階段依序執行到工作結束為止,除非發生例外錯誤才會終止,不會像State Machine Workflow會中途停止等待。
我們使用Windows Workflow Foundation最大的理由是
模型(Model),多數的商業流程都會使用
案例圖(case diagram)、UML diagram或是最簡單的流程圖(flow chart)等,用來表示商業流程,對於Windows Workflow Foundation而言WF模型就等於同於工作流程。
Windows Workflow Foundation是WinFX編程模型(programming model)中的一部分,
WinFX是在Windows Vista作業系統後才使用的模型(即.NET Framework 3.0),這個模型當中包含工作流程引擎(workflow engine)、API與程式庫(library),我們可以使用
System.Workflow...的三個名稱空間呼叫使用WF的API。
WF的運作由三個元件構成。第一個是
活動(activity),Workflow是由一系列的活動組合而成,而活動是最小的單位,工作流程中可以包含一個或是多個活動,WF中已經包含現成可用(out-of-the-box)的活動,我們可以直接利用以便加速開發。
第二個元件是
工作流程引擎(workflow engine),引擎執行Workflow的動作,提供排程(Scheduling)服務、狀態管理服務、規則(Rule)服務。
最後一個元件是主機處理序(Host Porcess),WF本身不提供直接執行,必須由其他應用程式的處理序呼叫,像是Windows應用程式或是ASP.NET程式呼叫。因此,通常將WF設計成程式庫(Library)的方式!
Windows Workflow Foundation內建的活動有下列幾個:
- Code Activity
- Compensate Activity
- Conditional Activity Group
- Delay Activity
- EventDriven Activity
- Fault Handler Activity
- IfElse Activity
- Invoke Web Service Activity
- Listen Activity
- Parallel Activity
- Policy Activity
- Replicator Activity
- Sequence Activity
- SetState Activity
- State Activity
- StateInitialization Activity
- Suspend Activity
- Terminate Activity
- Throw Activity
- Transaction Scope Activity
- While Activity
這些
現成可用(out-of-the-box)的活動應該已經滿足大多數的需求!詳細請參考MSDN:
http://msdn.microsoft.com/zh-tw/library/bb628449%28v=VS.90%29.aspx