999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于WF狀態(tài)機工作流的研究與應(yīng)用

2008-12-31 00:00:00董麗麗
電腦知識與技術(shù) 2008年35期

摘要:為了滿足工作流管理系統(tǒng)的靈活性與可擴(kuò)展性的要求,針對工作流設(shè)計復(fù)雜等問題,該文介紹了Windows Workflow Foundation的特點,重點討論了其工作原理及模型,同時以陜西省高等學(xué)校學(xué)生資助信息管理系統(tǒng)的開發(fā)為背景,在VS2005環(huán)境下,設(shè)計出基于WF狀態(tài)機工作流的貧困生認(rèn)定模塊,并詳細(xì)介紹設(shè)計框架及實現(xiàn)。

關(guān)鍵詞:Workflow Foundation;狀態(tài)機工作流;活動

中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2008)35-2263-03

The Research and Application Based on Statemachine Workflow of WF

FENG Qian, DONG Li-li

(Information Control Engineering college of Xi'an University of Architecture and Technology, Xi'an 710055, China)

Abstract: To meet the requirement of flexibility and maintenability of the Workflow Management System, and aiming at the complexity of designing workflow, this paper introduces the Characteristics of Windows Workflow Foundation and discusses the working principle and models emphatically. In the environment of VS2005, as the background for the development of \"Information Management System for Students' Sponsorship of Shaanxi Collage\", designed the module of poor-students approval, and introduce the design framework and process of realization.

Key words: workflow foundation; state machine workflow; activity

1 引言

工作流技術(shù)作為近十年來的一個研究熱點,一直受到人們普遍的關(guān)注。工作流的概念起源于生產(chǎn)組織和辦公自動化領(lǐng)域,它是針對日常工作中具有固定程序的活動而提出的一個概念,其目的是通過將工作分解成定義良好的任務(wù)、角色,按照一定的規(guī)則和過程來執(zhí)行這些任務(wù)并對它們進(jìn)行監(jiān)控,達(dá)到提高辦事效率、降低生產(chǎn)成本、提高企業(yè)生產(chǎn)經(jīng)營管理水平和企業(yè)競爭力的目標(biāo)。

Windows Workflow Foundation(WF)是微軟推出的關(guān)于工作流的研發(fā)架構(gòu),是為微軟產(chǎn)品及相關(guān)應(yīng)用程序提供的通用工作流設(shè)計平臺和開發(fā)工具。它將復(fù)雜的工作流理論進(jìn)行封裝,幫助軟件開發(fā)人員在Windows平臺上快速構(gòu)建工作流應(yīng)用程序、引擎和自定義活動。它提供了工作流定義的圖形化界面,為開發(fā)基于工作流的應(yīng)用程序提供了框架和工具,并且已經(jīng)在Visual Studio2008中進(jìn)行了集成。WF在構(gòu)建工作流程時具有很強的優(yōu)勢。

1) WF提供了一套高度抽象和可視化的商業(yè)處理模型,這套模型可以非常容易地使用和被理解,無論使用它的是開發(fā)人員或是商業(yè)領(lǐng)域?qū)<摇?/p>

2)WF可以非常容易地改變與之相關(guān)的商業(yè)處理規(guī)則,并且不必重新編譯。

3) WF編程模型可以使開發(fā)人員建立一套可測試的內(nèi)核集合,并且可以在多個程序中使用它們[1]。

2 WF基本工作原理及其工作流模型

2.1 WF的基本工作原理

Windows Workflow Foundation其實是一個專門控制工作流的程序,它為開發(fā)工作流提供了框架、模型、工作流引擎、.NET 托管 API、運行庫服務(wù)以及與 Microsoft Visual Studio 2008 集成的可視化設(shè)計器和調(diào)試器,可使用 WF 來生成并執(zhí)行同時跨越客戶端和服務(wù)器端的,可在所有類型的 .NET 應(yīng)用程序內(nèi)部執(zhí)行的工作流[2]。

