熊道德,焦永杰,吳東峰
XIONG Dao-de1 , JIAO Yong-jie2 , WU Dong-feng3
(1.中國航空工業(yè)發(fā)展研究中心,北京 100029;2.淄博職業(yè)學(xué)院,淄博 255314;3.北京神舟航天軟件技術(shù)有限公司,北京 100094)
工作流管理聯(lián)盟WFMC(Workflow Management Coalition)對于工作流的定義[1]:工作流是一類能夠完全或者部分自動執(zhí)行的經(jīng)營過程,根據(jù)一系列過程規(guī)則,文檔、信息或任務(wù)能夠在不同的執(zhí)行者之間傳遞、執(zhí)行。
工作流引擎為流程的執(zhí)行提供軟件執(zhí)行的環(huán)境,是流程成功執(zhí)行的關(guān)鍵。一個設(shè)計良好、方便使用、可擴(kuò)展的工作流引擎對工作流流程來說至關(guān)重要,它直接關(guān)系到流程是否能夠正確執(zhí)行以及流程的執(zhí)行效率。
工作流技術(shù)出現(xiàn)之后得到了廣泛的應(yīng)用,但是目前的應(yīng)用多是針對比較固定、簡單的業(yè)務(wù)流程,隨著企業(yè)的發(fā)展,要求隨時能對業(yè)務(wù)流程進(jìn)行修改和擴(kuò)展[2],迫切需要工作流具有一定的柔性,這種柔性主要體現(xiàn)在以下三個方面:
1)業(yè)務(wù)流程建模階段:能夠快速、簡單、準(zhǔn)確地表達(dá)各種復(fù)雜程度的業(yè)務(wù)流程,最大程度降低對于業(yè)務(wù)人員的專業(yè)要求;
2)業(yè)務(wù)流程執(zhí)行階段:能夠?qū)崿F(xiàn)業(yè)務(wù)流程的動態(tài)修改和擴(kuò)展,不會對當(dāng)前的整體系統(tǒng)造成重大影響;
3)業(yè)務(wù)流程維護(hù)階段:能夠提供比較友好的流程維護(hù)環(huán)境,實現(xiàn)流程的分析和優(yōu)化,為企業(yè)業(yè)務(wù)流程優(yōu)化升級提供技術(shù)基礎(chǔ)。
為了實現(xiàn)這種柔性,本文基于元數(shù)據(jù)及工作流的相關(guān)技術(shù),提出了一種元數(shù)據(jù)驅(qū)動的工作流引擎技術(shù),實現(xiàn)業(yè)務(wù)流程的靈活性和可擴(kuò)展性,并對工作流引擎進(jìn)行了設(shè)計和實現(xiàn),最后對于元數(shù)據(jù)驅(qū)動的工作流引擎進(jìn)行了總結(jié)與展望。
元數(shù)據(jù)是對數(shù)據(jù)資源的描述[3],英文名稱是“Metadata”,元數(shù)據(jù)是信息共享和交換的基礎(chǔ)和前提,用于描述數(shù)據(jù)集的內(nèi)容、質(zhì)量、表示方式、空間參考、管理方式以及數(shù)據(jù)集的其他特征。它可以是單個文件、多個文件或者數(shù)據(jù)庫數(shù)據(jù)。
元數(shù)據(jù)一般可以分為描述性元數(shù)據(jù)、結(jié)構(gòu)性元數(shù)據(jù)、存取控制性元數(shù)據(jù)以及管理性元數(shù)據(jù)等。元數(shù)據(jù)在工作流中得到了廣泛的應(yīng)用,在程序中并不直接被處理,而是通過值的改變對程序產(chǎn)生影響,也即在程序的具體執(zhí)行過程中,元數(shù)據(jù)往往是起到“解釋”的作用[3],開發(fā)人員可以通過改變元數(shù)據(jù)的值來改變系統(tǒng)的運行方式。這樣,不同的元數(shù)據(jù)值可以讓同一段程序具有不同的運行結(jié)果。通過元數(shù)據(jù)可以使得程序具有一定的柔性,隨著元數(shù)據(jù)值的變化而使程序流轉(zhuǎn)到不同的流程。
工作流的驅(qū)動方式主要有兩種:一種是控制驅(qū)動,另外一種是數(shù)據(jù)驅(qū)動。
基于控制驅(qū)動工作流的控制信息由流程設(shè)計者在流程設(shè)計時建立,活動的執(zhí)行按照控制信息依次向下執(zhí)行,活動與活動之間具有較強(qiáng)的依賴性,所以基于控制驅(qū)動的工作流缺乏柔性,當(dāng)企業(yè)的業(yè)務(wù)流程發(fā)生變更時需要重新建立工作流,會對整體產(chǎn)生較大的影響。
與控制驅(qū)動的工作流不同,基于數(shù)據(jù)驅(qū)動的工作流并不預(yù)先確定流程,而是在活動的執(zhí)行過程中通過改變活動的相關(guān)數(shù)據(jù)而自動建立業(yè)務(wù)流程,這種數(shù)據(jù)驅(qū)動的工作流,活動與活動之間是解耦的,可以實現(xiàn)工作流的靈活配置。
本文基于元數(shù)據(jù)的相關(guān)概念,建立了元數(shù)據(jù)驅(qū)動的工作流。
工作流的建模方式主要有四種[4]:數(shù)據(jù)流程圖、IDEF方法、角色活動圖、事件驅(qū)動過程鏈以及Petri網(wǎng)絡(luò)等,在工作流建模過程中,活動以及活動之間的關(guān)系是需要重點考慮的內(nèi)容,本文基于面向?qū)ο蟮南嚓P(guān)概念,將活動抽象為“對象”,通過元數(shù)據(jù)建立活動對象的結(jié)構(gòu),并通過元數(shù)據(jù)的值的改變,推動活動對象依次向下執(zhí)行,活動對象的具體結(jié)構(gòu)如圖1所示。
圖1 活動對象示意圖
該活動對象以XML的形式進(jìn)行描述:各個對象的屬性含義如下所示:
活動名稱Name:活動的名稱,在同一個業(yè)務(wù)流程中可以有同樣的名稱,例如采購過程中的審批活動,可能存在多次審批;
活動編號Code:活動對象的唯一確定編號,用以區(qū)分各種不同的活動對象;
輸入?yún)?shù)In_Par:活動的輸入?yún)?shù),用以觸發(fā)是否可以執(zhí)行該活動;
執(zhí)行條件Condition:活動對象的執(zhí)行條件,通過輸入?yún)?shù)的值判斷活動對象是否滿足執(zhí)行條件;
圖2 元數(shù)據(jù)驅(qū)動的工作流執(zhí)行過程
輸出參數(shù)Out_Par:活動對象執(zhí)行完畢之后的輸出參數(shù),用以向下流轉(zhuǎn);
開始時間BeTime:活動對象開始執(zhí)行的時間;
結(jié)束時間EndTime:活動對象結(jié)束執(zhí)行的時間。
元數(shù)據(jù)驅(qū)動的工作流建模過程無須指定具體的流程,而是將業(yè)務(wù)流程分解成一個個活動對象,活動對象之間通過輸入、輸出參數(shù)以及執(zhí)行條件進(jìn)行動態(tài)的綁定,具體的執(zhí)行流程如圖2所示。
首先對于流程進(jìn)行初始化,由外界條件對于活動對象A進(jìn)行觸發(fā),活動對象A接到觸發(fā)條件,然后結(jié)合自身的執(zhí)行條件判斷對象A是否可以執(zhí)行,如果可以執(zhí)行,則執(zhí)行活動對象A的相關(guān)動作并輸出參數(shù),并將參數(shù)發(fā)布到工作流引擎中,工作流引擎掃描引擎池中的活動對象,看是否具有符合活動對象的輸入?yún)?shù)是活動對象A的輸出參數(shù),如果活動對象B符合,則通過活動對象B的執(zhí)行條件判斷活動對象是否可以執(zhí)行,通過此種機(jī)制依次向下執(zhí)行活動,最終活動對象C的輸出參數(shù)為End,活動終止,完成整個業(yè)務(wù)流程的執(zhí)行。
按照工作流管理聯(lián)盟的相關(guān)文件,工作流管理系統(tǒng)的參考模型[5]如圖3所示。
圖3 工作流管理系統(tǒng)參考模型
工作流引擎位于參考模型的重要位置,關(guān)系到流程執(zhí)行的效率和準(zhǔn)確性,主要用來對于流程進(jìn)行控制、解釋、管理相關(guān)流程實例的運行并且提供一些流程實例與外界進(jìn)行交互的功能[6]。本文設(shè)計的基于元數(shù)據(jù)驅(qū)動的工作流引擎主要包括以下四個層次:
1)活動對象預(yù)處理層
本層主要完成流程執(zhí)行前的準(zhǔn)備工作,主要用來解釋整個流程并對流程中的活動對象進(jìn)行數(shù)據(jù)預(yù)處理。例如當(dāng)流程開始時,工作流引擎要掃描整個活動對象,判斷流程開始的節(jié)點。
2)活動對象調(diào)度層
當(dāng)活動對象完成活動的執(zhí)行后,將輸出參數(shù)發(fā)布到工作流引擎當(dāng)中,工作流引擎掃描整個活動對象,將該輸出參數(shù)進(jìn)行廣播,其他活動對象接到參數(shù)時,同自身的輸入?yún)?shù)進(jìn)行比對,看看是否滿足活動對象執(zhí)行的條件。
3)活動對象執(zhí)行層
該層主要用來對于活動對象進(jìn)行執(zhí)行工作,是工作流引擎的核心,根據(jù)活動的對象的預(yù)先定義,完成數(shù)據(jù)及信息的處理工作,本層往往要調(diào)用系統(tǒng)的相關(guān)資源,并對流程執(zhí)行過程中的各個細(xì)節(jié)進(jìn)行記錄。
4)控制管理層
本層提供了靈活的接口,工作流管理人員可以通過該層對于活動對象進(jìn)行動態(tài)變更,以實現(xiàn)工作流執(zhí)行的柔性。
本文提出了基于元數(shù)據(jù)驅(qū)動的工作流引擎技術(shù),通過元數(shù)據(jù)對于活動對象實體進(jìn)行結(jié)構(gòu)定義,并實現(xiàn)了工作流引擎,通過改變活動對象元數(shù)據(jù)的值來控制活動的流轉(zhuǎn)方向,實現(xiàn)了工作流在執(zhí)行過程中的動態(tài)變更和靈活擴(kuò)展,實現(xiàn)了工作流的柔性,很好的解決了業(yè)務(wù)流程經(jīng)常變更的企業(yè)的需求。
[1]Workflow Management Coalition.The Workflow Reference Model.[WflVICl003][R].WFMC TC00—1003.1994.
[2]陳義松,汪蕓.基于數(shù)據(jù)驅(qū)動的工作流引擎的設(shè)計與實現(xiàn)[J].微電子學(xué)與計算機(jī),2012,29(11):138-140,144.
[3]黃迪.基于元數(shù)據(jù)的輕量級工作流管理系統(tǒng)的設(shè)計與實現(xiàn)[D]:吉林大學(xué),2006.
[4]鞏世鵬.工作流驅(qū)動的CAPP系統(tǒng)研究與應(yīng)用[D].重慶大學(xué),2013.
[5]張暉.基于工作流和元數(shù)據(jù)的ETL工具研究與實現(xiàn)[D].河北工業(yè)大學(xué),2006.
[6]楊健,李楠,鄭建功.基于工作流和元數(shù)據(jù)驅(qū)動的城市工程測量一體化集成應(yīng)用平臺[J].東北測繪與空間地理信息,2012,(1):191-193,195.