摘 要: 針對自然災(zāi)害處置對時效性要求高、情況變化快的特點,提出一種基于工作流計算的處置方法。首先依據(jù)處置過程的知識模型和處置經(jīng)驗,將相關(guān)軟件功能和數(shù)據(jù)相互關(guān)聯(lián)起來,形成標(biāo)準(zhǔn)化處置流程,并進(jìn)行統(tǒng)一協(xié)調(diào)控制,使得各系統(tǒng)單元與需要處置的要素相互配合,協(xié)調(diào)工作,提高應(yīng)急處置效率。然后建立告警事件與流程匹配模型,根據(jù)事件類型自動啟動應(yīng)急處置流程,提高響應(yīng)速度。流程化應(yīng)急情況處置技術(shù),將被動系統(tǒng)轉(zhuǎn)變?yōu)橹鲃酉到y(tǒng),并最終達(dá)到標(biāo)準(zhǔn)化、規(guī)劃化、智能化、高效化的目的。
關(guān)鍵詞: 流程化;應(yīng)急情況處置;事件告警
0 引言
近幾年自然災(zāi)害頻頻發(fā)生,如汶川地震、玉樹地震等,這些自然災(zāi)害給人民群眾財產(chǎn)造成了巨大的損失,導(dǎo)致大量人員傷亡。為快速有效處置這些突發(fā)事件,必須制定相應(yīng)的處置預(yù)案,同時將處置預(yù)案模塊化、節(jié)點化、流程化,以利于搶險救災(zāi)指揮部內(nèi)多要素協(xié)同處置。在搶險救災(zāi)中,快速完成對突發(fā)事件的有效響應(yīng)和處置極為重要,而流程化協(xié)同處置[1-2]能有效將指揮部內(nèi)各單位及保障要素系統(tǒng)組織起來,通過工作流引擎技術(shù)[3-4]將處置預(yù)案中每個處置節(jié)點快速下達(dá)到指定處理人員,通過協(xié)同處置有效完成對救災(zāi)資源的組織和安排,快速完成對災(zāi)情的掌握和人員的救護(hù)。
1 系統(tǒng)設(shè)計
流程化應(yīng)急處置軟件系統(tǒng)[5-7]如圖1所示,其中應(yīng)用層軟件主要包括流程編排工具、關(guān)鍵事件告警、預(yù)案匹配、流程通用客戶端,服務(wù)層主要包括關(guān)鍵事件告警服務(wù)、工作流引擎、消息分發(fā)服務(wù)以及數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)支撐層主要包括流程數(shù)據(jù)庫、預(yù)案數(shù)據(jù)庫及資料數(shù)據(jù)庫。本系統(tǒng)基于Web開發(fā),通過用戶登錄和權(quán)限控制實現(xiàn)。
基于流程化的突發(fā)事件處置方法包括以下步驟:
?。?)利用可視化流程編排工具,指揮員將梳理總結(jié)出的應(yīng)急情況處置程序內(nèi)容、方法步驟,通過流程工具進(jìn)行編排、固化,形成程序化、標(biāo)準(zhǔn)化的指揮作業(yè)流程。
?。?)指揮員建立突發(fā)事件與處置流程的關(guān)聯(lián)關(guān)系。
(3)監(jiān)測到突發(fā)事件后,生成告警信息,系統(tǒng)根據(jù)告警事件類型及事件信息匹配啟動相應(yīng)處置流程。
(4)流程引擎負(fù)責(zé)流程啟動及流程跳轉(zhuǎn),流程啟動后,流程引擎把下一流程處置環(huán)節(jié)信息發(fā)送給指揮部流程管控服務(wù),如果當(dāng)前處置環(huán)節(jié)與后臺服務(wù)關(guān)聯(lián),則直接根據(jù)服務(wù)名稱和地址調(diào)用后臺服務(wù)實現(xiàn)相關(guān)功能。
(5)指揮部流程管控服務(wù)接收到流程分發(fā)數(shù)據(jù)后,會根據(jù)流程節(jié)點關(guān)聯(lián)的人員信息,把流程待辦任務(wù)發(fā)送到指定處理人員。
(6)各處理人員接收到流程分發(fā)消息后進(jìn)行提示,指揮員進(jìn)入流程處置客戶端,查看自己的任務(wù),根據(jù)任務(wù)內(nèi)容顯示業(yè)務(wù)處理界面,完成對任務(wù)的處理。
(7)指揮員處理完當(dāng)前任務(wù)后將完成消息發(fā)送給流程管控服務(wù),管控服務(wù)收到后將消息轉(zhuǎn)發(fā)給工作流引擎,流程跳轉(zhuǎn)到下一節(jié)點,然后重復(fù)步驟(4)。
?。?)最后一個節(jié)點處理完成后發(fā)送流程結(jié)束消息到工作流引擎,引擎結(jié)束流程,并將流程處置過程中所有處理信息記錄下來,形成歷史記錄以便后續(xù)查看。
2 關(guān)鍵模塊
2.1 流程建模工具
流程建模工具實現(xiàn)突發(fā)事件處置過程編排,利用指揮人員在處置突發(fā)事件中積累的經(jīng)驗將過程按照功能模塊、處置人員、處置內(nèi)容等具體化為若干個節(jié)點,按照先后順序?qū)⒐?jié)點以流程圖的方式連接起來,形成處置預(yù)案。處置過程流程化提高了某些共用模塊的重用率,有效降低了系統(tǒng)開發(fā)工作量,同時將處置經(jīng)驗知識化,有利于知識積累和存儲。
具體來說,流程建模工具主要實現(xiàn)了以下功能:
?。?)流程節(jié)點模塊化封裝,流程節(jié)點數(shù)據(jù)主要包括節(jié)點輸入/輸出參數(shù)、關(guān)聯(lián)席位及節(jié)點分支邏輯處理規(guī)則。
?。?)流程節(jié)點與業(yè)務(wù)功能模塊的關(guān)聯(lián),包括流程節(jié)點與后臺服務(wù)的直接關(guān)聯(lián)、流程節(jié)點與相關(guān)特定業(yè)務(wù)功能的關(guān)聯(lián)。
?。?)用戶能夠通過拖拽事先定義的流程節(jié)點,實現(xiàn)流程的自主及可視化編排,支持以特定語言對流程要素進(jìn)行描述。
(4)實現(xiàn)處置流程與威脅告警事件的關(guān)聯(lián),能夠根據(jù)告警事件自動啟動相應(yīng)處置流程。
?。?)用戶通過可視化流程編排工具對流程進(jìn)行編輯管理,包括新建、修改、保存流程。
圖2是保存流程信息的數(shù)據(jù)庫模型圖。流程節(jié)點和節(jié)點連接線構(gòu)成了流程的基本信息。流程屬性表用于突發(fā)事件與處置流程的匹配,由突發(fā)事件的受災(zāi)人數(shù)、事件類型等到流程庫中進(jìn)行匹配,如果找到匹配流程則直接啟動,提高響應(yīng)速度。流程的每個節(jié)點都關(guān)聯(lián)具體的處置業(yè)務(wù),用戶收到待辦任務(wù)后根據(jù)節(jié)點任務(wù)關(guān)聯(lián)表可直接定位到要處理的業(yè)務(wù)內(nèi)容。為保證繪制出正確的流程,在流程繪制和保存階段需要對流程進(jìn)行合法性檢查。在繪制階段的檢查內(nèi)容包括:
?。?)流程開始和結(jié)束節(jié)點唯一性檢查;
?。?)兩個流程節(jié)點之間只可以有一條連接線;
?。?)連接線的指向性檢查,包括連接線不能指向開始節(jié)點、連接線的起始節(jié)點不能是結(jié)束節(jié)點、連接線不能有環(huán)路、開始節(jié)點的后繼只能有一個任務(wù)節(jié)點。
流程保存時的檢查內(nèi)容包括:
(1)流程是否存在開始和結(jié)束節(jié)點;
(2)除流程開始和結(jié)束節(jié)點,其他任務(wù)節(jié)點都必須有前驅(qū)和后繼節(jié)點。
2.2 告警事件與預(yù)案匹配
當(dāng)有突發(fā)事件發(fā)生時,關(guān)鍵事件告警服務(wù)被觸發(fā),并同時記錄突發(fā)事件的屬性信息,包括產(chǎn)生事件類型、主體目標(biāo)位置、目標(biāo)類型等,告警服務(wù)啟動預(yù)案匹配機(jī)制,利用事件信息和匹配規(guī)則在預(yù)案庫中尋找符合要求的預(yù)案,如果找到,則啟動處置流程,否則提醒指揮人員制定新的預(yù)案。主要步驟包括以下方面:
?。?)關(guān)鍵事件告警服務(wù)監(jiān)測到當(dāng)前有突發(fā)事件發(fā)生時,推送告警信息到告警事件應(yīng)用客戶端。
?。?)指揮人員根據(jù)事件等級選擇是否對突發(fā)事件進(jìn)行處置,若選擇處置,則啟動相應(yīng)的處置流程,并獲取當(dāng)前告警事件關(guān)鍵信息,包括事件類型以及事件關(guān)聯(lián)的關(guān)鍵信息。
(3)系統(tǒng)根據(jù)告警事件類型獲取與該突發(fā)事件關(guān)聯(lián)的預(yù)案匹配規(guī)則項(如位置、關(guān)鍵詞等),并根據(jù)這些匹配規(guī)則進(jìn)行預(yù)案匹配。
(4)若成功匹配到預(yù)案,則從預(yù)案庫中加載并動態(tài)調(diào)整預(yù)案,否則制定相應(yīng)的應(yīng)急處置預(yù)案。
2.3 工作流引擎
工作流引擎[8]是流程化應(yīng)急處置的核心組成模塊,負(fù)責(zé)實現(xiàn)處置流程自動跳轉(zhuǎn)、流程狀態(tài)機(jī)維護(hù)等核心功能。本文實現(xiàn)的工作流引擎主要包含流程解析、流程管控、流程任務(wù)處理及流程歷史數(shù)據(jù)管理四個模塊。
?。?)流程解析模塊:負(fù)責(zé)解析流程要素,包括流程節(jié)點信息及節(jié)點與節(jié)點之間的關(guān)聯(lián)信息;實現(xiàn)流程邏輯分支的判斷,如流程路徑選擇等。
?。?)流程管控模塊:負(fù)責(zé)實現(xiàn)流程啟動和終結(jié),流程啟動時,可把整個流程的輸入?yún)?shù)傳遞給流程管控模塊;根據(jù)流程節(jié)點的邏輯組織,自動實現(xiàn)流程節(jié)點自動跳轉(zhuǎn)和狀態(tài)維護(hù)。
(3)任務(wù)處理模塊:根據(jù)流程唯一標(biāo)識查詢當(dāng)前待辦任務(wù);將當(dāng)前待辦任務(wù)相關(guān)數(shù)據(jù)發(fā)送到流程管控服務(wù),通知相關(guān)人員處理;查詢當(dāng)前流程的辦理記錄。
(4)歷史數(shù)據(jù)管理模塊:當(dāng)流程處置完成后,可把流程處置相關(guān)數(shù)據(jù)保存到流程歷史庫中;支持流程歷史數(shù)據(jù)的查詢、調(diào)閱等。
本文根據(jù)流程跳轉(zhuǎn)過程設(shè)計了自己的工作流引擎系統(tǒng),實現(xiàn)了流程的啟動、狀態(tài)記錄和待辦任務(wù)生成。引擎算法利用圖3所示的數(shù)據(jù)結(jié)構(gòu)記錄流程運(yùn)轉(zhuǎn)狀態(tài)和用戶待辦任務(wù),其中流程編號為編排好的流程的序號,節(jié)點編號為編排好的流程中任務(wù)節(jié)點的編號,流程實體編號和節(jié)點實體編號為流程運(yùn)行中生成的編號,即由編排好的流程經(jīng)啟動后實例化一個運(yùn)行流程。流程引擎包含三個主要算法模塊,分別是流程啟動、選擇后續(xù)環(huán)節(jié)處置人和任務(wù)節(jié)點發(fā)送。
2.3.1 流程啟動
流程的啟動過程比較簡單,根據(jù)要啟動的流程編號找到流程第一個節(jié)點,在流程編排中第一個節(jié)點的處置人默認(rèn)為流程啟動人,所以由第一個節(jié)點信息創(chuàng)建一條流程節(jié)點狀態(tài)數(shù)據(jù),其中節(jié)點狀態(tài)為“到達(dá)”,并根據(jù)啟動人創(chuàng)建用戶任務(wù)數(shù)據(jù),處置人和發(fā)送人都為流程啟動人。
2.3.2 選擇后續(xù)環(huán)節(jié)處置人
用戶登錄后根據(jù)用戶編號到用戶任務(wù)表中查找處置人為自己的任務(wù),并進(jìn)入相應(yīng)的處置內(nèi)容。用戶完成節(jié)點任務(wù)后需選擇當(dāng)前節(jié)點的后續(xù)節(jié)點處置人。在查詢后續(xù)節(jié)點前首先需要判斷當(dāng)前節(jié)點是否已經(jīng)被他人處置結(jié)束,防止因待辦任務(wù)未刷新導(dǎo)致的錯誤處置,判斷方法是到流程節(jié)點狀態(tài)表中查詢節(jié)點狀態(tài)。如當(dāng)前節(jié)點未被結(jié)束,則根據(jù)流程編排信息查詢后續(xù)節(jié)點,如果當(dāng)前節(jié)點是分支節(jié)點,即其后續(xù)節(jié)點有多個,還需根據(jù)當(dāng)前環(huán)節(jié)的輸出參數(shù)和分支規(guī)則判斷正確流向的節(jié)點。
對已正確查找出的每一個后續(xù)節(jié)點,需確定供用戶選擇的節(jié)點備選處置人,備選處置人獲取需考慮多種情況。如果當(dāng)前節(jié)點是協(xié)同處置且已有其他用戶處置結(jié)束,則該節(jié)點后續(xù)節(jié)點的備選處置人已被確定,另外如果后續(xù)節(jié)點是匯聚節(jié)點,即有其他節(jié)點流向該節(jié)點,則此后續(xù)節(jié)點的備選處置人還需參考其他前驅(qū)節(jié)點的選取。確定完后續(xù)節(jié)點的備選處置人后,還需查詢節(jié)點的處置人規(guī)則,即此節(jié)點是單人處置還是多人處置,根據(jù)此處置規(guī)則限制用戶從備選處置人中選擇的處置人個數(shù)。選擇后續(xù)處置人流程圖如圖4所示。
2.3.3 任務(wù)節(jié)點發(fā)送
任務(wù)節(jié)點發(fā)送流程如圖5所示。在獲取后續(xù)節(jié)點和每個節(jié)點的備選處置人后,用戶選擇合適的處置人,保存當(dāng)前任務(wù)的處置信息,將流程發(fā)送到下一環(huán)節(jié),流程引擎根據(jù)整個流程節(jié)點的狀態(tài)決定是否推進(jìn)到下一狀態(tài)。
首先更新用戶任務(wù)表,寫入任務(wù)處置時間,表示用戶任務(wù)處置結(jié)束。獲取當(dāng)前節(jié)點的協(xié)同處置規(guī)則,協(xié)同處置規(guī)則有“多人接收任務(wù)但僅需一人處置”、“多人接收任務(wù)且所有接收人處置”、“多人接收任務(wù)且需要超過一定數(shù)量的人處理”,根據(jù)協(xié)同處置規(guī)則和用戶任務(wù)表判斷當(dāng)前任務(wù)是否處置結(jié)束。
如果當(dāng)前任務(wù)節(jié)點處置結(jié)束,先判斷后續(xù)節(jié)點是否有未完成的前驅(qū)節(jié)點,如有則不做其他處理。如果沒有則表示后續(xù)節(jié)點可達(dá),如果此后續(xù)節(jié)點是流程結(jié)束節(jié)點,則流程處置結(jié)束,備份流程流轉(zhuǎn)信息形成歷史數(shù)據(jù),當(dāng)后續(xù)節(jié)點為普通節(jié)點時,根據(jù)后續(xù)節(jié)點信息新建流程節(jié)點狀態(tài)數(shù)據(jù),節(jié)點狀態(tài)為到達(dá),根據(jù)選擇的處置人信息創(chuàng)建用戶任務(wù)數(shù)據(jù),插入表中。
如果當(dāng)前任務(wù)節(jié)點還有其他處置人未處置,則當(dāng)前節(jié)點無法結(jié)束,此時根據(jù)后續(xù)節(jié)點創(chuàng)建用戶任務(wù)數(shù)據(jù),但用戶任務(wù)名稱為掛起任務(wù),流程不往前推進(jìn),而后續(xù)節(jié)點的處置人信息也保存在用戶任務(wù)表中,供選擇后續(xù)節(jié)點處置人時使用。用戶在獲取待辦任務(wù)時舍棄掛起任務(wù)。
工作流引擎在運(yùn)轉(zhuǎn)過程中保存下來的數(shù)據(jù)可實現(xiàn)流程監(jiān)控功能,以不同顏色表示處置結(jié)束和未結(jié)束的節(jié)點,同時顯示每個節(jié)點的處置結(jié)束時間、審批意見等信息,方便用戶掌握流程處置進(jìn)度。同時為提醒用戶按時完成任務(wù),實現(xiàn)時限管理服務(wù),采用循環(huán)觸發(fā)機(jī)制,每隔一段時間對流程任務(wù)進(jìn)行掃描,如發(fā)現(xiàn)超時未完成的任務(wù),則在用戶登錄時進(jìn)行警告提醒。
2.4 工作流客戶端
工作流客戶端主要輔助指揮員實現(xiàn)流程任務(wù)的處置,客戶端以插件的方式集成到各系統(tǒng)軟件內(nèi),主要功能包括流程狀態(tài)監(jiān)視、待辦工作顯示、任務(wù)處理及流程記錄顯示四個方面。
工作流客戶端處置流程如圖6所示,處置過程為:
?。?)工作流客戶端接收到流程管控服務(wù)推送到本系統(tǒng)的待辦任務(wù)提示,顯示本系統(tǒng)需要處理的流程任務(wù),并展現(xiàn)當(dāng)前流程已辦理任務(wù)的處置記錄,從而輔助指揮員進(jìn)行處置決策。
?。?)流程節(jié)點通過與軟件業(yè)務(wù)功能模板的綁定,自動實現(xiàn)任務(wù)提示到任務(wù)處理的跳轉(zhuǎn)。
?。?)用戶完成任務(wù)處理后,調(diào)用流程處置相關(guān)接口提交處置結(jié)果數(shù)據(jù)到工作流引擎,進(jìn)而實現(xiàn)任務(wù)數(shù)據(jù)的保存及流程的下一步跳轉(zhuǎn)。
3 結(jié)論
針對當(dāng)前自然災(zāi)害日益頻繁的問題,本文提出了一種基于流程化的事件處置方法。首先對常見突發(fā)事件進(jìn)行處置過程編排,建立流程處置節(jié)點與業(yè)務(wù)功能以及指揮所人員的關(guān)聯(lián)關(guān)系,然后利用告警事件與流程匹配模型,根據(jù)事件類型等信息快速啟動應(yīng)急預(yù)案,使處理過程在指揮部內(nèi)快速流轉(zhuǎn),有效地收集信息,充分利用指揮部內(nèi)各要素系統(tǒng)的處理能力,完成對突發(fā)事件的快速處置,同時提供能統(tǒng)一查詢已處理任務(wù)、待辦任務(wù)和進(jìn)行任務(wù)處置的客戶端,方便用戶查看處置過程。本文提出的方法能有效地組織多用戶協(xié)同處置突發(fā)事件,充分組織和利用救災(zāi)資源,快速完成對突發(fā)事件的響應(yīng)和處置。
參考文獻(xiàn)
[1] LEYMANN F, ROLLER D. Workflow-based applications[J]. IBM Systems Journal, 1997, 36(1):102-123.
[2] VAN DER AALST T W M P. Workflow Modeling using Proclets[J]. In Proceedings of CoopIS′00, 2003:1129-1134.
[3] 羅海濱,范玉順,吳澄.工作流技術(shù)綜述[J].軟件學(xué)報,2000(7):899-907.
[4] 李紅臣,史美林.工作流模型及其形式化描述[J].計算機(jī)學(xué)報,2003(11):1456-1463.
[5] 李海波,戰(zhàn)德臣,徐曉飛.基于工作流引擎的構(gòu)件組裝體系結(jié)構(gòu)[J].軟件學(xué)報,2006(6):1404-1410.
[6] 張曉剛,李明樹.基于工作流的知識流建模與控制[J].軟件學(xué)報,2005(2):184-193.
[7] BASU A, BLANNING R W. A formal approach to workflow analysis.[J]. Information Systems Research, 2000, 11(1):17-36.
[8] OKADA K, HAYAMI H, SAGEHASHI K. From workflow to interworkflow[J]. Wuhan University Journal of Natural Sciences, 2001(6):198-203.