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