WF的核心是一組Activities活動,通常在宿主程序中被創(chuàng)建。它們通過工作流引擎來運行工作流程,管理工作流的狀態(tài),通過運行時服務(wù)與工作流進(jìn)行通信。宿主程序可以是任何類型的程序,在開發(fā)工作流項目時,首先在宿主程序中創(chuàng)建工作流引擎,然后在引擎中加載各種所需的服務(wù),最后通過引擎啟動指定的工作流并生成工作流的實例,宿主程序結(jié)構(gòu)模型如圖1所示。

宿主程序與工作流之間進(jìn)行數(shù)據(jù)交換是通過通信Service服務(wù),另外也可自行設(shè)計通信信道,定義一些接口,使宿主程序與WF中一些特殊的Activiy活動采用事件傳遞參數(shù)的形式進(jìn)行通信,來交換數(shù)據(jù);同時還可以通過外部事件以及持久化等方式實現(xiàn)通信。當(dāng)一個工作流實例運行時,可以伴隨其運行許多服務(wù),這些服務(wù)均采用可插式調(diào)用,即這些服務(wù)是為了滿足不同的工作流運行實例的需求,從而伴隨實例運行的。

工作流持久化服務(wù)的加載(PersistenceService)是將工作流實例從工作流引擎中移出,存入持久性介質(zhì),以及從介質(zhì)中將實例載入工作流引擎中,SqlWorkflowPersistenceService類是使用SQL數(shù)據(jù)庫對工作流狀態(tài)進(jìn)行持久化的服務(wù),實例使用Unload方式通過加載到引擎中的SqlWorkflowPersistenceService服務(wù),完成實例的內(nèi)存移出與保存到數(shù)據(jù)庫的操作,引擎使用GetWorkflow方法,可通過SqlWorkflowPersistenceService服務(wù)將存于數(shù)據(jù)庫中的實例加載并返回,實例使用load方法,可觸發(fā)引擎的WorkflowLoaded事件。

跟蹤工作流及其接點狀態(tài)是工作流平臺的核心功能,WF提供的Tracking服務(wù)用以跟蹤工作流的執(zhí)行狀態(tài),工作流執(zhí)行過程中會有各種狀態(tài)的改變,Tracking能將這些狀態(tài)改變信息記錄到數(shù)據(jù)庫并提供查詢端口。另外在封裝類中還實現(xiàn)了對自定義服務(wù)的加載,同時負(fù)責(zé)工作流引擎的啟動,并保證工作流引擎的唯一性。

在開發(fā)工作流系統(tǒng)時,WF使程序語義更具聲明性且準(zhǔn)確性增強,方便用戶為接近實際進(jìn)程的應(yīng)用程序建模,并將 Windows Workflow 嵌入運行時服務(wù)器。進(jìn)程越復(fù)雜,為其設(shè)計和實現(xiàn)的流程就越簡單,進(jìn)程動態(tài)更改越容易,用戶需要編寫和維護(hù)的代碼數(shù)量就越少。WF運行時為工作流程序提供了托管執(zhí)行環(huán)境,還為程序提供了持續(xù)時間、可靠性、掛起/恢復(fù)、事務(wù)以及補償特征。

2.2 WF的工作流模型

Windows Workflow Foundation 對執(zhí)行模型進(jìn)行了活動自動控制方面的虛擬化,以便編寫出可以捕捉各種控制流模式的復(fù)合活動,其范圍包括多種連接與合并、狀態(tài)機、圖形、序列、交叉存取和非本地退出等。總之,它能夠通過“高保真”的復(fù)合活動對存在于現(xiàn)實世界中的控制流模式進(jìn)行建模。然而,Windows Workflow Foundation 提供了針對以下兩種模式的內(nèi)置活動:順序工作流和狀態(tài)機工作流。

順序工作流(sequential workflow)是為執(zhí)行由一系列預(yù)定義的步驟組成的任務(wù)而設(shè)計的,其體系結(jié)構(gòu)模擬基于過程的應(yīng)用程序,如圖2。順序工作流有明確的開始和結(jié)束點,從始至終,一步接一步,沿著一條可能的線路執(zhí)行。順序模式是一種典型的結(jié)構(gòu)化模式,適用于總是重復(fù)的、可預(yù)測的操作[3]。

