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