孫雪松
■摘 要:工作流是實(shí)現(xiàn)辦公自動化的一項(xiàng)重要的技術(shù)?;贐PS的工作流技術(shù)構(gòu)建了應(yīng)用系統(tǒng)功能框架,可以實(shí)現(xiàn)對流程全生命周期的管理。通過對流程的設(shè)計(jì)建模、部署、運(yùn)行、監(jiān)控、訪問權(quán)限控制等管理功能,實(shí)現(xiàn)了流程的標(biāo)準(zhǔn)化、規(guī)范化,從而提高了辦公效率。本文對基于BPS的工作流技術(shù)進(jìn)行深入研究,結(jié)合業(yè)務(wù)工作實(shí)際進(jìn)行了應(yīng)用實(shí)例的開發(fā),探討了管理系統(tǒng)中的流程設(shè)計(jì)過程,對提高業(yè)務(wù)過程控制和業(yè)務(wù)協(xié)同機(jī)制具有重要意義。
■關(guān)鍵詞:工作流技術(shù);管理系統(tǒng);應(yīng)用
隨著信息化程度的不斷提高,許多業(yè)務(wù)的處理方式逐漸由紙質(zhì)操作轉(zhuǎn)為信息系統(tǒng)進(jìn)行處理和管理。通常情況下,業(yè)務(wù)處理都需要多個(gè)部門、多個(gè)人員協(xié)同工作,依據(jù)流程的特定順序完成工作。傳統(tǒng)的信息系統(tǒng)在任務(wù)流程層面缺乏一種信息化、可視化的動態(tài)監(jiān)控研發(fā)設(shè)計(jì)全過程的有效手段,不能按規(guī)范的設(shè)計(jì)流程引導(dǎo)和驅(qū)動設(shè)計(jì)過程,因此,制約了有效設(shè)計(jì)知識的傳承和協(xié)同設(shè)計(jì)能力的提升。
筆者通過對現(xiàn)有工作流的分析與研究,發(fā)現(xiàn)其存在著一些不足。例如,有些工作流引擎在運(yùn)行時(shí)需要解釋預(yù)先設(shè)定好的工作流文件從而導(dǎo)致在流程運(yùn)行中無法靈活修改。對于邏輯復(fù)雜的大型流程來說,若存在節(jié)點(diǎn)變化,需逐個(gè)修改流程定義文件。重量級的流程引擎可以滿足大部分需求,但存在修改起來困難、學(xué)習(xí)成本高和部署復(fù)雜等問題,而輕量級的引擎則存在無法滿足需求等問題。針對這些問題,筆者提出了基于BPS的工作流技術(shù)在管理系統(tǒng)中的應(yīng)用。
(一)工作流的組成
工作流是處理業(yè)務(wù)的步驟,是將一個(gè)復(fù)雜的工作分為多個(gè)步驟來完成。每個(gè)步驟或者小的環(huán)節(jié)安排一個(gè)或者多個(gè)參與者來完成。在事務(wù)的處理過程中,還需要對事務(wù)進(jìn)行監(jiān)控和管理,從而提高企業(yè)的工作效率和管理水平。在工作流中,最基本的兩個(gè)元素是活動與活動之間的連接關(guān)系?;顒邮菢I(yè)務(wù)過程中的任務(wù),對應(yīng)著業(yè)務(wù)流程中的某個(gè)步驟,而連接關(guān)系則表示業(yè)務(wù)規(guī)則。根據(jù)不同的業(yè)務(wù)流程和相應(yīng)的規(guī)則,信息會在不同的執(zhí)行者之間流轉(zhuǎn)和處理。
1.業(yè)務(wù)流程
描述一個(gè)完整的業(yè)務(wù)過程,它由若干活動組成,包括流程的基本信息、開始和結(jié)束條件、組成的活動、活動間流轉(zhuǎn)的規(guī)則、需要用戶執(zhí)行的工作任務(wù)(工作項(xiàng))、可能調(diào)用的應(yīng)用程序以及流程相關(guān)數(shù)據(jù)等信息。提交到流程定義庫后會包含流程定義編號(流程定義的唯一標(biāo)識)、流程定義名稱、版本號、流程定義描述以及提交時(shí)間等描述。
2.過程定義
過程定義包含在流程定義之中,代表了一個(gè)相對獨(dú)立的邏輯工作單元。一個(gè)活動代表一個(gè)需要由相關(guān)資源處理,或者由計(jì)算機(jī)處理的任務(wù)。其中,定義了該活動的基本信息、執(zhí)行該活動的參與者、時(shí)間限制、工作項(xiàng)信息、觸發(fā)事件和啟動策略等信息。
3.活動
活動定義過程中每一個(gè)節(jié)點(diǎn)所需完成的工作。活動包含在流程定義之中,代表了一個(gè)相對獨(dú)立的邏輯工作單元。定義了活動基本信息、參與者、工作項(xiàng)信息、觸發(fā)事件和啟動策略等信息。
4.流程實(shí)例
當(dāng)流程定義提交并發(fā)布到服務(wù)器以后,就可以啟動該流程。啟動時(shí)會創(chuàng)建流程定義的一個(gè)實(shí)例,稱為流程實(shí)例。同一個(gè)流程定義可以有多個(gè)流程實(shí)例。每一個(gè)流程實(shí)例會被保存在流程實(shí)例庫中,包括流程實(shí)例編號(唯一標(biāo)識)、流程實(shí)例名稱、流程定義編號、流程實(shí)例狀態(tài)、流程實(shí)例啟動者、流程實(shí)例啟動時(shí)間和相關(guān)數(shù)據(jù)等信息。
5.活動實(shí)例
流程實(shí)例中的每個(gè)活動稱為活動實(shí)例。每一個(gè)活動實(shí)例會被保存在活動實(shí)例庫中,包括活動實(shí)例編號(唯一標(biāo)識)、活動實(shí)例的狀態(tài)、所屬的活動定義編號以及流程實(shí)例編號、時(shí)間限制、是否超時(shí)和創(chuàng)建時(shí)間等信息。
6.工作流管理系統(tǒng)
一套完整的工作流創(chuàng)建和使用的計(jì)算機(jī)管理系統(tǒng),其主要功能是完成對流程及組成活動的定義與建模、在執(zhí)行中對業(yè)務(wù)流程進(jìn)行協(xié)調(diào)管理、完成系統(tǒng)與參與者或其他系統(tǒng)的交互。
7.工作項(xiàng)
表示流程實(shí)例在流轉(zhuǎn)過程中為完成某個(gè)活動實(shí)例需要參與者做的工作。一個(gè)活動實(shí)例可以對應(yīng)一個(gè)或多個(gè)工作項(xiàng)。每個(gè)工作項(xiàng)會被保存在工作項(xiàng)庫中,包括工作項(xiàng)編號(唯一標(biāo)識)、參與者、工作項(xiàng)的狀態(tài)、所屬的活動實(shí)例編號、流程實(shí)例編號等信息。
(二)BPS原理及機(jī)制
BPS是完全基于業(yè)務(wù)化思想實(shí)現(xiàn)的SOA流程平臺。在國際工作流管理聯(lián)盟所描述的基礎(chǔ)上進(jìn)行了改進(jìn),旨在實(shí)現(xiàn)在正確的時(shí)間將正確的任務(wù)按照正確的順序交給正確的人。
在開發(fā)期間,利用流程定義工具定義流程,通過調(diào)用組織模型接口獲取組織模型或外部相關(guān)應(yīng)用。在運(yùn)行期間,通過流程引擎來實(shí)現(xiàn)相應(yīng)的工作。BPS能夠?qū)崿F(xiàn)解釋工作流定義過程、控制流轉(zhuǎn)過程事務(wù)狀態(tài)轉(zhuǎn)變提供方位接口、監(jiān)控管理流程流轉(zhuǎn)等功能,使流程具有穩(wěn)定性、易維護(hù)性、靈活性及高可靠性等特點(diǎn)。
(一)工作流引擎設(shè)計(jì)
工作流引擎對于流程的執(zhí)行過程中的管理主要分為流程發(fā)起、流程流轉(zhuǎn)、流程終止以及流程查詢?,F(xiàn)階段存在的大多數(shù)重量級的工作流引擎往往將實(shí)現(xiàn)部分放在邏輯層中進(jìn)行封裝處理,從而導(dǎo)致當(dāng)流程運(yùn)轉(zhuǎn)時(shí)存在較多配置文件。部署時(shí),通常需要考慮全套的工作流引擎?;贐PS的工作流引擎主要針對流程執(zhí)行的4種功能作為儲存過程進(jìn)行設(shè)計(jì)。在創(chuàng)建流程定義的相關(guān)靜態(tài)數(shù)據(jù)表單外,還建立了流程運(yùn)行相關(guān)表和流程歷史相關(guān)表,分別用來保存流程運(yùn)行時(shí)的數(shù)據(jù)及流程完成后的歷史數(shù)據(jù)。針對流程執(zhí)行過程中的4種功能分別做如下操作。
1.流程發(fā)起
在流程啟動后,生成流程相關(guān)信息,并將信息分為流程層面、活動層面及工作項(xiàng)層面,將信息存放到流程業(yè)務(wù)表和運(yùn)行相關(guān)表中,并標(biāo)記流程及相關(guān)節(jié)點(diǎn)狀態(tài)信息。
2.流程流轉(zhuǎn)
在流程流轉(zhuǎn)過程中,流程層面的表中始終保持流程狀態(tài)可用,將節(jié)點(diǎn)活動層面數(shù)據(jù)及工作項(xiàng)層面數(shù)據(jù)更新為“結(jié)束”狀態(tài)并寫入流程明細(xì)表中。
3.流程終止
在流程終止時(shí),將流程相關(guān)信息從運(yùn)行表中刪除并加入流程歷史表中。
4.流程查詢
其實(shí)質(zhì)是指對運(yùn)行中的流程及已完成的流程的監(jiān)控與使用。
(二)數(shù)據(jù)模型設(shè)計(jì)
流程實(shí)例是流程與業(yè)務(wù)關(guān)聯(lián)的紐帶。因此,將業(yè)務(wù)表與流程進(jìn)行關(guān)聯(lián)是實(shí)現(xiàn)工作流的基礎(chǔ)。將流程引擎相關(guān)數(shù)據(jù)通過流程實(shí)例編號關(guān)聯(lián),通過映射表將業(yè)務(wù)系統(tǒng)中的業(yè)務(wù)表主鍵與流程實(shí)例編號關(guān)聯(lián),從而能夠獲取流程與業(yè)務(wù)對應(yīng)關(guān)系,得到相應(yīng)信息,得到流程開發(fā)中的數(shù)據(jù)模型。
(三)服務(wù)接口
工作流引擎提供用于進(jìn)行工作流部署和執(zhí)行及管理的服務(wù)接口。通過該接口可以操控服務(wù)相對應(yīng)的數(shù)據(jù)庫表。服務(wù)接口主要包括以下幾種類型。
一是資源服務(wù)組件。該組件是資源管理類,其提供了管理和控制流程發(fā)布包和流程定義的操作。主要是通過工作流建模工具將業(yè)務(wù)流程的定義部署到服務(wù)器上,同時(shí),也能提供引擎中發(fā)布的包含流程的查詢操作。對發(fā)布包的激活操作或暫停操作就是對應(yīng)的流程定義操作。暫停意味著不允許執(zhí)行任何操作,而激活則是暫停所對應(yīng)的反向操作,即能夠激活多種資源。例如,包含在發(fā)布包里的文件或引擎自動生成的流程圖等流程信息。
二是運(yùn)行服務(wù)組件。該組件是流程的運(yùn)行管理類。通過這一組件可以獲取流程運(yùn)行中的相關(guān)信息。
三是任務(wù)服務(wù)組件。該組件是流程的任務(wù)管理類。通過這一組件可以獲取流程中每個(gè)工作項(xiàng)的相關(guān)信息。
四是歷史服務(wù)組件。該組件是流程的歷史管理類。流程結(jié)束后,流程實(shí)例信息會自動歸結(jié)到歷史信息數(shù)據(jù)庫表內(nèi)。因此,可以通過此組件查詢流程的歷史信息。流程引擎會保存許多信息。例如,流程啟動時(shí)間、參與人、結(jié)束時(shí)間和流程相關(guān)數(shù)據(jù)等。通常情況下我們會通過這個(gè)類型查詢到相關(guān)信息。
五是管理服務(wù)組件。該組件是流程引擎管理類,其提供了關(guān)于流程引擎的管理和維護(hù)功能。這些功能一般不在工作流驅(qū)動的應(yīng)用程序中使用,而是用于對流程引擎系統(tǒng)本身的維護(hù)方面。
(一)需求分析
系統(tǒng)內(nèi)一般通過工作流建立一個(gè)完善的管理流程體系。工作流一般由開始節(jié)點(diǎn)、人工活動節(jié)點(diǎn)、自由活動節(jié)點(diǎn)、網(wǎng)關(guān)和結(jié)束節(jié)點(diǎn)構(gòu)成。每個(gè)流程都包含且僅包含一個(gè)開始節(jié)點(diǎn)和一個(gè)結(jié)束節(jié)點(diǎn)。網(wǎng)關(guān)則包括排他網(wǎng)關(guān)、并行網(wǎng)關(guān)、包容網(wǎng)關(guān)及事件網(wǎng)關(guān)。一般情況下,我們可以根據(jù)業(yè)務(wù)特點(diǎn)判斷節(jié)點(diǎn)的選擇。有些工作流會根據(jù)業(yè)務(wù)情況選擇是否啟用子流程。滿足操作人員習(xí)慣、實(shí)現(xiàn)界面友好、支持多個(gè)入口對業(yè)務(wù)數(shù)據(jù)進(jìn)行操作設(shè)計(jì);支持各種邏輯下的業(yè)務(wù)流程流轉(zhuǎn)方式,保證特殊業(yè)務(wù)流轉(zhuǎn)的靈活性。
根據(jù)業(yè)務(wù)需求,需要考慮業(yè)務(wù)辦理過程中的問題。例如,當(dāng)節(jié)點(diǎn)完成操作后,需要將信息發(fā)給流程啟動者;當(dāng)操作失誤導(dǎo)致數(shù)據(jù)填錯(cuò)時(shí),需要將事務(wù)撤回等。
(二)工作流在管理系統(tǒng)中的應(yīng)用
在表單初始化時(shí),頁面之間通過請求傳遞工作項(xiàng)編號,利用工作項(xiàng)編號獲取工作項(xiàng)明細(xì),得到流程實(shí)例編號后根據(jù)關(guān)聯(lián)關(guān)系得到業(yè)務(wù)表記錄。當(dāng)表單提交時(shí),利用工作項(xiàng)編號或流程實(shí)例編號調(diào)用流程接口,創(chuàng)建并啟動流程。在流程中根據(jù)條件設(shè)置相關(guān)數(shù)據(jù),完成或退回工作項(xiàng),驅(qū)動流程實(shí)現(xiàn)流轉(zhuǎn)。
(三)異常處理
一般而言,異常情況的產(chǎn)生主要是業(yè)務(wù)人員操作不當(dāng)或系統(tǒng)漏洞而導(dǎo)致。無論是操作人員失誤還是系統(tǒng)漏洞,都必須遵循一個(gè)原則,即流程數(shù)據(jù)或者業(yè)務(wù)數(shù)據(jù)存在異常情況時(shí),必須對流程進(jìn)行嚴(yán)格控制使其不能繼續(xù)流轉(zhuǎn)。實(shí)現(xiàn)這一目的的手段通常是對存儲過程進(jìn)行回滾。
筆者對工作流技術(shù)進(jìn)行了深入的研究和分析,剖析工作流技術(shù)理論,并結(jié)合現(xiàn)有的工作流進(jìn)行分析,將輕量級的工作流設(shè)計(jì)方案應(yīng)用于管理系統(tǒng),取得了良好的應(yīng)用效果,具有較高的應(yīng)用價(jià)值和參考意義。
[1]陳廣智,潘嶸,李磊.工作流建模技術(shù)綜述及其研究趨勢[J].計(jì)算機(jī)科學(xué),2014(1).
[2]杜清華,張凱.一種高效的跨平臺工作流優(yōu)化方法[J].計(jì)算機(jī)工程,2022(7).
[3]田倬璟,黃震春,張益農(nóng).云計(jì)算環(huán)境任務(wù)調(diào)度方法研究綜述[J].計(jì)算機(jī)工程與應(yīng)用,2021(2).
[4]陳紅燕,王新,何學(xué)洲.基于關(guān)系數(shù)據(jù)庫的工作流管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].工程建設(shè)與設(shè)計(jì),2020(22).
[5]劉其臻.基于工作流的項(xiàng)目管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].濟(jì)南:山東大學(xué),2020.
[6]王剛.基于BPMN規(guī)范的工作流引擎設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2020.
[7]呂博文.基于SOA的服務(wù)組合工作流引擎研究與設(shè)計(jì)[D].西安:西安石油大學(xué),2019.
[8]徐春婕,史天運(yùn),劉碩研,等.基于SOA和工作流的鐵路客運(yùn)站管理系統(tǒng)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2014(2).
[9]李青,趙萌,聞敬謙.基于工作流的集成質(zhì)量管理系統(tǒng)設(shè)計(jì)[J].北京航空航天大學(xué)學(xué)報(bào),2005(11).
(作者單位:中國航發(fā)沈陽發(fā)動機(jī)研究所)