圖2順序類型工作流示意圖圖3狀態(tài)機類型工作流示意圖

狀態(tài)機工作流是為事件驅(qū)動的工作場景設(shè)計的,它可以被表示為一組狀態(tài),也可將其看做一組結(jié)點,且任意時刻只有一個結(jié)點處于激活狀態(tài),每個狀態(tài)可以包括多種活動,并由事件進(jìn)行觸發(fā)。它需要分別定義一個初始狀態(tài)和一個完成狀態(tài),且按照所定義的轉(zhuǎn)換過程逐個狀態(tài)地執(zhí)行,直至到達(dá)結(jié)束狀態(tài),其流程示意見圖3。

狀態(tài)機工作流允許回溯,能夠重新分配被拒絕的請求。在通常情況下我們可以在邏輯設(shè)計中設(shè)置 Reassigned 狀態(tài),但這并不是一種高效的設(shè)計方式。而狀態(tài)機工作流中重新分配的請求與新分配請求的處理方法相同,因此無需在 Rejected 狀態(tài)之外再單獨創(chuàng)建一個分支來處理重新分配的請求,從而將工作流轉(zhuǎn)換回原來的狀態(tài),這樣便能夠在工作流中更好地重用處理資源[5]。

WF基本活動庫中狀態(tài)機相關(guān)的活動:

EventDrivenActivity依賴于外部事件開始執(zhí)行的狀態(tài)。

SetStateActivity轉(zhuǎn)換到指定的新狀態(tài)。

StateActivity表示狀態(tài)機中的某個狀態(tài);可能包含其他State活動。

StateInitializationActivity在進(jìn)入某個狀態(tài)時執(zhí)行;可能包含其他活動。

StateFinalizationActivity在離開 StateActivity 活動時執(zhí)行其所包含的活動。

在程序控制權(quán)傳遞到某個狀態(tài)活動并開始執(zhí)行時,該狀態(tài)活動將檢查是否存在 StateInitialization 活動,如果存在,則執(zhí)行該活動。同樣地,某個狀態(tài)活動在將控制權(quán)傳遞給另一個狀態(tài)時,會檢查是否存在 StateFinalization 活動,若存在,則執(zhí)行。

3 基于WF構(gòu)建狀態(tài)機工作流

3.1 功能描述以及項目架構(gòu)分析

在陜西省高等學(xué)校學(xué)生資助信息管理系統(tǒng)中,學(xué)校認(rèn)定貧困生的流程為:學(xué)生首先向院系提交申請表,若不符合要求則院系不予認(rèn)定,若符合申請要求則通過院系認(rèn)定,并由院系提交至學(xué)校處,進(jìn)而通過學(xué)校認(rèn)定后才可撥款。在特殊情況下,學(xué)校可將已認(rèn)定的學(xué)生取消其貧困生資格,院系也具有此權(quán)限,但已經(jīng)通過學(xué)校認(rèn)定的貧困生院系將無法取消其資格。同時每個學(xué)生只能看到自己的申請表。

本項目采用分布式架構(gòu),如圖4所示,在項目中創(chuàng)建一個狀態(tài)機工作流StateMachineWF、一個Windows應(yīng)用程序StuApplication,工作流與應(yīng)用程序之間的接口項目WFInterface和中間層代碼BLLandDAL。

首先在中間層項目BLLandDAL下創(chuàng)建一個文件來對貧困生認(rèn)定的業(yè)務(wù)邏輯進(jìn)行封裝,而工作流本身就是業(yè)務(wù)邏輯的最佳體現(xiàn),因此工作流也是業(yè)務(wù)邏輯層的一部分。在BLLandDAL項目中定義工作流的實體類,按照業(yè)務(wù)需求將申請表中的各屬性逐一進(jìn)行定義。由于該實體類是作為數(shù)據(jù)的載體,因此需要將其序列化,同時該實體類在工作流中將作為參數(shù)進(jìn)行傳遞,必須繼承工作流的ExternalDataArgs抽象類。因為狀態(tài)機工作流都需要人為干預(yù),所以它應(yīng)具備對應(yīng)的接口程序以便與HandleExternalEvent活動進(jìn)行綁定。在認(rèn)定流程中,用戶都是通過點擊前臺界面的按鈕來觸發(fā)相應(yīng)的工作流活動,因此在該項目中將點擊操作進(jìn)行抽象,并在接口項目中定義一個統(tǒng)一的click事件,將該事件的參數(shù)類型設(shè)置為ApprovalInfo實體類,進(jìn)行參數(shù)傳遞。代碼如下所示:

