前言:想要寫出一篇引人入勝的文章?我們特意為您整理了WF工作流工程設計論文范文,希望能給你帶來靈感和參考,敬請閱讀。
1.wf簡介
目前各大軟件廠商都推出了工作流產品。從.NETFramework3.0開始,微軟推出了一個全新的基于Windows平臺的工作流產品WorkflowFoundation(簡稱WF),作為.NET中的一個標準組件,目前最新的版本是WF4.5。相對WfMC對工作流的抽象定義,微軟對工作流的定義體現了其在WF中的設計思想:工作流是一組存儲為模型的名為活動的基本單元,活動用于描述實際進程;工作流提供了一種方法,用于描述多項短期運行或長期運行的工作之間的執行順序和依賴關系;此工作從頭到尾地貫穿模型,并且活動可以人工執行或由系統功能執行。WF的組成主要包括以下幾個部分:
(1)活動模型(ActivityModel):活動是構建WF工作流的基本單元,可以通過代碼的方式編寫活動或用已有的活動組合成一個復合活動。
(2)工作流設計器(WorkflowDesigner):從MicrosoftVisu-alStudio2005開始,VisualStudio提供了一個工作流設計器,開發者也可以根據需要開發設計出完全獨立于VisualStudio的工作流設計器。
(3)規則引擎(RulesEngine):可以被工作流所調用,為工作流提供條件轉移規則。
(4)工作流運行時(WorkflowRuntime):一個輕量級、可擴展的引擎執行環境,需要運行在宿主程序中。WF在工作流活動狀態的持久化、異常處理、事務管理、WebService通信、流程的動態更新等方面都給予了大量的支持,能快速開發Windows平臺上C/S或B/S框架的工作流應用。近年來,WF已逐漸成為Windows平臺上工作流開發研究的主流方向之一。
2.WF工作流引擎體系結構
WF引擎的體系結構共分四層:工作流模型層、運行時層、宿主層、宿主程序層。
2.1工作流模型層(WorkflowModelLayer)
工作流模型層是WF的應用開發層,支持不同類型的工作流模型,提供了很多開箱即用的活動(OutofboxActivi-ties),以及活動和規則編輯API。開箱即用活動可以分為順序、狀態機和策略三類。此外,用戶還可以通過自定義活動的方式,擴充WF的活動庫。
2.2運行時層(RuntimeLayer)
運行時層是WF的核心部分,包含執行工作流和管理工作流生命周期必需的關鍵服務:
(1)執行(Execution):確定流程中活動被執行的時間,并且維持一些公共行為,如事件處理、異常、跟蹤和事務等。
(2)跟蹤(Tracking):主要是建立經跟蹤接口序列化過的跟蹤事件。
(3)調度(Scheduler):按調度表執行各種活動。
(4)規則(Rules):提供了策略執行功能和對代碼文檔對象模型條件值的計算。
(5)狀態管理(StateManagement):負責管理經持久化接口持久化的各種狀態。
2.3宿主層(HostingLayer)
宿主層提供WF的運行時層與宿主程序之間各種關鍵服務的接口,包括持久化服務、通信服務、跟蹤服務、定時器服務、線程服務和事務服務等。用戶也可以根據需要自定義服務。2.3.4宿主程序層(HostProcessLayer)宿主程序是一個調用者,為用戶提供交互的圖形用戶界面。工作流引擎則運行在服務器上為宿主程序提供服務并管理工作流。Windows平臺下很多不同類型的應用程序都可以作為WF的宿主程序,比如控制臺程序、窗體表單應用程序,
2.4WF支持的工作流類型WF
支持兩種工作流:順序工作流和狀態機工作流[5]。
(1)順序工作流模型(SequentialWorkflowModel)順序工作流是一個連續的活動序列,流程一旦開始,各個活動將按照流程定義的順序自我驅動逐個執行,直到整個工作流完成為止。盡管順序工作流可以使用分支和循環,也可以接收外部事件,但它的執行過程是高度可預測的。順序工作流模型帶有明顯的時序性,適用于大多數結構化的工作流應用。
(2)狀態機工作流模型(StateMachineWorkflowModel)狀態機工作流完全依賴外部事件驅動來執行,因此也稱事件驅動工作流。它包含一系列狀態(包括初始狀態和結束狀態)和事件。狀態機一開始總是停在一個預設的狀態中,直到事件觸發之后才會跳轉到新的狀態上。狀態機工作流模型是為事件驅動的工作場景設計的,有事務特征,適合于非結構化面向人或角色相關的工作流場景。
3工程設計管理系統實現
3.1系統整體架構
隨著Internet的快速發展,Web以其簡便的信息獲取方式、統一的客戶端界面和豐富的功能日益為人們所接受,因此目前絕大部分的應用系統都以B/S架構實現。微軟開發的ASP.NET框架已成為Web開發的利器。本文利用ASP.NETWeb應用程序作為WF宿主應用程序,為工程設計企業構建工程設計工作流管理系統。系統的整體架構是在典型的三層架構基礎上加入工作流引擎層,成為四層架構,如圖2所示。四個層次分別是:
①表現層,采用基于ASP.NET的Web客戶端,呈現系統的用戶界面;
②業務邏輯層:實現包括市場經營管理、工程項目管理、設計過程管理、質量管理等功能的業務邏輯;
③工作流引擎:包括WF定義、WF執行和WF監控,實現業務邏輯層中各類業務的流程定義、執行和監控;
④數據訪問層:實現對數據庫的訪問和操作,為其他三層提供數據服務。
3.2工作流設計
在電力工程設計中,設計成品分很多種類和級別。不同種類和級別的設計成品按照不同的流程進行校審,從而達到保證設計質量的目的。以某設計院的A類工程三級施工圖為例,其校審過程如下:設計人設計出成品后,登錄工程設計工作流管理系統,在線填寫設計成品相關信息,遞交設計成品校審中請。遞交的申請需要經過校核、審核和批準共三級校審。每一級校審如有修改意見,則直接退回給設計人,由設計人修改后重新遞交校審申請。這是一個結構化的業務流程,其執行過程是高度可預測的,帶有明顯的時序性,因此,采用順序工作流模型進行流程建模,其流程圖在。
3.3系統開發關鍵技術
3.3.1持久化服務
相對于計算密集型的技術,工作流技術,特別是人工工作流技術,處理的大部分是等待,因此對持久化提出了特殊的要求。工作流的持久化,關鍵之一是如何以及何時把一個流程實例存儲到數據庫中并從內存中移除。WF引擎宿主層的SqlWorkflowPersistenceService服務類是持久化服務的核心。它可以將流程實例保存到數據庫中,也可以從數據庫中加載流程實例。當流程實例空閑時,WF運行時會觸發一個WorkflowRuntime.WorkflowIdled事件,宿主程序發現這個事件時會在事件處理器中調用WorkflowIn-stance的TryUnload方法,將空閑的流程實例持久化存儲到數據庫中。
3.3.2工作流調用本文實現的系統以ASP.NETWeb應用程序為宿主。在宿主程序中調用工作流分兩種情況:
(1)在流程實例初次被創建時,在ASP.NET頁面中初始化工作化,關鍵代碼如下:WorkflowRuntimeruntime=newWorkflowRuntime;…//添加相應的服務runtime.StartRuntime;//啟動工作流引擎WorkflowInstanceinstance=runtime.CreateWorkflow(typeof(WF.Checked));instance.Start;//啟動流程實例
(2)當宿主程序發生的事件觸發某個已被持久化的流程實例時,需要重新加載此實例,關鍵代碼如下:WorkflowRuntimeruntime=newWorkflowRuntime;GuidWorkflowId=newGuid(tbNo.Text);//tbNo.Text用來獲取要處理的工作流實例IDruntime.GetWorkflow(WorkflowId);其中第二種情況用得更多,因為每一個流程實例只需在開始時進行一次初始化,而之后每一個活動的流轉和操作都要重新加載被持久化的實例。
4結束語
本文提出一個結合了WF和ASP.NET技術的Web工作流系統四層架構體系,使用順序工作流模型設計業務流程,開發了一個工程設計工作流管理系統,很好地解決了工程設計管理中業務流程在不同人之間的自動流轉問題。該系統目前已投入使用,為企業創造了很大的價值。
作者:李緒光 單位:廣州電力設計院