公務(wù)員期刊網(wǎng) 論文中心 正文

WF工作流工程設(shè)計(jì)論文

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了WF工作流工程設(shè)計(jì)論文范文,希望能給你帶來(lái)靈感和參考,敬請(qǐng)閱讀。

WF工作流工程設(shè)計(jì)論文

1.wf簡(jiǎn)介

目前各大軟件廠商都推出了工作流產(chǎn)品。從.NETFramework3.0開(kāi)始,微軟推出了一個(gè)全新的基于Windows平臺(tái)的工作流產(chǎn)品WorkflowFoundation(簡(jiǎn)稱WF),作為.NET中的一個(gè)標(biāo)準(zhǔn)組件,目前最新的版本是WF4.5。相對(duì)WfMC對(duì)工作流的抽象定義,微軟對(duì)工作流的定義體現(xiàn)了其在WF中的設(shè)計(jì)思想:工作流是一組存儲(chǔ)為模型的名為活動(dòng)的基本單元,活動(dòng)用于描述實(shí)際進(jìn)程;工作流提供了一種方法,用于描述多項(xiàng)短期運(yùn)行或長(zhǎng)期運(yùn)行的工作之間的執(zhí)行順序和依賴關(guān)系;此工作從頭到尾地貫穿模型,并且活動(dòng)可以人工執(zhí)行或由系統(tǒng)功能執(zhí)行。WF的組成主要包括以下幾個(gè)部分:

(1)活動(dòng)模型(ActivityModel):活動(dòng)是構(gòu)建WF工作流的基本單元,可以通過(guò)代碼的方式編寫活動(dòng)或用已有的活動(dòng)組合成一個(gè)復(fù)合活動(dòng)。

(2)工作流設(shè)計(jì)器(WorkflowDesigner):從MicrosoftVisu-alStudio2005開(kāi)始,VisualStudio提供了一個(gè)工作流設(shè)計(jì)器,開(kāi)發(fā)者也可以根據(jù)需要開(kāi)發(fā)設(shè)計(jì)出完全獨(dú)立于VisualStudio的工作流設(shè)計(jì)器。

(3)規(guī)則引擎(RulesEngine):可以被工作流所調(diào)用,為工作流提供條件轉(zhuǎn)移規(guī)則。

(4)工作流運(yùn)行時(shí)(WorkflowRuntime):一個(gè)輕量級(jí)、可擴(kuò)展的引擎執(zhí)行環(huán)境,需要運(yùn)行在宿主程序中。WF在工作流活動(dòng)狀態(tài)的持久化、異常處理、事務(wù)管理、WebService通信、流程的動(dòng)態(tài)更新等方面都給予了大量的支持,能快速開(kāi)發(fā)Windows平臺(tái)上C/S或B/S框架的工作流應(yīng)用。近年來(lái),WF已逐漸成為Windows平臺(tái)上工作流開(kāi)發(fā)研究的主流方向之一。

2.WF工作流引擎體系結(jié)構(gòu)

WF引擎的體系結(jié)構(gòu)共分四層:工作流模型層、運(yùn)行時(shí)層、宿主層、宿主程序?qū)印?/p>

2.1工作流模型層(WorkflowModelLayer)

工作流模型層是WF的應(yīng)用開(kāi)發(fā)層,支持不同類型的工作流模型,提供了很多開(kāi)箱即用的活動(dòng)(OutofboxActivi-ties),以及活動(dòng)和規(guī)則編輯API。開(kāi)箱即用活動(dòng)可以分為順序、狀態(tài)機(jī)和策略三類。此外,用戶還可以通過(guò)自定義活動(dòng)的方式,擴(kuò)充WF的活動(dòng)庫(kù)。

2.2運(yùn)行時(shí)層(RuntimeLayer)

運(yùn)行時(shí)層是WF的核心部分,包含執(zhí)行工作流和管理工作流生命周期必需的關(guān)鍵服務(wù):

(1)執(zhí)行(Execution):確定流程中活動(dòng)被執(zhí)行的時(shí)間,并且維持一些公共行為,如事件處理、異常、跟蹤和事務(wù)等。

(2)跟蹤(Tracking):主要是建立經(jīng)跟蹤接口序列化過(guò)的跟蹤事件。

(3)調(diào)度(Scheduler):按調(diào)度表執(zhí)行各種活動(dòng)。

(4)規(guī)則(Rules):提供了策略執(zhí)行功能和對(duì)代碼文檔對(duì)象模型條件值的計(jì)算。

(5)狀態(tài)管理(StateManagement):負(fù)責(zé)管理經(jīng)持久化接口持久化的各種狀態(tài)。

