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