namespace ImyInterface

{

[ExternalDataExchange]

Public interface Iprojiect

{

Event EventHandle< ApprovalInfo> click;

}

}

3.2 構(gòu)建WF狀態(tài)機工作流及應(yīng)用程序

在visual studio 2005中,創(chuàng)建一個狀態(tài)機模型的工作流,在其設(shè)計界面中添加四個State活動,分別對應(yīng)學(xué)生、院系、學(xué)校和工作流結(jié)束的操作狀態(tài),分別命名為“StuState”、“DepState”、“SchState”、“Over”,如圖5所示。根據(jù)貧困生認(rèn)定業(yè)務(wù)邏輯的定義,將StuState活動設(shè)置為該工作流的起始狀態(tài),將Over活動設(shè)置為該工作流的終止?fàn)顟B(tài),并按照業(yè)務(wù)流程分別向各State狀態(tài)中添加相應(yīng)數(shù)量的EventDriven活動,同時將狀態(tài)間的關(guān)系進(jìn)行關(guān)聯(lián)。

當(dāng)學(xué)生提交貧困生申請后,StuSubmitEvent事件將指向DepState狀態(tài);在院系對該生通過認(rèn)定后,DepApprovalEvent事件進(jìn)而指向SchState狀態(tài);如果學(xué)院取消認(rèn)定,則由DepCancelEvent事件退回到StuState狀態(tài);當(dāng)最終學(xué)校認(rèn)定通過,SchApprovalEvent事件將指向Over結(jié)束狀態(tài);若學(xué)校取消認(rèn)定,SchCancelEvent事件即退回到DepState活動。

EventDriven活動屬于事件類型的容器,在它內(nèi)部至少應(yīng)該包含一個事件類型的活動。在本項目中為每個EventDriven活動添加一個HandleExternalEvent子活動,該活動將分別與接口項目中的事件進(jìn)行綁定,并通過各個HandleExternalEvent活動的Invoked屬性創(chuàng)建相關(guān)的事件,最后在該事件中實現(xiàn)每個操作的業(yè)務(wù)邏輯,代碼如下所示。

Namespace StateMachineWF

{

Public sealed partial class Approval:StateMachineWorkflowActivity

Public StuWorkflow ()

{

InitializeComponent();

}

//學(xué)生提交貧困生申請

Private void StuInvoked(object sender,ExternalDataEventArgs e)

{

ExpenseBLL bll=new ExpenseBLL();

ExpInfo.ExpStatus=“等待院系認(rèn)定”;

Bll.Create Approval (ExpInfo);

}

……

}

在應(yīng)用程序中,院系認(rèn)定與學(xué)校認(rèn)定界面的認(rèn)定按鈕觸發(fā)工作流中HandleExternalEvent類型的活動,該按鈕需要將保存在數(shù)據(jù)庫中被持續(xù)化的工作流實例重新加載回工作流運行時容器RunTime中,然后按照工作流的流程繼續(xù)執(zhí)行后續(xù)的認(rèn)定操作。其代碼如下所示:

Public event EventHandle< ApprovalInfo > Send;

Private void DepApproval_Click(object sender,EventArgs e)

{

//將被持續(xù)化的工作流實例加載回Runtime容器

Guid g=new Guid(this. Approval_id.Text);

Workflowruntime.GetWorkflow(g);

//觸發(fā)工作流中相應(yīng)的活動

Send(1,newApprovalInfo(g,this.Stu_name.Text,DateTime.Now.ToString(),this.Stu_card.Text));

……

}

4 總結(jié)

