摘要:工作流管理系統(tǒng)是現(xiàn)代企業(yè)流程管理的重要軟件系統(tǒng)。實現(xiàn)柔性的工作流管理,需要工作流引擎具有適應(yīng)需求變更,動態(tài)調(diào)整業(yè)務(wù)流程的功能。文章分析了規(guī)則表示、規(guī)則引擎的組成構(gòu)件,功能與特點,并設(shè)計了規(guī)則引擎。規(guī)則引擎作為工作流引擎的核心,提供規(guī)則抽取、表示、判定以及活動響應(yīng)的服務(wù)集,為路由控制(活動調(diào)度)、規(guī)則判定、活動轉(zhuǎn)移,狀態(tài)監(jiān)控提供關(guān)鍵支持,實現(xiàn)動態(tài)流程調(diào)整,滿足柔性的工作流管理需要。
關(guān)鍵詞:工作流;業(yè)務(wù)過程;業(yè)務(wù)規(guī)則;規(guī)則引擎;工作流引擎
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-2374(2009)07-0011-02
工作流技術(shù)正成為21世紀(jì)新的熱點。工作流管理系統(tǒng)在工作流管理聯(lián)盟(Workflow Management Coalition,WFMC)制定的一系列標(biāo)準(zhǔn)下得到了迅猛發(fā)展和廣泛應(yīng)用?,F(xiàn)代化企業(yè)的生產(chǎn)與經(jīng)營方式面臨著業(yè)務(wù)重組,流程再造,以適應(yīng)不斷變化的市場需要,客觀上對工作流管理系統(tǒng)提出了適應(yīng)變化、適時更新的高要求,也就是要建立具有自適應(yīng)能力,靈活定制業(yè)務(wù)流程的柔性工作流管理系統(tǒng)。工作流是業(yè)務(wù)流程的抽象,大多以靜態(tài)、固化的形式表現(xiàn),一般的工作流管理系統(tǒng)在業(yè)務(wù)流程建模、定制開發(fā)、表達(dá)能力與系統(tǒng)靈活性方面還不能做到動態(tài)、適時地調(diào)整,不能做到根據(jù)變更需求,靈活地調(diào)整工作流程。
工作流引擎是工作流管理系統(tǒng)的核心,本文對工作流引擎的核心構(gòu)件——規(guī)則引擎進行分析、設(shè)計,把靜態(tài)的工作流進一步抽象,剝離出業(yè)務(wù)邏輯與業(yè)務(wù)規(guī)則,對其變更規(guī)則進行規(guī)范,由條件、事實及規(guī)則(依賴與轉(zhuǎn)換規(guī)則)組成規(guī)則引擎,實現(xiàn)工作流管理系統(tǒng)的靈活性、自適應(yīng)性。
一、相關(guān)概念
(一)規(guī)則
規(guī)則是知識表達(dá)最常用的形式,規(guī)則是業(yè)務(wù)過程的一種抽象,用來描述如何解決問題,基本上由條件與相應(yīng)操作兩部分組成,在工作流引擎中可以定義成IF-THEN結(jié)構(gòu),IF部分是給定的條件,THEN部分為相對應(yīng)的操作(動作),規(guī)則可以有多個條件,用AND/OR連接。規(guī)則的條件由(對象,連接算子與取值)三元組組成,連接算子一般是is、is not、are、are not等邏輯運算子進行邏輯判斷,其值為一個布爾值;操作部分為條件成立時相應(yīng)的操作或事實。
(二)規(guī)則引擎
規(guī)則引擎是工作流引擎的核心組成部件,對規(guī)則的抽取、判定、管理,為工作流引擎這一工作流管理系統(tǒng)核心功能提供前置(依賴性規(guī)則)條件與后置(轉(zhuǎn)換性規(guī)則)提供規(guī)則調(diào)度與策略管理。它對頻繁變化的業(yè)務(wù)流程進行規(guī)則抽象,剝離出來放入規(guī)則庫中管理和修改,其基本過程是將提交給它的事實數(shù)據(jù)對象與加載在引擎中的業(yè)務(wù)規(guī)則進行測試和對比,判定是否激活相應(yīng)的業(yè)務(wù)規(guī)則,觸發(fā)對應(yīng)的操作,完成對工作流引擎的路由控制(調(diào)度)及狀態(tài)變更,達(dá)到系統(tǒng)動態(tài)調(diào)整目的。規(guī)則引擎一般由事實庫、規(guī)則庫、推理三部分構(gòu)成。其運行機制是通過在事實庫、規(guī)則庫中快速檢索對象及加載的各項規(guī)則進行匹配,激活符合條件的規(guī)則,形成優(yōu)先級排序,解決沖突,決定規(guī)則的響應(yīng)與觸發(fā)。
(三)工作流、工作流管理系統(tǒng)、工作流引擎
工作流是業(yè)務(wù)過程的計算模型,是對業(yè)務(wù)邏輯和業(yè)務(wù)規(guī)則在計算機的數(shù)值模型表示,并實施計算。業(yè)務(wù)過程是業(yè)務(wù)活動的集合,通過業(yè)務(wù)規(guī)則進行前后鏈接,相互協(xié)作,形成一個有機整體,達(dá)到一個共同的業(yè)務(wù)過程控制管理的目標(biāo)。
工作流管理系統(tǒng)是符合WFMC標(biāo)準(zhǔn)的軟件系統(tǒng),完成工作流的定義、建模、調(diào)度,并對活動、節(jié)點以及狀態(tài)進行管理,使業(yè)務(wù)過程按照預(yù)先定義好的工作流邏輯推進工作流實例的執(zhí)行。
工作流引擎是工作流管理系統(tǒng)的核心,為工作流管理系統(tǒng)提供一組運行時解釋或者執(zhí)行的一組服務(wù)的數(shù)據(jù)模型和軟件體,其核心功能包括路由選擇(調(diào)度)、數(shù)據(jù)交換、過程流轉(zhuǎn)與狀態(tài)變換等,其核心就是要決定任務(wù)表中各個任務(wù)運行實例后的后續(xù)處理節(jié)點,使活動的執(zhí)行按照預(yù)定義的路線(規(guī)則)流動。
二、規(guī)則引擎實現(xiàn)柔性的工作流管理
規(guī)則引擎是工作流引擎的核心構(gòu)件,流程引擎的路由調(diào)度、過程流轉(zhuǎn)與狀態(tài)變遷是基于業(yè)務(wù)規(guī)則來實現(xiàn)的。規(guī)則引擎主要實現(xiàn)的功能是存儲、分類和管理規(guī)則,驗證規(guī)則的一致性,通過規(guī)則推斷其他規(guī)則、聯(lián)系規(guī)則和執(zhí)行這些規(guī)則的應(yīng)用程序。其主要思想是從具體的業(yè)務(wù)邏輯中分離出業(yè)務(wù)規(guī)則,以實現(xiàn)業(yè)務(wù)變更的靈活性。
傳統(tǒng)的開發(fā)模式,業(yè)務(wù)邏輯往往是被直接用程序代碼固定,系統(tǒng)維護代價高,業(yè)務(wù)規(guī)則的微小變化往往導(dǎo)致系統(tǒng)的變更,數(shù)值模型與業(yè)務(wù)流程的全面修改。
通過規(guī)則引擎提供一種機制,將業(yè)務(wù)處理邏輯和業(yè)務(wù)規(guī)則分離,業(yè)務(wù)邏輯是變化頻度最高的,通過專門的業(yè)務(wù)模型工具可以讓用戶動態(tài)地、適時地進行修改,而業(yè)務(wù)規(guī)則的變動只是涉及規(guī)則庫,策略的調(diào)整,不改變整個系統(tǒng)的結(jié)構(gòu),可以實現(xiàn)動態(tài)的變更,滿足柔性工作流管理系統(tǒng)建設(shè)的需要。
規(guī)則引擎有兩個重要任務(wù):分離業(yè)務(wù)邏輯和業(yè)務(wù)規(guī)則;規(guī)則的形式化描述。
將業(yè)務(wù)流程中的業(yè)務(wù)邏輯和業(yè)務(wù)規(guī)則分離本質(zhì)是一個抽象過程,將關(guān)鍵的業(yè)務(wù)判斷條件與響應(yīng)操作提取出來,即規(guī)則提取,形式化描述業(yè)務(wù)規(guī)則就是對業(yè)務(wù)規(guī)則的數(shù)值表述,形成規(guī)則庫,與事實庫一起被規(guī)則引擎調(diào)用,達(dá)到業(yè)務(wù)流程的可運算化。同時必須考慮規(guī)則間的沖突并提供沖突解決機制,所謂規(guī)則沖突是指規(guī)則在相同條件下的值域交叉引起的判定歧義。一般可根據(jù)設(shè)定規(guī)則的優(yōu)先級順序,在規(guī)則發(fā)生沖突時采納較高優(yōu)先級規(guī)則的判定反饋,或者采用隊列模式,依據(jù)先進先出原則進行判定,或者考慮業(yè)務(wù)中規(guī)則使用頻率,低頻率較高或較低的規(guī)則反饋。
規(guī)則的形式化描述是為了使業(yè)務(wù)規(guī)則的代碼化,能被規(guī)則引擎識別,并參與判定、運算。根據(jù)Rete算法(網(wǎng)絡(luò)算法)思想,將規(guī)則分割為LHS(Left Hand Side)和RHS(Right Hand Side),LHS由規(guī)則的條件部分組成,RHS由規(guī)則的判定部分組成。
三、規(guī)則引擎設(shè)計
規(guī)則引擎這一軟件構(gòu)架可以結(jié)合復(fù)雜的業(yè)務(wù)流程對業(yè)務(wù)策略和邏輯進行更改,業(yè)務(wù)流程中指定的規(guī)則會隨時間而改變,一般而言,業(yè)務(wù)流程中業(yè)務(wù)規(guī)則(決策或策略)最容易變化,因此,業(yè)務(wù)規(guī)則引擎的設(shè)計能夠直接創(chuàng)建和修改業(yè)務(wù)規(guī)則集,而業(yè)務(wù)規(guī)則通過規(guī)則編輯器進行創(chuàng)建,生成規(guī)則庫(策略庫),由業(yè)務(wù)規(guī)則引擎直接執(zhí)行它們。
(一)規(guī)則引擎組件圖
一個規(guī)則引擎主要由規(guī)則引擎服務(wù)、事實庫、業(yè)務(wù)規(guī)則編輯器以及規(guī)則庫四個部分組成,其中:(1)規(guī)則引擎服務(wù):解析和執(zhí)行業(yè)務(wù)規(guī)則,其為系統(tǒng)級服務(wù);(2)事實庫:操作數(shù)據(jù)的API函數(shù)集合,包含運行時數(shù)據(jù)、常數(shù)以及流程變量三種類型;(3)業(yè)務(wù)規(guī)則:一個業(yè)務(wù)規(guī)則包含一組條件和在此條件下執(zhí)行的操作(動作),它們表示業(yè)務(wù)規(guī)則應(yīng)用程序的一段業(yè)務(wù)邏輯;(4)業(yè)務(wù)規(guī)則庫:許多業(yè)務(wù)規(guī)則的集合,每條業(yè)務(wù)規(guī)則都包含一個條件過濾器和多個動作。條件過濾器是多個布爾表達(dá)式的組合,其結(jié)果仍然是一個布爾表達(dá)式;在程序運行時,動作將會在條件過濾器返回結(jié)果為真的時候執(zhí)行;(5)業(yè)務(wù)規(guī)則編輯器:是生成業(yè)務(wù)規(guī)則的圖形化編輯工具。
(二)規(guī)則引擎運行流程
從圖2可以清晰看出規(guī)則引擎在規(guī)則調(diào)用、解析、條件判定及轉(zhuǎn)移規(guī)則的完整流程。
(三)規(guī)則引擎接口
規(guī)則引擎作為工作流引擎的一個核心部件,這里給出一般需要的接口。
四、工作流引擎的動態(tài)適應(yīng)策略
可以說規(guī)則引擎是實現(xiàn)柔性工作流管理系統(tǒng)的核心部件,一個工作流管理系統(tǒng)需要通過規(guī)則引擎進行服務(wù)的主要是:狀態(tài)轉(zhuǎn)換規(guī)則(活動間的連接線);前置規(guī)則(向前依賴規(guī)則);后置規(guī)則(向后轉(zhuǎn)發(fā)規(guī)則);工具欄按鈕訪問權(quán)限/展現(xiàn)控制規(guī)則;循環(huán)審批結(jié)束規(guī)則(指派)。這些通過規(guī)則引擎可以靈活配置,滿足復(fù)雜多變的個性化需求。
柔性工作流引擎的主要任務(wù)是啟動流程、指派任務(wù)、控制路由轉(zhuǎn)移條件,并對工作流實例進行狀態(tài)監(jiān)控,并能動態(tài)適應(yīng)流程的變更。當(dāng)一個業(yè)務(wù)流程發(fā)生變化時,存在兩種動態(tài)修改:一是業(yè)務(wù)邏輯的變更,另一個是業(yè)務(wù)規(guī)則的調(diào)整。這也就是兩種柔性工作流引擎的自適應(yīng)策略:(1)通過業(yè)務(wù)過程定義與管理工具動態(tài)修改,通過相應(yīng)的管理工具(流程建模工具)對流程的路由選擇進行修改,若是新增流程可以直接創(chuàng)建原始模型,若修改運行中的流程實例,可以創(chuàng)建新的副本;(2)通過規(guī)則引擎的規(guī)則編輯器對系統(tǒng)屬性與相關(guān)數(shù)據(jù)進行動態(tài)修改,具有相當(dāng)大的靈活性,規(guī)則與業(yè)務(wù)邏輯的分離,使得整個工作流管理系統(tǒng)具有極大的靈活性。
五、結(jié)論
本文重點討論了工作流引擎中規(guī)則引擎的結(jié)構(gòu)、功能,分析了工作流引擎的核心功能,將業(yè)務(wù)邏輯與業(yè)務(wù)規(guī)則進行分離,通過規(guī)則引擎提供的服務(wù),支持路由控制、狀態(tài)監(jiān)控,可以實現(xiàn)柔性的工作流管理系統(tǒng),具有以下的優(yōu)點:規(guī)則從流程中剝離,可以實現(xiàn)規(guī)則本身的可管理性,通過規(guī)則引擎,業(yè)務(wù)邏輯不再依賴于程序及開發(fā)人員;管理隨需的流程為用戶動態(tài)修改流程定義提供了有效的工具與方法;基于規(guī)則引擎的工作流管理系統(tǒng),配置靈活,具有良好的穩(wěn)定性,可擴展性及靈活的業(yè)務(wù)處理能力。
參考文獻(xiàn)
[1]路春光,孟麗麗,郝立文,馬琨.基于WEB的柔性工作流引擎的設(shè)計[J].微計算機信息,2006,(5).
[2]張曉東,柴躍廷,任守榘.基于業(yè)務(wù)規(guī)則的事件驅(qū)動建模方法[J].清華大學(xué)學(xué)報,1999,39(7).
[3]張建,郝曉玲.支持群體協(xié)作的工作流引擎設(shè)計[J].山東建筑工程學(xué)院學(xué)報,2006,(3).
[4]于海波,車海燕,呂巍.一種RB-RBAC模型規(guī)則沖突消解算法[J].計算機工程與應(yīng)用,2006,(42).
[5]陶曉俊,朱敏.基于規(guī)則引擎的企業(yè)服務(wù)開發(fā)模式[J].計算機技術(shù)與發(fā)展,2008,(18).
[6]馮梅,王宏安,金宏,劉海龍,戴國忠.基于Rete算法的多Agent的實時協(xié)同推理[J].計算機科學(xué),2003,(30).
作者簡介:梅勝全(1970-),男,四川南部人,成都理工大學(xué)信息工程學(xué)院博士生,研究方向:地球探測及石油物探數(shù)據(jù)處理、靜校正與地震反演、計算機軟件與應(yīng)用。