李帥 于守建
1 概述
業(yè)務(wù)流程變更(Business Progress Change,BPC)[1]是在業(yè)務(wù)流程定義階段或執(zhí)行階段出現(xiàn),相對(duì)于原來(lái)的流程定義的更改,其需求有的來(lái)自于客戶要求、相關(guān)法律變更等外因,有的來(lái)自于科技更新、追求效率效益等內(nèi)因,都是為了使系統(tǒng)適應(yīng)環(huán)境、優(yōu)化流程、提升效率、提高收益。要在流程定義的時(shí)候提前考慮到所有可能的業(yè)務(wù)流程是非常困難的,而執(zhí)行過(guò)程中變更需要業(yè)務(wù)人員與專(zhuān)業(yè)技術(shù)人員在前期溝通協(xié)調(diào),制定變更計(jì)劃??紤]到流程局部的修改可能牽扯到整個(gè)業(yè)務(wù)流程的變量配置,故變更時(shí)還需等待流程實(shí)例全部執(zhí)行完畢或?qū)⑦\(yùn)行實(shí)例臨時(shí)撤銷(xiāo)。由此可見(jiàn),傳統(tǒng)變更方式不僅耗時(shí)耗力,還需企業(yè)承擔(dān)變更過(guò)程中可能導(dǎo)致的數(shù)據(jù)錯(cuò)誤、信息丟失等風(fēng)險(xiǎn)。
若業(yè)務(wù)流程系統(tǒng)能夠在仍有實(shí)例運(yùn)行時(shí)的過(guò)程定義根據(jù)變更衍生出新的流程定義,并對(duì)過(guò)程中實(shí)例的情況做出反應(yīng)和處理的能力,那么稱(chēng)該系統(tǒng)能夠動(dòng)態(tài)實(shí)現(xiàn)變更自適應(yīng)。傳統(tǒng)業(yè)務(wù)流程模型進(jìn)行數(shù)據(jù)修改、邏輯變更的難度較大,不利于變更自適應(yīng)技術(shù)的實(shí)現(xiàn),而以數(shù)據(jù)為中心的業(yè)務(wù)流程模型將底層數(shù)據(jù)提升至流程工單(Artifact)中,修改數(shù)據(jù)簡(jiǎn)單易行。本文基于以數(shù)據(jù)為中心的業(yè)務(wù)流程模型,提出動(dòng)態(tài)修改方法,研究了變更自適應(yīng)技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了變更自適應(yīng)業(yè)務(wù)流程系統(tǒng)。
與傳統(tǒng)變更方法相比,變更自適應(yīng)技術(shù)不僅能夠判斷變更能否自動(dòng)化完成;并且能快速響應(yīng)可自適應(yīng)的變更而無(wú)需等待實(shí)例執(zhí)行結(jié)束;同時(shí)自動(dòng)適應(yīng)變更內(nèi)容,在不修改系統(tǒng)的前提下完成業(yè)務(wù)流程的變更。
2 國(guó)內(nèi)外相關(guān)研究
目前,國(guó)內(nèi)外的學(xué)者從不同角度對(duì)業(yè)務(wù)流程的變更提出了應(yīng)對(duì)方法。
文獻(xiàn)[2]在Petri網(wǎng)模型中用關(guān)系矩陣表示節(jié)點(diǎn)路由,用狀態(tài)標(biāo)識(shí)矩陣描述實(shí)例狀態(tài),通過(guò)變更處理算法查找可越過(guò)節(jié)點(diǎn)和遷移節(jié)點(diǎn),從而實(shí)現(xiàn)業(yè)務(wù)流程的及時(shí)變更。為了表達(dá)活動(dòng)之間的依賴(lài)關(guān)系,文獻(xiàn)[3]提出了控制流檢測(cè)表(CFC table),用于存儲(chǔ)業(yè)務(wù)流程實(shí)例的所有可能變化。當(dāng)執(zhí)行發(fā)生變化時(shí),生成新的CFC table。隨后文獻(xiàn)[4]通過(guò)分析新的CFC table中被修改的行,來(lái)增加、修改、刪除規(guī)則以及變遷之間的結(jié)構(gòu)一致性。雖然這種方式使得結(jié)構(gòu)一致性有了保障,但卻因CFC table的頻繁更新造成不必要的開(kāi)銷(xiāo)。文獻(xiàn)[5]在此基礎(chǔ)上提出了基于業(yè)務(wù)流程相似性和數(shù)據(jù)類(lèi)型相容性的適應(yīng)更變方法。定義內(nèi)容類(lèi)型的相容性,通過(guò)操作類(lèi)型檢測(cè)表(Operation Type Checking table,OTC table)記錄內(nèi)容之間的相容性。內(nèi)容之間的相容性變化不大,更新頻率更低,于是在一致性的基礎(chǔ)上比文獻(xiàn)[4]縮小了開(kāi)銷(xiāo)。
然而這些研究基于元模型的業(yè)務(wù)流程,對(duì)流程數(shù)據(jù)的操作需要較大開(kāi)發(fā)力度。
3 支持變更自適應(yīng)的業(yè)務(wù)流程模型
本文在以Artifact為中心的業(yè)務(wù)流程模型(Arti-Flow)[6]的基礎(chǔ)上,對(duì)其進(jìn)行了添加和擴(kuò)展,引入了版本信息、流程方向圖等概念,提出了一種以數(shù)據(jù)為中心的業(yè)務(wù)流程的變更自適應(yīng)模型(DBPCA, Data-centric Business Process Change Adaptation),為實(shí)現(xiàn)業(yè)務(wù)流程的動(dòng)態(tài)性和自適應(yīng)性提供了基礎(chǔ)。
3.1 DBPCA模型
以數(shù)據(jù)為中心的業(yè)務(wù)流程模型具有動(dòng)態(tài)實(shí)例與靜態(tài)模式定義分離的特性、數(shù)據(jù)與活動(dòng)的隔離特性、實(shí)例之間的隔離性以及工單的特性。在這些特性的基礎(chǔ)上,DBPCA模型強(qiáng)調(diào)了業(yè)務(wù)流程中“任務(wù)”及“事件”的邏輯關(guān)系,引入版本信息、流程方向圖等概念,為業(yè)務(wù)流程變更自適應(yīng)做了鋪墊。
DBPCA模型是分層結(jié)構(gòu),由頂層的業(yè)務(wù)流程模式、底層的數(shù)據(jù)庫(kù)模式以及中間的映射模塊三部分組成。業(yè)務(wù)流程模式中包含了流程定義部分、規(guī)則約束部分和各類(lèi)工單,流程的定義和執(zhí)行受規(guī)則約束的規(guī)范,工單為業(yè)務(wù)流程提供各類(lèi)信息。底層的數(shù)據(jù)庫(kù)模式類(lèi)似ER模型。映射模塊為業(yè)務(wù)流程和數(shù)據(jù)庫(kù)提供通信機(jī)制。工單是一個(gè)具體的,可識(shí)別的,能夠自描述的信息塊,商業(yè)人員可利用其來(lái)運(yùn)行業(yè)務(wù)。工單構(gòu)成了業(yè)務(wù)流程產(chǎn)生和存儲(chǔ)的信息塊,是業(yè)務(wù)流程中唯一包含的準(zhǔn)確信息,其內(nèi)部數(shù)據(jù)與數(shù)據(jù)庫(kù)數(shù)據(jù)通過(guò)映射模塊一一對(duì)應(yīng)。
3.2 版本信息
版本信息是工單內(nèi)關(guān)于業(yè)務(wù)流程的主要信息的一個(gè)相對(duì)簡(jiǎn)化的數(shù)據(jù)集,其形式化描述可表示為:
V = (V_ID, VD, L)
其中,V_ID是該版本的版本號(hào)(唯一);VD是工單數(shù)據(jù)的子集,僅包含了工單ID和工單現(xiàn)在的狀態(tài);L是流程中任務(wù)及事件的邏輯關(guān)系,可抽象為一個(gè)有向無(wú)環(huán)圖,稱(chēng)為流程方向圖。
流程實(shí)例內(nèi)的版本信息V包含L以及實(shí)例流程狀態(tài)數(shù)據(jù),取出這部分信息便于查詢(xún)和操作動(dòng)態(tài)改變執(zhí)行順序自適應(yīng)變更修改,L是由事件集E內(nèi)的事件,任務(wù)集T內(nèi)的任務(wù)以及其相應(yīng)關(guān)系組成的有向無(wú)環(huán)圖,用于決定實(shí)例執(zhí)行的前進(jìn)方向。版本信息是決定一個(gè)業(yè)務(wù)流程實(shí)例前進(jìn)方向的核心內(nèi)容。圖1通過(guò)實(shí)例列舉了一個(gè)版本信息內(nèi)L的數(shù)據(jù)表以及對(duì)應(yīng)的流程方向圖。
3.3 約束定義
文章設(shè)定了一系列流程定義時(shí)必須滿足且運(yùn)行和變更時(shí)必須遵守的規(guī)則,這些規(guī)則稱(chēng)為約束[7]。為了保證業(yè)務(wù)流程按照定義的方向執(zhí)行,以及應(yīng)對(duì)業(yè)務(wù)流程變更時(shí)系統(tǒng)的穩(wěn)定性和版本決策的正確性,避免死循環(huán)和不確定性運(yùn)行結(jié)果的產(chǎn)生,以下約束是至關(guān)重要的。
1)更新約束。業(yè)務(wù)流程變更必須滿足更新約束,若本次變更包含以下沖突,則可能破壞運(yùn)行方向的唯一性,使得業(yè)務(wù)流程產(chǎn)生不確定的結(jié)果,那么將禁止本次操作的所有更新。
任務(wù)事件沖突集:CT ? E×T 表示一個(gè)業(yè)務(wù)流程中事件響應(yīng)引發(fā)某任務(wù)執(zhí)行。若兩個(gè)任務(wù)由一個(gè)事件引發(fā)或者說(shuō)一個(gè)事件可由兩個(gè)任務(wù)響應(yīng),則表示這兩個(gè)任務(wù)存在沖突。
任務(wù)順序沖突集:CET?Path(T×T)。Path(ti,tj)表示了兩個(gè)任務(wù)的執(zhí)行順序關(guān)系;存在任務(wù)執(zhí)行順序關(guān)系使得任務(wù)ti執(zhí)行后一定要執(zhí)行任務(wù)tj(并非立即執(zhí)行)。若Path(ti,tj)∈CET表示ti與tj兩個(gè)任務(wù)有執(zhí)行順序上的沖突。即:任務(wù)ti執(zhí)行后一定有任務(wù)tj執(zhí)行,且任務(wù)tj執(zhí)行后有ti執(zhí)行,那么這兩個(gè)任務(wù)順序執(zhí)行路徑存在沖突。
流程方向沖突:業(yè)務(wù)流程由begin事件引發(fā),并由end事件結(jié)束。若路徑由begin事件開(kāi)始,存在路徑到達(dá)事件t(非end事件)且該路徑終止于該事件,則存在流程方向沖突。
2)版本約束。每個(gè)業(yè)務(wù)實(shí)例在某一確定時(shí)刻能且只能按照其中一個(gè)版本所規(guī)定流程執(zhí)行。
3)隔離約束。每個(gè)實(shí)例的執(zhí)行都是相互獨(dú)立的,實(shí)例對(duì)應(yīng)的同類(lèi)工單數(shù)據(jù)相互之間并無(wú)直接訪問(wèn)聯(lián)系。
4 業(yè)務(wù)流程變更自適應(yīng)系統(tǒng)
在上文提出的DBPCA模型的基礎(chǔ)上,本節(jié)則研究擴(kuò)展了傳統(tǒng)的業(yè)務(wù)流程引擎,設(shè)計(jì)并實(shí)現(xiàn)了支持業(yè)務(wù)流程變更自適應(yīng)的管理平臺(tái),同時(shí)詳細(xì)分析了動(dòng)態(tài)修改方法與自適應(yīng)方法的過(guò)程與算法。與傳統(tǒng)的以數(shù)據(jù)為中心的業(yè)務(wù)流程管理平臺(tái)相比,本文研究具有以下特點(diǎn):
1)任務(wù)與事件的邏輯關(guān)系為主要的流程控制手段;
2)業(yè)務(wù)流程管理與任務(wù)執(zhí)行分離;
3)多業(yè)務(wù)流程版本共存;
4)支持業(yè)務(wù)流程變更自適應(yīng);
5)具有動(dòng)態(tài)實(shí)例的查詢(xún)功能。
4.1 系統(tǒng)結(jié)構(gòu)及組成
系統(tǒng)采用Spring MVC框架模式實(shí)現(xiàn),在jBPM業(yè)務(wù)流程引擎的基礎(chǔ)結(jié)構(gòu)上增加Artifact的構(gòu)造模塊以及Artifact與底層數(shù)據(jù)庫(kù)的映射綁定模塊,將數(shù)據(jù)提升到業(yè)務(wù)流程層面,然后添加規(guī)則驗(yàn)證模塊和自適應(yīng)模塊,規(guī)則驗(yàn)證模塊驗(yàn)證變更的自適應(yīng)性,自適應(yīng)模塊實(shí)現(xiàn)業(yè)務(wù)流程的動(dòng)態(tài)自適應(yīng)機(jī)制。以數(shù)據(jù)為中心的業(yè)務(wù)流程變更自適應(yīng)系統(tǒng)體系結(jié)構(gòu)圖如圖2所示:
由圖1所示,系統(tǒng)中各重點(diǎn)構(gòu)成功能實(shí)現(xiàn)可做如下論述。
1)表示層。負(fù)責(zé)系統(tǒng)與用戶的通信。用戶通過(guò)用戶管理模塊、表單管理模塊、流程管理模塊、實(shí)例管理模塊完成業(yè)務(wù)流程內(nèi)容、變更業(yè)務(wù)流程定義。
2)Web服務(wù)器。采用Spring MVC模式,該輕量級(jí)框架擴(kuò)展性強(qiáng),代碼架構(gòu)清晰,有利于模塊開(kāi)發(fā)。
3)業(yè)務(wù)流程引擎。為業(yè)務(wù)流程服務(wù)提供運(yùn)行環(huán)境,是業(yè)務(wù)流程系統(tǒng)的核心,負(fù)責(zé)解釋過(guò)程定義、創(chuàng)建和執(zhí)行過(guò)程實(shí)例、以及和業(yè)務(wù)流程應(yīng)用及客戶進(jìn)行通信。本文的業(yè)務(wù)流程引擎jBPM是開(kāi)源的可擴(kuò)展平臺(tái),具有開(kāi)發(fā)便利、易擴(kuò)展、可移植等優(yōu)點(diǎn)。
4)自適應(yīng)模塊。主要工作包括根據(jù)傳入的流程變更信息修改業(yè)務(wù)流程的定義、協(xié)調(diào)動(dòng)態(tài)實(shí)例。修改業(yè)務(wù)流程的定義主要用于協(xié)調(diào)變更前后的定義,修整流程定義,為實(shí)例自適應(yīng)提供基礎(chǔ)。動(dòng)態(tài)實(shí)例的協(xié)調(diào)主要是協(xié)調(diào)受修改影響的運(yùn)行時(shí)實(shí)例,保證這些實(shí)例在新模型下能夠正確執(zhí)行。這些處于過(guò)渡階段的實(shí)例根據(jù)決策或按照舊版本繼續(xù)執(zhí)行,或按新版本執(zhí)行,或按調(diào)整后的流程路徑進(jìn)行執(zhí)行。
5)規(guī)則驗(yàn)證工具。根據(jù)規(guī)則約束驗(yàn)證業(yè)務(wù)流程定義和修改過(guò)程中是否有邏輯矛盾的流程,驗(yàn)證變更是否具有自適應(yīng)性。自適應(yīng)模塊和驗(yàn)證工具可以使用戶靈活地進(jìn)行業(yè)務(wù)流程修改的定義,保證修改的正確性。
6)Artifact模塊。負(fù)責(zé)Artifact的定義和結(jié)構(gòu)存儲(chǔ),將實(shí)例數(shù)據(jù)保存至工單,減少與數(shù)據(jù)庫(kù)的交互,提高了業(yè)務(wù)流程的靈活性。
7)映射模塊。負(fù)責(zé)Artifact模型與數(shù)據(jù)庫(kù)模型的映射,是數(shù)據(jù)持久化操作的保障。
8)實(shí)例日志。記錄業(yè)務(wù)流程中所有的狀態(tài)變化、事件以及和控制流相關(guān)的數(shù)據(jù)等信息。
9)版本信息。為了支持業(yè)務(wù)流程的動(dòng)態(tài)靈活改進(jìn)及實(shí)例自適應(yīng),在業(yè)務(wù)流程定義被長(zhǎng)久修改后,還必須存儲(chǔ)修改前的業(yè)務(wù)流程定義信息。
4.2 動(dòng)態(tài)修改方法
實(shí)例內(nèi)的版本信息包含了定義的業(yè)務(wù)流程執(zhí)行方向,所以改變版本信息內(nèi)的任務(wù)對(duì)應(yīng)的前驅(qū)事件和產(chǎn)生事件,即可更改業(yè)務(wù)流程的運(yùn)行軌跡,實(shí)現(xiàn)動(dòng)態(tài)變更。業(yè)務(wù)流程定義的變更可完全通過(guò)工單數(shù)據(jù)的修改由任務(wù)與事件的邏輯重組實(shí)現(xiàn)。
定義1:業(yè)務(wù)流程在原定義任務(wù)內(nèi)容和順序的基礎(chǔ)上產(chǎn)生的任何改變都稱(chēng)為業(yè)務(wù)流程的變更。
原子性的變更操作有三種:添加、刪除、替換。任何變更操作都可由這三種原子性操作組合而成,所以本文只詳細(xì)討論這三種原子性操作的動(dòng)態(tài)修改方法。需要注意的是,原子性操作直接影響了任務(wù)與事件的順序邏輯關(guān)系,故受事件沖突約束和任務(wù)沖突約束的直接規(guī)范,在處理原子性操作的時(shí)候必須斷開(kāi)已更改的任務(wù)-事件邏輯關(guān)系,以滿足任務(wù)事件沖突約束。
4.2.1 添加操作
添加原子操作分為兩種情況,一種是在業(yè)務(wù)流程的兩個(gè)相鄰任務(wù)之間添加任務(wù)(L->L_1),一種是在業(yè)務(wù)流程的最后一個(gè)任務(wù)后添加任務(wù)(L->L_2)。
添加操作的修改過(guò)程如圖3所示,首先要判斷待刪除的任務(wù)是否為最后一個(gè)任務(wù):
(1)若要在任務(wù)Ti,Tj之間添加新的任務(wù)Tk,按以下三個(gè)步驟:
斷開(kāi)Tj任務(wù)與Ti產(chǎn)生事件的順序關(guān)系;
Tk的前驅(qū)事件f_event為T(mén)i的產(chǎn)生事件,Tk -> f_event = Ti -> e_event;
Tj的前驅(qū)事件為T(mén)k的產(chǎn)生事件,Tj -> f_event = Tk -> e_event;
(2)若添加的新任務(wù)Tk在流程的最末,則按以下步驟:
將原最后的任務(wù)Tn的產(chǎn)生事件設(shè)為新的事件Event_n,斷開(kāi)事件end與原任務(wù)Tn的響應(yīng)關(guān)系,Tn -> e_event = Event_n;
在Tn后添加新事件Tk;
Tk的前驅(qū)事件f_event為T(mén)n的產(chǎn)生事件,Tk -> f_event = Tn -> e_event;
4.2.2 刪除操作
企業(yè)的業(yè)務(wù)流程中的刪除操作極少出現(xiàn)第一個(gè)任務(wù)就刪除的情況,故在此主要分析中間任務(wù)刪除情況(L->L_1)和最后一個(gè)任務(wù)的刪除情況(L->L_2)。
刪除操作的修改過(guò)程如圖4所示,首先要判斷待刪除的任務(wù)是否為最后一個(gè)任務(wù):
(1)若要?jiǎng)h除的任務(wù)Tk不是最后一個(gè)任務(wù),Ti、Tj分別為T(mén)k的前驅(qū)、后繼任務(wù),則按以下步驟:
將后者Tj的前驅(qū)事件設(shè)為前者Ti的產(chǎn)生事件Tj -> f_event = Ti -> e_event;
斷開(kāi)待刪除任務(wù)Tk的前驅(qū)事件f_event與Tk的關(guān)系,保證任務(wù)事件沖突約束;
斷開(kāi)待刪除任務(wù)Tk的產(chǎn)生事件與Tj的關(guān)系,保證事件沖突約束;
(2)若刪除新任務(wù)Tk在流程的最末,Tn為T(mén)k前一個(gè)任務(wù),則按以下步驟:
將Tn的產(chǎn)生事件設(shè)為end事件,Tn -> e_event = end;
斷開(kāi)待刪除任務(wù)Tk的前驅(qū)事件f_event與Tn的關(guān)系;
斷開(kāi)待刪除任務(wù)Tk與end事件的關(guān)系,保證任務(wù)事件沖突約束;
4.2.3 替換操作
原子的替換操作只需將某個(gè)任務(wù)及其自帶的產(chǎn)生任務(wù)替換為另一個(gè)新的任務(wù)和產(chǎn)生任務(wù),若替換任務(wù)在流程末尾,則直接將任務(wù)的產(chǎn)生事件設(shè)為end事件。新任務(wù)取代了原任務(wù)的所有邏輯關(guān)系,故替換操作只與前驅(qū)事件和產(chǎn)生事件有關(guān),而不干擾其他任務(wù)。
替換操作的修改過(guò)程如圖5所示,版本信息的修改轉(zhuǎn)換為流程任務(wù)的替換操作分為三個(gè)步驟:
1)添加任務(wù)Tk,將Tk的前驅(qū)事件設(shè)為被替換任務(wù)Ti的前驅(qū)事件;
2)將Tk下一任務(wù)Tj的前驅(qū)事件設(shè)為T(mén)k的產(chǎn)生事件,若無(wú)下一任務(wù),則將Tk響應(yīng)事件設(shè)為end事件;
3)斷開(kāi)被替換任務(wù)Ti與Tk前驅(qū)事件和完成事件的關(guān)系,保證事件沖突約束和任務(wù)沖突約束。
4.3 變更自適應(yīng)方法
在DBPCA模型中,業(yè)務(wù)流程的管理與任務(wù)執(zhí)行分離,且持久化操作在任務(wù)徹底完成后進(jìn)行,為動(dòng)態(tài)運(yùn)行時(shí)的變更自適應(yīng)提供了可行性。本節(jié)提出了變更自適應(yīng),將上節(jié)中動(dòng)態(tài)修改方法生成的變更后流程與原流程協(xié)調(diào),生成方便實(shí)例自適應(yīng)的流程定義,并給出動(dòng)態(tài)自適應(yīng)機(jī)制實(shí)現(xiàn)實(shí)例的自適應(yīng)功能。
用戶接口接收到用戶的變更信息時(shí),會(huì)先反饋給引擎調(diào)用“中斷”處理機(jī)制保存當(dāng)前數(shù)據(jù),然后對(duì)變更后的業(yè)務(wù)流程進(jìn)行邏輯分析,判斷此次變更是否能夠自適應(yīng)。若不滿足更新約束,系統(tǒng)將會(huì)禁止本次所有更新;若滿足約束,則系統(tǒng)進(jìn)行流程定義自適應(yīng),自適應(yīng)過(guò)程完畢后會(huì)發(fā)送一個(gè)內(nèi)部事件到引擎,繼續(xù)動(dòng)態(tài)實(shí)例自適應(yīng)和新實(shí)例的執(zhí)行。
4.3.1 流程定義自適應(yīng)
圖6展示了變更前流程及目標(biāo)流程的簡(jiǎn)化方向圖,變更起點(diǎn)是兩個(gè)方向圖第一個(gè)不同的任務(wù),變更終點(diǎn)是兩個(gè)方向圖逆序第一個(gè)不同的任務(wù)。
根據(jù)變更變起點(diǎn)和終點(diǎn),業(yè)務(wù)流程方向圖可以分成三部分:
1)位于變更起點(diǎn)之前的部分為變更前部;
2)位于變更終點(diǎn)之后的部分為變更后部;
3)變更起點(diǎn)和終點(diǎn)之間內(nèi)是變更區(qū)域。
前兩種情況1)、2)所做修改為:
為原任務(wù)添加新的產(chǎn)生事件Event_Vn(n=1,2,..,表示版本號(hào));
將原任務(wù)的后繼任務(wù)的驅(qū)動(dòng)事件更改為Event_Vn;
將變更后流程內(nèi)同任務(wù)的后繼任務(wù)的驅(qū)動(dòng)事件更改為原任務(wù)產(chǎn)生事件Event。
最后處理情況3),變更后部的第一個(gè)任務(wù)僅需添加新的前驅(qū)事件,并設(shè)為新版本變更區(qū)域最后一個(gè)任務(wù)的產(chǎn)生事件。變更自適應(yīng)后業(yè)務(wù)流程方向圖如圖7所示。
修改產(chǎn)生的新流程定義與原定義合并后的業(yè)務(wù)流程方向圖如圖7所示,Task_B為變更前驅(qū)的第一個(gè)任務(wù),滿足情況1),于是添加了新的產(chǎn)生事件Event2_V1,并將原定義的下一個(gè)任務(wù)Task_C的前驅(qū)事件設(shè)為Event2_V1,而將新版本的后繼任務(wù)Task_D的前驅(qū)事件設(shè)為Event2。如此,新實(shí)例會(huì)按照Event2事件為引導(dǎo)執(zhí)行變更后的業(yè)務(wù)流程。Task_D屬于情況2),是兩個(gè)版本的變更區(qū)域內(nèi)重復(fù)的任務(wù),應(yīng)與Task_B做同樣修改,保證新實(shí)例的運(yùn)行路徑為由Event4引導(dǎo)的變更后路徑?;诖嗽偬幚硇掳姹咀兏鼌^(qū)域最后一個(gè)任務(wù)Task_G,將其產(chǎn)生事件設(shè)為T(mén)ask_E(變更后部的第一個(gè)任務(wù))的前驅(qū)事件。
產(chǎn)生事件和驅(qū)動(dòng)事件的變換可使新產(chǎn)生實(shí)例以新流程版本為默認(rèn)前進(jìn)方向執(zhí)行。而將變更前后的業(yè)務(wù)流程的非變更區(qū)域合并,為后續(xù)業(yè)務(wù)流程實(shí)例任務(wù)的版本選擇工作提供了方便。
4.3.2 動(dòng)態(tài)實(shí)例自適應(yīng)
由于變更后的流程在變更前部的最后任務(wù)添加了一個(gè)產(chǎn)生事件,并替換了原產(chǎn)生事件的邏輯關(guān)系,由原產(chǎn)生事件承載新的任務(wù)邏輯關(guān)系,故不需改變實(shí)例的產(chǎn)生事件便可按照新流程執(zhí)行。由于當(dāng)前實(shí)例已執(zhí)行的最近任務(wù)可能屬于方向圖中三個(gè)部分的任一個(gè),相應(yīng)地,研究即將動(dòng)態(tài)實(shí)例的自適應(yīng)處理也分三種情況。
1)若已執(zhí)行的最后一個(gè)任務(wù)在變更前部,則按照新定義的業(yè)務(wù)流程執(zhí)行。
2)若已執(zhí)行的最后一個(gè)任務(wù)在變更后部,由于變更后部的任務(wù)流程不受變更影響,故不做修改,扔按照原業(yè)務(wù)步驟執(zhí)行。
3)若實(shí)例已經(jīng)執(zhí)行到了變更區(qū)域內(nèi)的任務(wù),如圖8所示,該實(shí)例會(huì)根據(jù)實(shí)例日志及設(shè)定的回退路徑回退到變更區(qū)域開(kāi)始的地方,再按照新的流程定義重新執(zhí)行。
由于業(yè)務(wù)流程中任務(wù)的回退受約束規(guī)則以及某些任務(wù)不可逆的限制,目前只能由技術(shù)人員專(zhuān)門(mén)在指定的任務(wù)處寫(xiě)入代碼建立退回的轉(zhuǎn)移路徑,并不能夠靈活實(shí)現(xiàn)任務(wù)的任意退回。
在實(shí)例自適應(yīng)的過(guò)程中,難免出現(xiàn)異常。異??赡苁箤?shí)例執(zhí)行結(jié)果錯(cuò)誤甚至導(dǎo)致實(shí)例的信息丟失。異常情況分為可預(yù)見(jiàn)異常與不可預(yù)見(jiàn)異常兩種類(lèi)型。
1)可預(yù)見(jiàn)異常。在實(shí)例自適應(yīng)過(guò)程中,對(duì)執(zhí)行到變更區(qū)域內(nèi)的實(shí)例需要根據(jù)日志數(shù)據(jù)回退。而某些任務(wù)是無(wú)法回退的,例如向用戶發(fā)送郵件。對(duì)于無(wú)法回退的任務(wù)在處理回退自適應(yīng)時(shí)就會(huì)產(chǎn)生異常,這類(lèi)異常是可以預(yù)見(jiàn)的。對(duì)可預(yù)見(jiàn)異常,技術(shù)人員可利用代碼獲取異常實(shí)例的相關(guān)信息,存入異常實(shí)例列表供業(yè)務(wù)人員人工處理。
2)不可預(yù)見(jiàn)異常。對(duì)于不可預(yù)見(jiàn)的異常,為了防止其導(dǎo)致流程癱瘓,采取了設(shè)置時(shí)間閾值和重呼次數(shù)的方法。每個(gè)任務(wù)會(huì)設(shè)置一個(gè)時(shí)間閾值,若超過(guò)這個(gè)時(shí)間閾值仍未響應(yīng);則該任務(wù)的前置事件重新調(diào)用,發(fā)出請(qǐng)求再次執(zhí)行該任務(wù)。若請(qǐng)求的次數(shù)超過(guò)了設(shè)置的重呼次數(shù),則該實(shí)例發(fā)送給用戶接口,交由人工操作解決。
5 結(jié)束語(yǔ)
本文的主要研究?jī)?nèi)容是以數(shù)據(jù)為中心的業(yè)務(wù)流程的變更自適應(yīng)技術(shù)。在對(duì)以數(shù)據(jù)為中心的業(yè)務(wù)流程模型以及業(yè)務(wù)流程變更相關(guān)技術(shù)的研究基礎(chǔ)上,發(fā)現(xiàn)了傳統(tǒng)業(yè)務(wù)流程建模方法處理流程變更的不足。基于以上情況,本文提出了一種以數(shù)據(jù)為中心的業(yè)務(wù)流程的變更自適應(yīng)模型,詳細(xì)闡述該模型的架構(gòu)及組成。提出了動(dòng)態(tài)修改和變更自適應(yīng)方法,并在jBPM流程引擎基礎(chǔ)上實(shí)現(xiàn)了以數(shù)據(jù)為中心的業(yè)務(wù)流程變更自適應(yīng)系統(tǒng)。該系統(tǒng)已在校工會(huì)平臺(tái)中成功使用,使“九必訪”審核、幫困申請(qǐng)等流程的管理、變更提高了效率。
然而,本文還存在不足之處需要進(jìn)一步改進(jìn),例如:模型中各約束規(guī)則是保障業(yè)務(wù)流程正確運(yùn)行的關(guān)鍵,需進(jìn)一步地研究完善約束集及約束間的沖突;本文系統(tǒng)目前并不能夠靈活實(shí)現(xiàn)任務(wù)的任意退回,將完善的回退機(jī)制引入,會(huì)有效提高易用性。
參考文獻(xiàn)
[1] 張靜樂(lè), 楊揚(yáng), 曾明,等. 支持異常處理的柔性業(yè)務(wù)流程可信賴(lài)性分析[J]. 計(jì)算機(jī)科學(xué), 2010, 37(4):41-44.
[2] 劉清華, 李璐璐, 萬(wàn)立,等. 工作流的動(dòng)態(tài)變更處理方法[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2011, 23(2):331-338.
[3] ZHANG S, WANG B. The research on decision approach of data dependence in dynamic workflow system[C]//Parallel and Distributed Computing, Applications and Technologies, 2005. PDCAT 2005. Sixth International Conference on. Dalian: IEEE, 2005: 1027-1029.
[4] MEJIA B J F, FALCARIN P, MORISIO M, et al. Dynamic context-aware business process: a rule-based approach supported by pattern identification[C]//Proceedings of the 2010 ACM Symposium on Applied Computing. Sierre: ACM, 2010: 470-474.
[5] 張紅霞, 鄒華, 林榮恒, 等. 基于馬爾科夫決策過(guò)程的可適變業(yè)務(wù)流程建模及分析[J]. 電子與信息學(xué)報(bào), 2013, 35(7): 1760-1765.
[6] XU W, SU J, YAN Z, et al. An artifact-centric approach to dynamic modification of workflow execution[M]//Robert Meersman. On the Move to Meaningful Internet Systems: OTM 2011. Berlin Heidelberg:Springer , 2011: 256-273.
[7] SUN Y, SU J. Conformance for DecSerFlow constraints[J]. Lecture Notes in Computer Science, 2014, 8831:139-153.