2.3宿主層(HostingLayer)

宿主層提供WF的運(yùn)行時(shí)層與宿主程序之間各種關(guān)鍵服務(wù)的接口,包括持久化服務(wù)、通信服務(wù)、跟蹤服務(wù)、定時(shí)器服務(wù)、線程服務(wù)和事務(wù)服務(wù)等。用戶也可以根據(jù)需要自定義服務(wù)。2.3.4宿主程序?qū)樱℉ostProcessLayer)宿主程序是一個(gè)調(diào)用者,為用戶提供交互的圖形用戶界面。工作流引擎則運(yùn)行在服務(wù)器上為宿主程序提供服務(wù)并管理工作流。Windows平臺(tái)下很多不同類型的應(yīng)用程序都可以作為WF的宿主程序,比如控制臺(tái)程序、窗體表單應(yīng)用程序,

2.4WF支持的工作流類型WF

支持兩種工作流:順序工作流和狀態(tài)機(jī)工作流[5]。

(1)順序工作流模型(SequentialWorkflowModel)順序工作流是一個(gè)連續(xù)的活動(dòng)序列,流程一旦開(kāi)始,各個(gè)活動(dòng)將按照流程定義的順序自我驅(qū)動(dòng)逐個(gè)執(zhí)行,直到整個(gè)工作流完成為止。盡管順序工作流可以使用分支和循環(huán),也可以接收外部事件,但它的執(zhí)行過(guò)程是高度可預(yù)測(cè)的。順序工作流模型帶有明顯的時(shí)序性,適用于大多數(shù)結(jié)構(gòu)化的工作流應(yīng)用。

(2)狀態(tài)機(jī)工作流模型(StateMachineWorkflowModel)狀態(tài)機(jī)工作流完全依賴外部事件驅(qū)動(dòng)來(lái)執(zhí)行,因此也稱事件驅(qū)動(dòng)工作流。它包含一系列狀態(tài)(包括初始狀態(tài)和結(jié)束狀態(tài))和事件。狀態(tài)機(jī)一開(kāi)始總是停在一個(gè)預(yù)設(shè)的狀態(tài)中,直到事件觸發(fā)之后才會(huì)跳轉(zhuǎn)到新的狀態(tài)上。狀態(tài)機(jī)工作流模型是為事件驅(qū)動(dòng)的工作場(chǎng)景設(shè)計(jì)的,有事務(wù)特征,適合于非結(jié)構(gòu)化面向人或角色相關(guān)的工作流場(chǎng)景。

3工程設(shè)計(jì)管理系統(tǒng)實(shí)現(xiàn)

3.1系統(tǒng)整體架構(gòu)

隨著Internet的快速發(fā)展,Web以其簡(jiǎn)便的信息獲取方式、統(tǒng)一的客戶端界面和豐富的功能日益為人們所接受,因此目前絕大部分的應(yīng)用系統(tǒng)都以B/S架構(gòu)實(shí)現(xiàn)。微軟開(kāi)發(fā)的ASP.NET框架已成為Web開(kāi)發(fā)的利器。本文利用ASP.NETWeb應(yīng)用程序作為WF宿主應(yīng)用程序,為工程設(shè)計(jì)企業(yè)構(gòu)建工程設(shè)計(jì)工作流管理系統(tǒng)。系統(tǒng)的整體架構(gòu)是在典型的三層架構(gòu)基礎(chǔ)上加入工作流引擎層,成為四層架構(gòu),如圖2所示。四個(gè)層次分別是:

①表現(xiàn)層,采用基于ASP.NET的Web客戶端,呈現(xiàn)系統(tǒng)的用戶界面;

②業(yè)務(wù)邏輯層:實(shí)現(xiàn)包括市場(chǎng)經(jīng)營(yíng)管理、工程項(xiàng)目管理、設(shè)計(jì)過(guò)程管理、質(zhì)量管理等功能的業(yè)務(wù)邏輯;

③工作流引擎:包括WF定義、WF執(zhí)行和WF監(jiān)控,實(shí)現(xiàn)業(yè)務(wù)邏輯層中各類業(yè)務(wù)的流程定義、執(zhí)行和監(jiān)控;

④數(shù)據(jù)訪問(wèn)層:實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)和操作,為其他三層提供數(shù)據(jù)服務(wù)。

3.2工作流設(shè)計(jì)

