湯 劼, 施 俊
(1.江海職業(yè)技術(shù)學(xué)院, 江蘇 揚(yáng)州 225000; 2.揚(yáng)州職業(yè)大學(xué), 江蘇 揚(yáng)州 225009)
在當(dāng)今這個(gè)信息技術(shù)飛速發(fā)展的時(shí)代,各類(lèi)企業(yè)為了提高生產(chǎn)力,節(jié)約成本,都迫切需要一個(gè)基于流程化管理的系統(tǒng),以實(shí)現(xiàn)企業(yè)內(nèi)外資源的整合。其中,以工作流技術(shù)為核心的管理系統(tǒng)可以實(shí)現(xiàn)業(yè)務(wù)流程的自動(dòng)管理,提高實(shí)際生產(chǎn)過(guò)程中的靈活性,該系統(tǒng)已在計(jì)算機(jī)、電力、金融、物流等行業(yè)得到應(yīng)用。
在日常工作中,工作流(WF)這三個(gè)字一般不為人們所知。簡(jiǎn)單地說(shuō),一個(gè)典型的工作流定義了必要的步驟,步驟可以是有序的,也可以是無(wú)序的。舉例來(lái)說(shuō),某公司一個(gè)生產(chǎn)訂單的生產(chǎn)過(guò)程,其流程如圖1所示。
圖1 訂單生產(chǎn)過(guò)程
在這個(gè)例子中,流程的每個(gè)步驟是必需且有序的,到最終生產(chǎn)完成并通知客戶提貨之前,任何一個(gè)步驟的失敗都將導(dǎo)致整個(gè)流程中斷。這個(gè)工作流比較簡(jiǎn)單,路徑非常單一,而復(fù)雜的工作流中會(huì)涉及到更多的分支。大多數(shù)程序中,涉及的過(guò)程處理或多或少都可以看做是廣義上的工作流。關(guān)于工作流,各國(guó)的研究者和機(jī)構(gòu)給出了不同的定義。
目前,一般將工作流定義為:通過(guò)定義一系列的過(guò)程規(guī)則、文檔、信息或任務(wù),不同的執(zhí)行者可以執(zhí)行或者傳遞[1]?;蛘?工作流也可解釋為可以產(chǎn)生某種結(jié)果的一系列任務(wù),即文檔或項(xiàng)目的自動(dòng)轉(zhuǎn)移可以根據(jù)業(yè)務(wù)流程相關(guān)聯(lián)的任務(wù)順序進(jìn)行操作。 而工作流本身只是一個(gè)事務(wù)流程,它由事務(wù)邏輯所決定。一般來(lái)說(shuō)一系列狀態(tài)和條件決定了流程的定義。工作流是業(yè)務(wù)流程的全部或部分自動(dòng)化過(guò)程,在流程中,一個(gè)參與者與另一個(gè)參與者,會(huì)按照預(yù)設(shè)的原則處理相關(guān)任務(wù)、信息和文檔。工作流技術(shù)的幾個(gè)環(huán)節(jié)的定義見(jiàn)表1。
表1 工作流技術(shù)的環(huán)節(jié)定義
工作流技術(shù)起源于辦公自動(dòng)化(OA)領(lǐng)域和生產(chǎn)自動(dòng)化。一些企業(yè)為適應(yīng)自身發(fā)展就建立了適用于該企業(yè)的可商品化的表單傳遞應(yīng)用系統(tǒng),這可以被認(rèn)為是工作流系統(tǒng)的雛形。20世紀(jì)80年代期間,FileNet與ViewStar等公司首先開(kāi)發(fā)了相應(yīng)工作流產(chǎn)品,把工作流產(chǎn)品推向了市場(chǎng);20世紀(jì)90年代,隨著計(jì)算機(jī)的普及程度進(jìn)一步提高和因特網(wǎng)不斷延伸,工作流技術(shù)的研究和開(kāi)發(fā)走向了蓬勃發(fā)展的新階段,研究人員的研究層次更深、領(lǐng)域更廣。進(jìn)入21世紀(jì)以后,隨著Web網(wǎng)頁(yè)應(yīng)用技術(shù)的廣泛使用,許多企業(yè)逐漸推廣Web程序進(jìn)行業(yè)務(wù)部署,推出了相應(yīng)Web版的工作流產(chǎn)品,市場(chǎng)上工作流產(chǎn)品極其豐富。2000年前后,工作流技術(shù)在國(guó)內(nèi)逐漸發(fā)展起來(lái),政府將軟件產(chǎn)業(yè)作為重要支柱產(chǎn)業(yè),鼓勵(lì)發(fā)展電子政務(wù)和辦公自動(dòng)化系統(tǒng)。
安全性是工作流系統(tǒng)的一個(gè)關(guān)鍵性的問(wèn)題,涉及很多方面的內(nèi)容,包括完整性、可用性、保密性、授權(quán)、身份認(rèn)證、匿名訪問(wèn)、授權(quán)、職責(zé)分割[2]。隨著工作流技術(shù)的不斷應(yīng)用,對(duì)工作流授權(quán)的研究正日益受到領(lǐng)域?qū)<业闹匾暋?/p>
工作流管理系統(tǒng)WFMS離不開(kāi)計(jì)算機(jī),是一個(gè)完整的商務(wù)過(guò)程的工具集合。工作流管理系統(tǒng)是一個(gè)計(jì)算機(jī)軟件系統(tǒng),它按照在計(jì)算機(jī)中預(yù)先定義好的工作流邏輯來(lái)推進(jìn)工作流實(shí)例的執(zhí)行[3-4]?;蛘哒f(shuō)工作流管理系統(tǒng)是支持企業(yè)經(jīng)營(yíng)過(guò)程并監(jiān)控其執(zhí)行過(guò)程的一種計(jì)算機(jī)軟件系統(tǒng)。
雖然不同領(lǐng)域的工作流管理系統(tǒng)的應(yīng)用范圍有所不同,但它們還是具有許多共同的特征。一般來(lái)說(shuō)工作流管理系統(tǒng)是將相關(guān)人員、組織、資源設(shè)備和信息源組合成整體。所以,工作流管理系統(tǒng)一般包含三種基本功能,一是建立階段功能,即建立工作流程和相關(guān)活動(dòng)的定義與建模;二是運(yùn)行階段人機(jī)交互功能,即客戶可對(duì)計(jì)算機(jī)各種工具在應(yīng)用中加以控制,實(shí)現(xiàn)人機(jī)交互[5];三是運(yùn)行階段控制功能,也可稱(chēng)為操作的控制階段,它是執(zhí)行工作流,并完成每一個(gè)流程的活動(dòng)排序以及進(jìn)行功能的調(diào)度。
與工作流管理系統(tǒng)相關(guān)的幾個(gè)基木概念,見(jiàn)表2。
表2 工作流管理系統(tǒng)基本概念
工作流技術(shù)發(fā)展到今天已越來(lái)越成熟,在諸多領(lǐng)域都有應(yīng)用,例如在文檔管理、電子郵件與目錄服務(wù)、群件、基于事務(wù)的應(yīng)用、項(xiàng)目計(jì)劃支撐軟件等方面都有所涉及[6]。
基于工作流過(guò)程本身的特點(diǎn)和系統(tǒng)的應(yīng)用領(lǐng)域的不同,對(duì)工作流產(chǎn)品的分類(lèi)方式也不相同。根據(jù)所實(shí)現(xiàn)的業(yè)務(wù)過(guò)程,可以把工作流管理系統(tǒng)分為四種類(lèi)型,分別是管理型工作流、設(shè)定型工作流、協(xié)作型工作流和生產(chǎn)型工作流[7]。
比如一個(gè)大學(xué)生上完大學(xué)里所有課程并通過(guò)考試,就可以申請(qǐng)相應(yīng)的學(xué)位,這就是一個(gè)典型的管理型工作流;設(shè)定型工作流則與管理型工作流類(lèi)似,由參與的用戶所決定,一般用于處理一些特殊情況;協(xié)作型工作流則是參與者協(xié)作的次數(shù)較多,某一個(gè)步驟可能要反復(fù)執(zhí)行才能得到結(jié)果,甚至返回上一階段;生產(chǎn)型工作流是與業(yè)務(wù)組織的功能直接相關(guān)的工作流,一般應(yīng)用于復(fù)雜環(huán)境,整個(gè)過(guò)程中涉及的人員和組織都比較多。
在實(shí)際中,很多軟件都有工作流的思想包含在其中。軟件中的工作流就是用一系列抽象出來(lái)的活動(dòng)來(lái)描述現(xiàn)實(shí)世界中的一個(gè)流程。活動(dòng)則可以理解成子流程,是這一過(guò)程中的一個(gè)步驟。 目前,大多數(shù)軟件對(duì)工作流的處理方式并沒(méi)有開(kāi)放,缺乏共通性。不同軟件定義的工作流無(wú)法被復(fù)用和擴(kuò)展,這對(duì)軟件的快速更新顯然是極為不利的。微軟的WF就是將創(chuàng)建一個(gè)工作流所需要的各個(gè)焊接抽象出來(lái),供開(kāi)發(fā)者使用。WF并不關(guān)心開(kāi)發(fā)者要處理什么具體事務(wù),只要處理的事務(wù)帶有流程的性質(zhì),就可以應(yīng)用WF。WF有兩種工作模式分別是面向人與面向系統(tǒng),兩種工作模式將努力放到一個(gè)工作流之中。
在.NET Framework中工作流是作為一套類(lèi)庫(kù)來(lái)使用,它封裝了一些基本的流程節(jié)點(diǎn)組件和流程組件,并支持工作流概念里的順序工作流和狀態(tài)機(jī)工作流。而順序工作流和狀態(tài)機(jī)工作流是WF的兩種形式。通常情況下,如果一個(gè)流程重點(diǎn)關(guān)注的是順序,而較少涉及對(duì)象狀態(tài)的變化,那么多用順序流;如果流程非常依賴于對(duì)象的狀態(tài),而對(duì)象的狀態(tài)在整個(gè)流程中會(huì)發(fā)生多次變化,那么基于狀態(tài)的工作流將是更好的選擇。
在.NET 3.5中一個(gè)重要的組成部分是工作流基礎(chǔ)框架,這是微軟公司推出的一個(gè)通用的工作流平臺(tái)。嚴(yán)格來(lái)說(shuō),這不是一個(gè)非常完善的工作流開(kāi)發(fā)框架,但是作為平臺(tái)來(lái)說(shuō),它是一個(gè)非常優(yōu)秀的產(chǎn)品。工作流常常涉及的政務(wù)、辦公等領(lǐng)域,它也可以應(yīng)用到任何擁有流程概念的事務(wù)處理當(dāng)中。工作流基礎(chǔ)框架為工作流程序提供了運(yùn)行環(huán)境,簡(jiǎn)化了工作流程序的開(kāi)發(fā)。不過(guò),工作流基礎(chǔ)框架不只提供了這些功能,還把很多工作流程序可能會(huì)用到的相關(guān)功能都打包放到了這個(gè)框架之中。
其實(shí),任何開(kāi)發(fā)人員都編寫(xiě)過(guò)工作流程序,只要程序根據(jù)外部輸入的數(shù)據(jù)和條件來(lái)判斷處理數(shù)據(jù)然后再返回結(jié)果,都可以算是工作流程序。在沒(méi)有通用的工作流框架之前,開(kāi)發(fā)人員不得不自己編寫(xiě)所有相關(guān)的代碼,在業(yè)務(wù)流程中,充滿著if-else或switch語(yǔ)句,不僅讓代碼難以編寫(xiě)和維護(hù),也讓業(yè)務(wù)邏輯顯得復(fù)雜。同時(shí),對(duì)業(yè)務(wù)邏輯最了解的人員往往不是開(kāi)發(fā)人員,而是軟件使用者。這些軟件的直接使用者不能編寫(xiě)代碼,也不能修改代碼,因此就會(huì)常常出現(xiàn)開(kāi)發(fā)人員編寫(xiě)的程序不能滿足軟件使用者的需求或者編寫(xiě)完畢的流程不能被很容易地修改,工作流基礎(chǔ)框架以及其他一些工作流平臺(tái)就是為了解決這些問(wèn)題而出現(xiàn)的。豐富的圖形界面設(shè)計(jì)器被內(nèi)嵌于工作流基礎(chǔ)框架之中,如需創(chuàng)建的ASP.NET Web Forms、Windows Forms或者WPF應(yīng)用,它都可以集成。工作流平臺(tái)的出現(xiàn)不僅簡(jiǎn)化了開(kāi)發(fā)過(guò)程,也使得熟悉的人員可以迅速定義規(guī)則,程序員則可以專(zhuān)心于系統(tǒng)的開(kāi)發(fā)工作。
工作流基礎(chǔ)框架中的工作流引擎是工作流執(zhí)行的驅(qū)動(dòng)器,他的職責(zé)是執(zhí)行組成工作流的活動(dòng),為工作流提供并執(zhí)行調(diào)度管理、狀態(tài)管理和條件管理等任務(wù),它可以把狀態(tài)信息存儲(chǔ)起來(lái),這意味著WF工作流執(zhí)行不需要從開(kāi)始到結(jié)束,可以暫時(shí)離線,也可以長(zhǎng)時(shí)間等待活動(dòng)的執(zhí)行。圖2所示為WF執(zhí)行引擎的組成結(jié)構(gòu)[8]。
(1)Hosting Proces是指工作流引擎所在的進(jìn)程。由于工作流沒(méi)有一個(gè)多進(jìn)程的并發(fā)結(jié)構(gòu),它的引擎只能運(yùn)行在某一個(gè)進(jìn)程當(dāng)中。Hosting Process可以為WF提供一些底層的地址。與WCF服務(wù)一樣,WF也可以運(yùn)行在多種宿主環(huán)境中,如.NET程序(包括Winform、控制臺(tái))、ASP.NET、Windows后臺(tái)服務(wù)和SharePoint服務(wù)器。由于各個(gè)宿主環(huán)境有較大的差異,WF的服務(wù)層有多個(gè)Hosting Process類(lèi)分別負(fù)責(zé)對(duì)不同的運(yùn)行環(huán)境提供支持。
(2)工作流引擎是WF運(yùn)行時(shí)層,它管理著工作流的整個(gè)生命周期,并對(duì)任務(wù)調(diào)度、規(guī)則引擎和追蹤服務(wù)負(fù)責(zé)。
圖2 工作流基礎(chǔ)框架架構(gòu)
(3)工作流模型層為工作流程序提供模型支持,開(kāi)發(fā)人員的主要職責(zé)是按照需求定義工作流模型和編寫(xiě)Activity代碼。
(4)工作流宿主就是工作流的管理者,稱(chēng)為對(duì)象,這是由工作流在工作時(shí)的狀態(tài)所決定的。
在.NET中,工作流模型按其工作方式可以分為順序型和狀態(tài)機(jī),這兩種工作流模型沒(méi)有嚴(yán)格的區(qū)分,并不是說(shuō)順序型的工作流不能執(zhí)行狀態(tài)機(jī)工作流的任務(wù),只是效率不夠罷了。順序型工作流意味著連續(xù)執(zhí)行。如果任務(wù)的分支較少,且基本會(huì)按照定義的狀態(tài)進(jìn)行轉(zhuǎn)換,那么應(yīng)該使用順序型工作流,如圖3所示。狀態(tài)機(jī)工作流則是不一樣的情況,比如說(shuō)一個(gè)任務(wù)有很多的可能性(狀態(tài))或是分支,那么狀態(tài)機(jī)工作流是更好的選擇,如圖4所示。
圖3 順序型工作流 圖4 狀態(tài)機(jī)工作流
在信息技術(shù)飛速發(fā)展的今天,各個(gè)領(lǐng)域都加快了自動(dòng)化與半自動(dòng)化的進(jìn)程。工作流技術(shù)的出現(xiàn),有效解決了軟件設(shè)計(jì)與管理中的自動(dòng)化與半自動(dòng)化問(wèn)題。目前在軟件開(kāi)發(fā)中,開(kāi)發(fā)者越來(lái)越多地會(huì)將工作流技術(shù)引入其中,讓軟件開(kāi)發(fā)和管理的過(guò)程變成為一個(gè)可以自動(dòng)流轉(zhuǎn)的過(guò)程,這個(gè)過(guò)程和OA的運(yùn)轉(zhuǎn)過(guò)程類(lèi)似,管理者只需做軟件開(kāi)發(fā)過(guò)程模型搭建等工作,從根本上減輕管理者的負(fù)擔(dān),大大提高了工作效率。
揚(yáng)州職業(yè)大學(xué)學(xué)報(bào)2019年1期