摘 要:工作流引擎是工作流管理系統(tǒng)的核心部分。本文運用Petri網(wǎng)理論來構(gòu)建一個基于活動的工作流引擎?;诨顒拥墓ぷ髁饕馕吨^程由一組需要完成的某些目標活動組成。在本系統(tǒng)中它將嵌套在該牽引供電系統(tǒng)中,用于安全基礎(chǔ)問題庫系統(tǒng)中業(yè)務(wù)的處理。本文詳細介紹Petri網(wǎng)模型理論對工作流引擎設(shè)計,以供同行參考。
關(guān)鍵詞:管理信息系統(tǒng);數(shù)據(jù)庫;工作流;Petri網(wǎng)
中圖分類號:TP301.1
1 Petri網(wǎng)模型工作流
Petri網(wǎng)是一種系統(tǒng)的數(shù)學(xué)和圖形描述與分析工具,Petri網(wǎng)分析方法和技術(shù)可用于靜態(tài)的結(jié)構(gòu)分析,又可用于動態(tài)行為分析,特別適用于具有并發(fā)、異步、分布、并行、不確定性的信息處理系統(tǒng)。經(jīng)過幾十年的發(fā)展,Petri網(wǎng)理論得到了極大豐富,其應(yīng)用領(lǐng)域涉及計算科學(xué)的各個領(lǐng)域,如線路設(shè)計、網(wǎng)絡(luò)協(xié)議、軟件工程、人工智能、形式語言、操作系統(tǒng)、并行管理、數(shù)據(jù)管理等。
Petri網(wǎng)理論對設(shè)計和模型化工作流過程提供了恰當(dāng)?shù)姆椒?。Petri網(wǎng)由庫所和變遷組成,用矩形表示變遷,圓圈表示庫所。變遷和庫所由有向弧相連接。從變遷到庫所,從庫所到變遷,相同兩個節(jié)點之間不允許相連接。
Petri網(wǎng)包含的幾個基礎(chǔ)對象:
(1)庫所(Places):用來表示系統(tǒng)狀態(tài),在Petri網(wǎng)中是被動因素,它們不能改變網(wǎng)的狀態(tài)。
(2)變遷(Transitions):表示資源的消耗、使用及系統(tǒng)狀態(tài)產(chǎn)生的變化。通過變遷操作,實現(xiàn)過程從一個狀態(tài)到另一個狀態(tài)轉(zhuǎn)的變。
(3)向?。ˋrcs):庫所和變遷之間通過向弧連接。在Petri網(wǎng)圖示中以連接線表示。一個內(nèi)向向?。╥ nward arc)從一個庫所連到一個變遷,一個外向向?。╫utward arc)從一個變遷連接到一個庫所。
(4)令牌(Tokens):令牌代表工作流過程當(dāng)前的狀態(tài)。這些對象遵循以下定義規(guī)則:庫所只擁有代表過程狀態(tài)的令牌,一個庫所可以用于0個或多個令牌。
一個向弧連接一個庫所到變遷。如果存在一個P指向T的向弧,則庫所P稱為變遷T的輸入庫所。如果存在一個T指向P的向弧,則庫所P稱為變遷T的輸出庫所。
當(dāng)一個變遷T被啟用激活后,它將令牌從它的輸入庫所轉(zhuǎn)移到它的輸出庫所。當(dāng)變遷發(fā)射時,它會從它的每個輸入庫所里消耗一個令牌,同時在它的輸出庫所中產(chǎn)生一個令牌。
每個工作流過程都有一個單一的開始庫所。它至少有一個指向變遷的內(nèi)向向弧,為了重啟流程,它也可以有一個來自變遷的外向向弧。
每個工作流過程都有一個單一的結(jié)束庫所。它至少有一個來自變遷的內(nèi)向向弧,但它不能有任何指向變遷的內(nèi)向向弧。
2 Petri網(wǎng)的觸發(fā)器
Petri網(wǎng)中的變遷是處于激發(fā)狀態(tài)的,一經(jīng)觸發(fā),就會立刻執(zhí)行,每個就緒的變遷對應(yīng)一個工作項,其主要包括三種類型的觸發(fā):用戶主導(dǎo)、外部消息事件、時間信號。
(1)用戶主導(dǎo):工作任務(wù)實例由用戶進行觸發(fā)。在工作流系統(tǒng)中一般都有用戶主導(dǎo)的工作任務(wù)實例。
(2)外部消息事件:任務(wù)實例是由外部的事件(如消息)進行觸發(fā)啟用。這類消息包括Email、短信消息等。
(3)時間信號:啟用的任務(wù)由一個時鐘觸發(fā)。比如當(dāng)預(yù)定義的時間后,任務(wù)就被執(zhí)行。由于這類型的任務(wù)能被運行在一個規(guī)劃的時間下的“后臺過程”觸發(fā),它不能與用戶有任何的對話。
3 Petri網(wǎng)路由
在一個工作流過程內(nèi),開始庫所與結(jié)束庫所之間的路由主要包括這幾種形式:順序路由、并行路由、條件路由、循環(huán)路由。
(1)順序路由:一個步驟完成后,無條件地流向固定的下一步驟。在Petri網(wǎng)中,通過在兩個任務(wù)間添加一個庫所進行鏈接。
(2)并行路由:使用AND-SPLIT構(gòu)造塊和AND-JOIN構(gòu)造塊,一個步驟完成后,同時激活多個后繼步驟。添加的這個步驟需要分多個分支步驟來共同處理完成,只有任務(wù)都完成,變遷才能實施。
(3)條件路由:一個步驟完成后,按一定的條件流向不同的下一步驟。使用的是OR-SPLIT構(gòu)造塊和OR-JION構(gòu)造塊。
(5)循環(huán)路由:Petri網(wǎng)的循環(huán)路由根據(jù)C的執(zhí)行結(jié)果決定是否繼續(xù)往下執(zhí)行,若未通過,再次執(zhí)行B,若通過,增加一個變遷R來實現(xiàn)R和C之間有條件約束的條件路由關(guān)系。
4 工作流引擎流程處理
工作流引擎實現(xiàn)對用戶提交的工作項內(nèi)容的解釋,引擎除了完成基本的流程控制、數(shù)據(jù)傳遞外,還必須具有一定的靈活性,具體表現(xiàn)為:
(1)動態(tài)選擇:上一個活動的執(zhí)行者可以對下一個活動的執(zhí)行者進行具體的指定,指定的用戶范圍可以參加該流程的所有用戶,或者從限定的用戶范圍內(nèi)進行選擇。
(2)跳轉(zhuǎn):一個活動執(zhí)行完畢后能動態(tài)的跳到一個指定的后續(xù)活動,繼續(xù)整個流程的執(zhí)行。
(3)多實例:支持一個活動到的多實例的split-join。
(4)能進行消息通知:當(dāng)一個用戶完成他的工作后,可以通過即時消息功能將這個消息信息通知下一步工作的執(zhí)行者。
(5)委托:可以對活動的執(zhí)行者進行逐過程、逐人的委托,也可以在得到一個任務(wù)時臨時指定另一個角色或人來執(zhí)行該任務(wù)。
工作流引擎的處理過程,具體處理過程包括流程的啟動,查找當(dāng)前節(jié)點和下一節(jié)點的聯(lián)系條件,如果存在這一條件,則實例化該節(jié)點,對該節(jié)點任務(wù)進行處理,該節(jié)點處理完后,獲取下一節(jié)點,以此循環(huán)至結(jié)束。
5 工作流引擎數(shù)據(jù)庫設(shè)計
工作流管理系統(tǒng)的運行需要數(shù)據(jù)庫的支持。結(jié)合上文提出的Petri網(wǎng)理論以及工作流引擎的處理過程,設(shè)計了該系統(tǒng)工作流引擎的數(shù)據(jù)庫,主要涉及到六張數(shù)據(jù)表,這些表是為定義工作流過程而設(shè)計的,通過邏輯設(shè)計,可以驅(qū)動業(yè)務(wù)流程的流轉(zhuǎn)運行,對于流程處理的通用描述如下:
(1)流程第一步,打開某一流程已綁定好的一個URL鏈接地址。
(2)流程第二步,工作流處理程序,通過權(quán)限判斷,從p_wf_case表中找到該流程,創(chuàng)建該流程的實例。
(3)第三步,工作流引擎通過流程的pwf_id從p_wf_place表和p_wf_workitem表中取得流程的第一個節(jié)點信息。
(4)第四步,根據(jù)流程的結(jié)點創(chuàng)建一個任務(wù)實例。
(5)第五步,將結(jié)點任務(wù)分配給綁定好的執(zhí)行者完成。當(dāng)任務(wù)完成后,將信息反饋給工作流引擎服務(wù)器。未完成時,會給出相應(yīng)的提示信息。
(6)第六步,工作流引擎找出下一個流程的結(jié)點。如果沒有,則整個流程結(jié)束。
該系統(tǒng)檢測用戶是否有發(fā)起流程的權(quán)限,若存在該權(quán)限,則創(chuàng)建該流程實例,并在節(jié)點和關(guān)系表中找到任務(wù)節(jié)點,若存在該任務(wù)節(jié)點,繼續(xù)創(chuàng)建該節(jié)點的實例,執(zhí)行該節(jié)點的相關(guān)任務(wù),當(dāng)該節(jié)點任務(wù)執(zhí)行完成后,繼續(xù)查找下一節(jié)點,以此循環(huán)至流程處理結(jié)束。根據(jù)以上介紹的工作流業(yè)務(wù)流轉(zhuǎn)過程以及設(shè)計的數(shù)據(jù)庫表。
6 結(jié)束語
本文主要描述了工作流引擎的設(shè)計。論文首先從Petri網(wǎng)模型工作流、觸發(fā)器、路由組成上對工作流引擎設(shè)計進行了相關(guān)的理論描述,在此基礎(chǔ)上,對工作流引擎的流程處理過程,結(jié)合Petri網(wǎng)理論設(shè)計了工作流引擎的數(shù)據(jù)庫表。
參考文獻:
[1]Tony Marston.基于活動的PHP工作流引擎[M].CGFinal Developer Zone,2008.
[2]趙宗敏.基于WFMC規(guī)范的軟件過程工作流引擎設(shè)計與實現(xiàn)[D].上海師范大學(xué),2010.
[3]錢春曉.基于Petri網(wǎng)的工作流引擎設(shè)計與實現(xiàn)[D].重慶大學(xué),2006.
作者簡介:查文剛(1983.09-),男,江西星子人,助理工程師,碩士,研究方向:計算機科學(xué)技術(shù)。
作者單位:華東交通大學(xué),南昌 330013