在電力工程設(shè)計(jì)中,設(shè)計(jì)成品分很多種類和級(jí)別。不同種類和級(jí)別的設(shè)計(jì)成品按照不同的流程進(jìn)行校審,從而達(dá)到保證設(shè)計(jì)質(zhì)量的目的。以某設(shè)計(jì)院的A類工程三級(jí)施工圖為例,其校審過(guò)程如下:設(shè)計(jì)人設(shè)計(jì)出成品后,登錄工程設(shè)計(jì)工作流管理系統(tǒng),在線填寫設(shè)計(jì)成品相關(guān)信息,遞交設(shè)計(jì)成品校審中請(qǐng)。遞交的申請(qǐng)需要經(jīng)過(guò)校核、審核和批準(zhǔn)共三級(jí)校審。每一級(jí)校審如有修改意見(jiàn),則直接退回給設(shè)計(jì)人,由設(shè)計(jì)人修改后重新遞交校審申請(qǐng)。這是一個(gè)結(jié)構(gòu)化的業(yè)務(wù)流程,其執(zhí)行過(guò)程是高度可預(yù)測(cè)的,帶有明顯的時(shí)序性,因此,采用順序工作流模型進(jìn)行流程建模,其流程圖在。

3.3系統(tǒng)開(kāi)發(fā)關(guān)鍵技術(shù)

3.3.1持久化服務(wù)

相對(duì)于計(jì)算密集型的技術(shù),工作流技術(shù),特別是人工工作流技術(shù),處理的大部分是等待,因此對(duì)持久化提出了特殊的要求。工作流的持久化,關(guān)鍵之一是如何以及何時(shí)把一個(gè)流程實(shí)例存儲(chǔ)到數(shù)據(jù)庫(kù)中并從內(nèi)存中移除。WF引擎宿主層的SqlWorkflowPersistenceService服務(wù)類是持久化服務(wù)的核心。它可以將流程實(shí)例保存到數(shù)據(jù)庫(kù)中,也可以從數(shù)據(jù)庫(kù)中加載流程實(shí)例。當(dāng)流程實(shí)例空閑時(shí),WF運(yùn)行時(shí)會(huì)觸發(fā)一個(gè)WorkflowRuntime.WorkflowIdled事件,宿主程序發(fā)現(xiàn)這個(gè)事件時(shí)會(huì)在事件處理器中調(diào)用WorkflowIn-stance的TryUnload方法,將空閑的流程實(shí)例持久化存儲(chǔ)到數(shù)據(jù)庫(kù)中。

3.3.2工作流調(diào)用本文實(shí)現(xiàn)的系統(tǒng)以ASP.NETWeb應(yīng)用程序?yàn)樗拗?。在宿主程序中調(diào)用工作流分兩種情況:

(1)在流程實(shí)例初次被創(chuàng)建時(shí),在ASP.NET頁(yè)面中初始化工作化,關(guān)鍵代碼如下:WorkflowRuntimeruntime=newWorkflowRuntime;…//添加相應(yīng)的服務(wù)runtime.StartRuntime;//啟動(dòng)工作流引擎WorkflowInstanceinstance=runtime.CreateWorkflow(typeof(WF.Checked));instance.Start;//啟動(dòng)流程實(shí)例

(2)當(dāng)宿主程序發(fā)生的事件觸發(fā)某個(gè)已被持久化的流程實(shí)例時(shí),需要重新加載此實(shí)例,關(guān)鍵代碼如下:WorkflowRuntimeruntime=newWorkflowRuntime;GuidWorkflowId=newGuid(tbNo.Text);//tbNo.Text用來(lái)獲取要處理的工作流實(shí)例IDruntime.GetWorkflow(WorkflowId);其中第二種情況用得更多,因?yàn)槊恳粋€(gè)流程實(shí)例只需在開(kāi)始時(shí)進(jìn)行一次初始化,而之后每一個(gè)活動(dòng)的流轉(zhuǎn)和操作都要重新加載被持久化的實(shí)例。

4結(jié)束語(yǔ)

本文提出一個(gè)結(jié)合了WF和ASP.NET技術(shù)的Web工作流系統(tǒng)四層架構(gòu)體系,使用順序工作流模型設(shè)計(jì)業(yè)務(wù)流程,開(kāi)發(fā)了一個(gè)工程設(shè)計(jì)工作流管理系統(tǒng),很好地解決了工程設(shè)計(jì)管理中業(yè)務(wù)流程在不同人之間的自動(dòng)流轉(zhuǎn)問(wèn)題。該系統(tǒng)目前已投入使用,為企業(yè)創(chuàng)造了很大的價(jià)值。

作者:李緒光 單位:廣州電力設(shè)計(jì)院

相關(guān)文章閱讀