通過以上對Workflow Foundation基本工作原理及模型的分析,針對貧困生認(rèn)定業(yè)務(wù)的特點,結(jié)合對工作流管理系統(tǒng)的開放性標(biāo)準(zhǔn),在傳統(tǒng)的關(guān)系數(shù)據(jù)庫(SQLserve:2005)基礎(chǔ)上,提出基于分布式結(jié)構(gòu)的工作流系統(tǒng)框圖,設(shè)計出基于WF狀態(tài)機工作流的陜西省高等學(xué)校學(xué)生資助信息管理系統(tǒng)的貧困生認(rèn)定模塊,真正實現(xiàn)信息產(chǎn)生與傳遞邏輯的分離,增強認(rèn)定工作流系統(tǒng)的靈活性和可擴(kuò)展性,提高認(rèn)定或?qū)徟ぷ髁飨到y(tǒng)軟件的重用率。

參考文獻(xiàn):

[1] 張瑾.WWF開發(fā)指南[M].北京:機械工業(yè)出版社,2008.

[2] Dharma Shukla,Bob Schmidt.WF本質(zhì)論[M].北京: 機械工業(yè)出版社,2007.

[3] 劉元劍.基于.NET的工程管理信息系統(tǒng)研究[J].計算技術(shù)與自動化,2006,25(2):88-90.

[4] 金戈.關(guān)于WF的一些思考[J].程序員,2008(5):10,121-122.

[5] 楊琦.工作流技術(shù)在高校教務(wù)管理系統(tǒng)中的應(yīng)用與研究[J].IT技術(shù)論壇,2008(16):89.

主站蜘蛛池模板: 国产精品亚洲欧美日韩久久| 国产欧美日韩综合在线第一| 日本不卡免费高清视频| 片在线无码观看| 国产国产人成免费视频77777 | 456亚洲人成高清在线| 久久96热在精品国产高清| 亚洲国产精品一区二区第一页免| 亚洲国产系列| 1024国产在线| 国产成人久久综合777777麻豆| 亚洲天堂日韩av电影| 美女国内精品自产拍在线播放 | 无码不卡的中文字幕视频| 爱色欧美亚洲综合图区| 999在线免费视频| 亚洲视频影院| 日本高清免费一本在线观看 | 亚洲一区波多野结衣二区三区| 亚洲免费黄色网| 怡春院欧美一区二区三区免费| 亚洲国产理论片在线播放| 亚洲浓毛av| 国产在线八区| 久久毛片网| 国产jizz| 国产精品一老牛影视频| 亚洲成A人V欧美综合| 丁香亚洲综合五月天婷婷| 亚洲日本中文字幕乱码中文| 亚洲精品麻豆| 91高清在线视频| 国产乱人激情H在线观看| h网址在线观看| 精品1区2区3区| 专干老肥熟女视频网站| 国产精品天干天干在线观看| 香蕉综合在线视频91| 色婷婷久久| 成人福利在线观看| a级毛片一区二区免费视频| 欧美午夜在线视频| 日本欧美在线观看| 国产在线第二页| 热思思久久免费视频| 亚洲水蜜桃久久综合网站| 婷婷色婷婷| 91视频精品| 女人18毛片久久| 亚洲国产天堂久久综合226114| 免费看美女毛片| 国产欧美日韩精品综合在线| 好久久免费视频高清| 久久无码免费束人妻| 国产XXXX做受性欧美88| 伊人久久婷婷五月综合97色| 亚洲无码四虎黄色网站| 国产亚洲精品97在线观看| 欧美三级视频网站| 97久久人人超碰国产精品| 国产人前露出系列视频| 亚洲一级色| 色婷婷天天综合在线| 精品国产免费第一区二区三区日韩| 四虎国产成人免费观看| 免费又黄又爽又猛大片午夜| 亚洲无线视频| 国产精品夜夜嗨视频免费视频 | 免费中文字幕在在线不卡 | 日韩成人免费网站| 国产精品午夜福利麻豆| 亚欧美国产综合| 日韩欧美中文亚洲高清在线| 婷婷午夜天| 国产精品福利社| 五月六月伊人狠狠丁香网| 久久精品无码一区二区国产区| 在线精品视频成人网| 亚洲中文字幕av无码区| 一级香蕉视频在线观看| 999国产精品| 天天综合网色|