摘 要: 提出利用基于有向圖的工作流模型來管理圖檔的動(dòng)態(tài)流轉(zhuǎn)過程,給出了利用Visio作為建模工具快速建立工作流模型的實(shí)現(xiàn)過程,。
關(guān)鍵詞: 水利工程設(shè)計(jì) 工作流 工作流模型 Visio
在水利工程設(shè)計(jì)項(xiàng)目中,,大量設(shè)計(jì)圖檔需要經(jīng)過校對,、校驗(yàn)、審查,、審定,、歸檔等一系列的流程。對圖檔設(shè)計(jì)流程的有效管理是提高工程進(jìn)度的一個(gè)關(guān)鍵因素,。目前圖檔的設(shè)計(jì)流程是通過手工完成的,,而手工管理圖檔不僅效率低,且難以實(shí)現(xiàn)諸如版本管理,、設(shè)計(jì)流程跟蹤等工程設(shè)計(jì)中必須解決的問題,。為了實(shí)現(xiàn)水利工程設(shè)計(jì)流程的自動(dòng)化,人們采用了許多辦法,,如利用現(xiàn)有的辦公自動(dòng)化軟件,,或者采用為特定部門開發(fā)的專用圖檔管理系統(tǒng),但是仍然存在問題,。前者僅僅在設(shè)計(jì)和保存這一小部分實(shí)現(xiàn)自動(dòng)化,,根本沒有實(shí)現(xiàn)對流程的自動(dòng)化控制;后者的專用性太強(qiáng),,不能靈活定義設(shè)計(jì)流程以滿足不同工程,、不同項(xiàng)目的要求。
工作流管理技術(shù)致力于業(yè)務(wù)流程的自動(dòng)化,。由于可降低成本和流程執(zhí)行時(shí)間,,提高工作效率,所以被業(yè)界廣泛使用并迅速發(fā)展,。其最大的特點(diǎn)是可以方便地描述業(yè)務(wù)流程,,并對業(yè)務(wù)的實(shí)施進(jìn)行監(jiān)控。這一特點(diǎn)恰恰解決了當(dāng)前水利設(shè)計(jì)圖檔管理中所存在的問題,。本文提出一種基于工作流管理技術(shù)的水利設(shè)計(jì)圖檔動(dòng)態(tài)管理模型,。該模型不僅使得設(shè)計(jì)流程自動(dòng)化,,而且用戶可以根據(jù)實(shí)際需要靈活地制定任意的設(shè)計(jì)流程,實(shí)現(xiàn)設(shè)計(jì)流程之間的無縫連接,,縮短設(shè)計(jì)周期。
1 工作流管理
1.1 工作流的有關(guān)定義
近年來,,不同的研究者對工作流分別提出了不同的定義,,它們分別從不同的角度對工作流概念進(jìn)行了描述,使人們對工作流的一些基本特征有了一定的理解,。這里列舉如下二種:
(1)工作流管理聯(lián)盟的定義
工作流是一類能夠完全或者部分自動(dòng)執(zhí)行的經(jīng)營過程,。它根據(jù)一系列過程、規(guī)則,、文檔,、信息或任務(wù)在不同的執(zhí)行者之間進(jìn)行傳遞與執(zhí)行。
(2)W.M.P. Van der Aalst 的定義
工作流是一切工作的偏序集,,工作的序列可以有多種方式,,例如工作X與Y,滿足X<Y,,當(dāng)且僅當(dāng)X在Y開始之前已經(jīng)就緒,。
以上這些對工作流的定義雖然表達(dá)方式略有不同,但都說明了一個(gè)問題,,即工作流是經(jīng)營過程的一個(gè)計(jì)算機(jī)實(shí)現(xiàn),,而工作流管理系統(tǒng)則是這一實(shí)現(xiàn)的軟件環(huán)境。
工作流管理聯(lián)盟給出的工作流管理系統(tǒng)的定義是:工作流管理系統(tǒng)是一個(gè)軟件系統(tǒng),,它完成工作流的定義和管理,,并按照在計(jì)算機(jī)中預(yù)先定義好的工作流邏輯推進(jìn)工作流實(shí)例的執(zhí)行。
工作流管理系統(tǒng)在實(shí)際系統(tǒng)中的應(yīng)用一般分為三個(gè)階段,,即模型建立階段,、模型實(shí)例化階段和模型執(zhí)行階段。圖1給出了工作流管理系統(tǒng)應(yīng)用的三個(gè)階段,。
由圖1 可以看出,,在工作流管理系統(tǒng)中工作流建模是最基礎(chǔ)也是最核心的模塊之一,為系統(tǒng)提供了描述實(shí)際業(yè)務(wù)流程的方法,、數(shù)據(jù)和信息,,是實(shí)施工作流管理系統(tǒng)中其他部分的前提。
1.2 工作流建模
工作流建模對現(xiàn)實(shí)世界中的業(yè)務(wù)流程進(jìn)行分析,,將之抽象為能被計(jì)算機(jī)處理的模型,。這一模型中包括工作流的一系列活動(dòng)、活動(dòng)之間的邏輯關(guān)系,、工作流參與者,、可能被調(diào)用的應(yīng)用以及所有與工作流相關(guān)的數(shù)據(jù),。其中工作流活動(dòng)指的是業(yè)務(wù)流程中的每一個(gè)業(yè)務(wù)環(huán)節(jié),工作流活動(dòng)和活動(dòng)之間的邏輯關(guān)系組成了工作流模型的核心部分,。這樣,,在進(jìn)行工作流活動(dòng)的定義時(shí),需要指明活動(dòng)擁有的轉(zhuǎn)換條件,、實(shí)施工作流的組織實(shí)體,、需要激活的應(yīng)用程序等相關(guān)數(shù)據(jù)。圖2為工作流管理聯(lián)盟定義的工作流活動(dòng)元模型,。
目前,,工作流管理領(lǐng)域中存在多種不同的建模方法,常用的建模方法可以歸納為5大類:腳本語言,、基于有向圖的方法,、基于規(guī)則的方法、基于邏輯的方法和代數(shù)方法,。針對不同的建模方法所生成的工作流模型表現(xiàn)形式也不同,,可以表現(xiàn)為文字形式、圖形形式或者一種形式化的語言符號(hào)等,。
(1)腳本語言
腳本語言中有描述控制流和數(shù)據(jù)流的語句結(jié)構(gòu),,它提供了一種簡明的描述方法,對于有經(jīng)驗(yàn)的設(shè)計(jì)者來說更易于使用,。它的主要缺點(diǎn)是缺乏流程本身的形式化語義,。語言的語義主要是供語言解釋器使用。
(2)基于有向圖的方法
使用狀態(tài)變遷圖,,流程中的活動(dòng)用節(jié)點(diǎn)表示,,控制流用邊表示。該方法的主要問題在于是否有形式化的語義,。在具有形式化語義的狀態(tài)變遷圖中,,使用最多的是Petri網(wǎng)和狀態(tài)圖。具有形式化語義的基于有向圖的方法可以轉(zhuǎn)換成其他建模方法,,如基于規(guī)則的,、時(shí)序邏輯的和腳本語言的方法。
(3)基于規(guī)則的方法
目前使用最多的是ECA規(guī)則,。ECA規(guī)則最早用于AOODBS,,而后被用于工作流管理領(lǐng)域。它具有形式化基礎(chǔ),,也可轉(zhuǎn)換為其他建模方法,,如Petri網(wǎng)、時(shí)序邏輯等,。但ECA規(guī)則的可視化工作量較大,,且當(dāng)規(guī)則集較大時(shí)難以管理,。
(4)基于邏輯的方法
該方法適合于描述系統(tǒng)的動(dòng)態(tài)性,其中時(shí)序邏輯是一種常用的方法,,它具有很好的形式化基礎(chǔ),,驗(yàn)證工作流模型的屬性比較方便。缺點(diǎn)是很難實(shí)現(xiàn)可視化,,不容易轉(zhuǎn)換成其他描述方法,,描述業(yè)務(wù)流程的系統(tǒng)行為太復(fù)雜。
(5)基于代數(shù)的方法
代數(shù)過程(process algebra)目前還局限在理論探討上,,只有一種基于過程代數(shù)的描述語言LOTOS被用于工作流管理領(lǐng)域。代數(shù)方法的主要缺點(diǎn)類似于基于邏輯的方法,,并且在自動(dòng)執(zhí)行和形式化驗(yàn)證方面表現(xiàn)得比基于邏輯的方法更差,,建模方法缺乏直觀性,難以理解,。
由以上分析可知,,各種建模方法各有優(yōu)缺點(diǎn)??傮w上,,基于有向圖的建模方法簡單直觀、容易理解,,尤其適用于流程較為固定,、異常情況較少的工作流,因而比較具有吸引力,。一個(gè)完整的工作流過程由一個(gè)無自環(huán)的有向圖構(gòu)成,。有向圖中的節(jié)點(diǎn)表示可執(zhí)行的步驟或任務(wù),節(jié)點(diǎn)間的有向弧代表了節(jié)點(diǎn)間的邏輯關(guān)系,。
2 水利設(shè)計(jì)圖檔工作流管理
2.1 水利圖檔設(shè)計(jì)流程
水利設(shè)計(jì)圖檔工作流管理是指對圖檔的設(shè)計(jì),、校對、校核,、審查,、審定、修改,、歸檔等一系列流轉(zhuǎn)操作的總稱,。這里稱每一個(gè)操作為一個(gè)工作流活動(dòng)節(jié)點(diǎn)。如圖3所示,,單個(gè)設(shè)計(jì)圖檔的流轉(zhuǎn)過程相對比較簡單固定,,且流轉(zhuǎn)過程中各活動(dòng)節(jié)點(diǎn)之間屬于松散耦合結(jié)構(gòu),活動(dòng)節(jié)點(diǎn)之間沒有嚴(yán)格的約束關(guān)系,,僅以時(shí)序關(guān)系約束為主,。
因此,,在水利設(shè)計(jì)圖檔工作流管理中,應(yīng)采用基于有向圖的建模方法,,將一系列的活動(dòng)及其之間的時(shí)序關(guān)系直觀地映射成一個(gè)由節(jié)點(diǎn)和有向弧組成的有向圖,。有向圖中的節(jié)點(diǎn)表示一個(gè)可執(zhí)行的活動(dòng),連接2個(gè)節(jié)點(diǎn)的有向弧表示活動(dòng)之間的時(shí)序關(guān)系,,可定義如下:
(1)有向圖G=(N,,L)為一個(gè)二元組,N={n1,,n2,,……nr}是節(jié)點(diǎn)的集合;L={l1,,l2,,……ls}是有向弧的集合,其中l(wèi)i=(nj,,nk)為從節(jié)點(diǎn)nj到節(jié)點(diǎn)nk的有向弧,,nj,nk∈N,。
(2)對于ni,,nj∈N,若有l(wèi)=(ni,,nj)∈L,,則ni為nj的一個(gè)前驅(qū)節(jié)點(diǎn),nj為ni的一個(gè)后繼節(jié)點(diǎn),。
(3)節(jié)點(diǎn)狀態(tài),。對于n∈N,有狀態(tài)函數(shù)State(n)={0,,1,,2},當(dāng)節(jié)點(diǎn)n處于未執(zhí)行狀態(tài)時(shí),,State(n)=0,;當(dāng)節(jié)點(diǎn)n處于正在執(zhí)行狀態(tài)時(shí),State(n)=1,;當(dāng)節(jié)點(diǎn)n處于完成執(zhí)行狀態(tài)時(shí),,State(n)=2。初始時(shí)刻,,對任意n,,State(n)=0。
(4)推進(jìn)規(guī)則,。有向圖的推進(jìn)規(guī)則由節(jié)點(diǎn)狀態(tài)的改變和有向弧發(fā)生轉(zhuǎn)移二個(gè)因素決定,。其步驟為:
?、偈紫燃せ钇鹗脊?jié)點(diǎn),假設(shè)為n1,,并將節(jié)點(diǎn)狀態(tài)State (n1)置為2,。
②當(dāng)節(jié)點(diǎn)ni執(zhí)行完畢,,節(jié)點(diǎn)狀態(tài)State(ni)=2時(shí),,搜索節(jié)點(diǎn)ni的所有后繼節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)ni的完成情況選擇出將要被激活的后繼節(jié)點(diǎn)(可以是一個(gè),,也可以是多個(gè)),。這里假設(shè)將要被激活的后繼節(jié)點(diǎn)為nj。
?、蹖⒐?jié)點(diǎn)nj的節(jié)點(diǎn)狀態(tài)State(ni)置為1,,然后,進(jìn)行有向?。╪i,nj)的轉(zhuǎn)移,,將執(zhí)行權(quán)從節(jié)點(diǎn)ni 轉(zhuǎn)移到節(jié)點(diǎn)nj上,,開始執(zhí)行節(jié)點(diǎn) nj。反復(fù)執(zhí)行②,,③,,直至整個(gè)流程完成。
2.2 利用Visio進(jìn)行建模
目前,,基于有向圖的建模工具大多是用戶自己從頭開發(fā)的,,這種自制的工具往往使用不靈活、不方便,,對用戶的操作有很大限制,。而且,現(xiàn)有建模工具不便于對復(fù)雜流程的建模,。另外,,這種建模工具對所建模型難以實(shí)現(xiàn)驅(qū)動(dòng),往往流于形式,。綜上所述,,本文力求找到一種建模工具,不僅使用方便,,能夠處理復(fù)雜流程,,而且最重要的是能夠?qū)λP瓦M(jìn)行開發(fā)使用。
Visio是一種用于建模的工具,,通過組合Microsoft Visio繪圖和程序來實(shí)現(xiàn)現(xiàn)實(shí)世界的模型化,。和現(xiàn)有的工作流建模工具相比,,利用Visio建模的優(yōu)點(diǎn)在于:
(1)極大地縮短開發(fā)時(shí)間。開發(fā)人員不需要從頭開發(fā)所有功能,,使用在內(nèi)置產(chǎn)品中的現(xiàn)有功能即可實(shí)現(xiàn)工作流建模,,這使得開發(fā)人員可以將精力放在工作流引擎的研究與開發(fā)上。
(2)建模過程簡單,、清晰,,用戶可以方便地畫出類型各異、線條流暢的圖形,。
(3)開發(fā)人員還可以編寫程序來控制圖形以及繪圖過程,。程序可以幫助創(chuàng)建繪圖、分析繪圖,,或者在繪圖和外部數(shù)據(jù)源之間傳輸信息,。自定義程序可以使用任意一種支持將Automation作為客戶的編程語言來編寫,例如VBA,、VB或C++等,。
(4)Visio繪圖與數(shù)據(jù)庫可以同步,提高了開發(fā)模型的靈活性,。開發(fā)人員可以從Visio圖形中自動(dòng)提取數(shù)據(jù)保存到數(shù)據(jù)庫中,,也可以從外部數(shù)據(jù)創(chuàng)建圖形。
3 應(yīng)用實(shí)例
現(xiàn)在以一個(gè)水利設(shè)計(jì)項(xiàng)目為實(shí)例來詳細(xì)說明利用Visio建模的具體過程,。
(1)根據(jù)實(shí)際需要?jiǎng)?chuàng)建流程圖模板
流程圖模板中包含水利設(shè)計(jì)中常用的活動(dòng)節(jié)點(diǎn),,如設(shè)計(jì)、校對,、審定,、歸檔等主圖形。拖動(dòng)主圖形到繪圖頁即可生成相應(yīng)圖形,。在創(chuàng)建主圖形時(shí),,根據(jù)工作流管理聯(lián)盟定義的活動(dòng)元模型,為它們添加自定義屬性,,如活動(dòng)的起止日期,、活動(dòng)的參與人員、活動(dòng)需要激活的應(yīng)用程序,、活動(dòng)的狀態(tài)等,,如圖4所示。
(2)利用流程圖模板畫出所需流程圖
流程圖中的節(jié)點(diǎn)分為三種節(jié)點(diǎn):開始節(jié)點(diǎn),、活動(dòng)節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn),。活動(dòng)節(jié)點(diǎn)代表的是業(yè)務(wù)流程中的原子級(jí)活動(dòng)環(huán)節(jié),對應(yīng)于實(shí)際的操作,?;顒?dòng)的執(zhí)行者可以是一段程序,也可以是某一個(gè)人,。工作流模型并不負(fù)責(zé)活動(dòng)的執(zhí)行,,而是密切監(jiān)視活動(dòng)狀態(tài)的變化。開始節(jié)點(diǎn)是一個(gè)業(yè)務(wù)過程開始的標(biāo)志,,開始節(jié)點(diǎn)并不對應(yīng)實(shí)際的操作,。每一個(gè)工作流過程有且僅有一個(gè)開始節(jié)點(diǎn)。結(jié)束節(jié)點(diǎn)是一個(gè)業(yè)務(wù)過程結(jié)束的標(biāo)志,,它并不對應(yīng)實(shí)際的操作,。每一個(gè)工作流過程有且僅有一個(gè)結(jié)束節(jié)點(diǎn)。
流程圖中的有向弧用來定義二個(gè)活動(dòng)之間的執(zhí)行順序,。當(dāng)有向弧的起始節(jié)點(diǎn)執(zhí)行完畢后,,工作流管理系統(tǒng)根據(jù)流程推進(jìn)規(guī)則進(jìn)行活動(dòng)導(dǎo)航,使有向弧的終止節(jié)點(diǎn)能夠被執(zhí)行,。
(3)將流程圖中的屬性信息導(dǎo)出到數(shù)據(jù)庫中
這時(shí)建模工作已經(jīng)完成,,與之對應(yīng)的數(shù)據(jù)庫也同樣能夠反映整個(gè)流程。開發(fā)人員既可以直接對流程圖進(jìn)行推進(jìn),,也可以基于結(jié)構(gòu)化的關(guān)系數(shù)據(jù)庫進(jìn)行操作,,以降低開發(fā)應(yīng)用的難度。
4 結(jié)束語
工作流是辦公自動(dòng)化,、并行工程、經(jīng)營過程重構(gòu)等研究領(lǐng)域的熱點(diǎn)技術(shù),。本文針對水利設(shè)計(jì)項(xiàng)目提出的基于有向圖的工作流模型實(shí)現(xiàn)了對簡單流程的快速建模,。利用Visio建模的方法,還可以實(shí)現(xiàn)對復(fù)雜流程的描述,,例如,,利用UML中的活動(dòng)圖(Activity Diagram)可以實(shí)現(xiàn)多個(gè)約束條件的相與、相或,、異或等操作,,具有極大的實(shí)用價(jià)值。
參考文獻(xiàn)
1 羅海濱,,范玉順,,吳澄.工作流技術(shù)綜述.軟件學(xué)報(bào),2000,;11(7)
2 董章震,,潘捷.工作流建模工具.計(jì)算機(jī)輔助設(shè)計(jì)與制造,2002,;(1)
3 汪濤,,黃力芹,,吳耿峰.工作流管理的發(fā)展歷程與趨勢.計(jì)算 機(jī)工程與科學(xué),2001,;23(1)
4 奚偉,,周羽.基于工作流的過程文檔動(dòng)態(tài)管理模型.清華大學(xué) 學(xué)報(bào),2001,;41(10)
5 范玉順.工作流管理技術(shù)基礎(chǔ).北京:清華大學(xué)出版社,,2001
6 Microsoft公司.開發(fā)Microsoft Visio解決方案.北京:北京大 學(xué)出版社,2002