基于業(yè)務(wù)規(guī)則的工作流任務(wù)分派設(shè)計與實現(xiàn)_第1頁
基于業(yè)務(wù)規(guī)則的工作流任務(wù)分派設(shè)計與實現(xiàn)_第2頁
基于業(yè)務(wù)規(guī)則的工作流任務(wù)分派設(shè)計與實現(xiàn)_第3頁
基于業(yè)務(wù)規(guī)則的工作流任務(wù)分派設(shè)計與實現(xiàn)_第4頁
基于業(yè)務(wù)規(guī)則的工作流任務(wù)分派設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第29卷第21期Vol.29No.21計算機工程與設(shè)計ComputerEngineeringandDesign2008年11月Nov.2008基于業(yè)務(wù)規(guī)則的工作流任務(wù)分派設(shè)計與實現(xiàn)李春芳1,譚慶平2,徐建軍2,肖曉麗1(1.長沙理工大學(xué)計算機與通信工程學(xué)院,湖南長沙410007;2.國防科學(xué)技術(shù)大學(xué)計算機學(xué)院,湖南長沙410076)摘要:任務(wù)分派反映了企業(yè)的人力資源管理與利用水平,是工作流系統(tǒng)的重要內(nèi)容。任務(wù)分派實現(xiàn)是否有效,直接影響了企業(yè)的經(jīng)濟(jì)效益與發(fā)展。在分析以往工作流任務(wù)分派定義靈活性與擴展性不足的基礎(chǔ)上引入業(yè)務(wù)規(guī)則,以提高任務(wù)分派邏輯定義的效率和質(zhì)量。本工作流任務(wù)分派系統(tǒng)充分利用了現(xiàn)有

2、規(guī)則引擎Drools,并在此基礎(chǔ)上進(jìn)行了面向業(yè)務(wù)層面的改進(jìn)與擴展,以提高系統(tǒng)開發(fā)效率。為基于業(yè)務(wù)規(guī)則的工作流系統(tǒng)開發(fā)打下堅實的理論與實踐基礎(chǔ)。關(guān)鍵詞:任務(wù)分派;工作流系統(tǒng);業(yè)務(wù)規(guī)則;面向業(yè)務(wù);規(guī)則引擎;Drools中圖法分類號:TP31文獻(xiàn)標(biāo)識碼:A文章編號:1000-7024(2008)21-5572-04Designandrealizationofrule-basedworkflowtaskassignmentsystemLIChun-fang1,TANQing-ping2,XUJian-jun2,XIAOXiao-li1(1.CollegeofComputerandCommunicati

3、onEngineering,ChangshaUniversityofScienceandTechnology,Changsha410007,China;2.CollegeofComputer,NationalUniversityofDefenseTechnology,Changsha410076,China)Abstract:Thetaskassignmentsreflectthemanagementandusingleveloftheenterprises.Itisoneofthemostimportanttaskoftheworkflowmanagementsystem.Whetherth

4、erealizationiseffectivewillaffecttheenterpriseseconomicbenefitanddevelopmentdirectly.Withanalysingthelackofflexibilityandexpansibilityofthepastrealizationofthetaskassignments,thisthesisimportsbusinessrulestoimprovethetaskassignmentlogicsefficiencyandquality.BasedonthemostpopularruleengineDrools,ther

5、ealizationmakessomeimprovingandexpandingonthebusinessorientedtoimprovethedevelopingefficiency.Thisthesismakesasolidtheoreticalandpracticalbaseforthebusinessrule-basedworkflowsystem.Keywords:taskassignment;workflowmanagementsystem;businessrule;businessoriented;ruleengine;drools入和發(fā)展,人們開始越來越關(guān)注任務(wù)分派的內(nèi)容,以

6、進(jìn)一步提高企業(yè)業(yè)務(wù)處理效率和質(zhì)量。然而,工作流任務(wù)分派的內(nèi)容是復(fù)雜多變的2,需要合理的機制來定義與實現(xiàn)它。0引言工作流1的概念起源于生產(chǎn)組織與辦公自動化領(lǐng)域。通過對企業(yè)實際經(jīng)營過程中具有一定工作順許的多個跨人員或部門活動以及活動之間轉(zhuǎn)換規(guī)律的合理定義與執(zhí)行,來監(jiān)督與控制企業(yè)的整個業(yè)務(wù)流程處理效率以及質(zhì)量。通過及時的業(yè)務(wù)流程改進(jìn)以及人員調(diào)整來提高企業(yè)的經(jīng)濟(jì)效益以及社會價值。隨著計算機網(wǎng)絡(luò)與分布式處理技術(shù)的日趨成熟,以及人們對于企業(yè)業(yè)務(wù)流程管理的日益關(guān)注,工作流系統(tǒng)得到了前所未有的發(fā)展與應(yīng)用。任務(wù)實際上就是工作流系統(tǒng)中最小的資源分配以及調(diào)度單元。作為工作流系統(tǒng)的核心處理單元,工作流引擎不僅要根據(jù)實

7、際的業(yè)務(wù)流程運行情況以及預(yù)定制得業(yè)務(wù)流程內(nèi)容來確定下一個將要執(zhí)行的任務(wù)內(nèi)容,還要為相應(yīng)任務(wù)分配合適的員工來執(zhí)行。過去人們對于工作流系統(tǒng)的研究主要集中于對任務(wù)的快速調(diào)度方面。隨著對工作流技術(shù)研究與應(yīng)用的深1以往多種工作流任務(wù)分派實現(xiàn)方式工作流任務(wù)分派的內(nèi)容是復(fù)雜多樣的。它既需要與企業(yè)中實際的員工組織結(jié)構(gòu)密切相關(guān),又需要根據(jù)實際業(yè)務(wù)流程中業(yè)務(wù)處理結(jié)果來決定不同的分派方案,還需要根據(jù)業(yè)務(wù)流程執(zhí)行過程中企業(yè)員工的工作負(fù)載或情緒等進(jìn)行分派;而且,工作流任務(wù)分派的內(nèi)容在不斷發(fā)展變化著。這都使得合理的工作流任務(wù)分派實現(xiàn)方式對于整個工作流系統(tǒng)都非常重要。通過對大量現(xiàn)有工作流系統(tǒng)中任務(wù)分派實現(xiàn)方式的研究與總結(jié),

8、發(fā)現(xiàn)目前工作流系統(tǒng)中任務(wù)分派的實現(xiàn)方法主要有以下幾種:(1)基于硬編碼方式:這種方式往往采取直接程序編碼的方式來定義任務(wù)分派邏輯;它的優(yōu)點在于執(zhí)行效率高、對復(fù)雜規(guī)則的描述能力強,而缺點在于相應(yīng)任務(wù)分派邏輯被完全“固收稿日期:2007-11-08E-mail:lisaling2001作者簡介:李春芳(1975),女,湖南祁陽人,碩士,講師,研究方向為編程技術(shù)、軟件工程、工作流;譚慶平(1965),男,湖南衡陽人,博士,教授,博士生導(dǎo)師,研究方向為軟件工程、工作流;徐建軍(1980),男,安徽休寧人,博士,研究方向為工作流;肖曉麗(1965),女,湖南長沙人,碩士,副教授,研究方向為數(shù)據(jù)庫編程技術(shù)

9、。5572化”實現(xiàn),不具備對邏輯變化的適應(yīng)能力,業(yè)務(wù)人員也很難直接驗證相應(yīng)業(yè)務(wù)邏輯的實現(xiàn)。(2)基于插件的方式:任務(wù)分派邏輯的內(nèi)容復(fù)雜多變,具有極大的不確定性,因此一些工作流系統(tǒng)的任務(wù)分派模塊中往往僅提供一些簡單的任務(wù)分派邏輯實現(xiàn),而向開發(fā)者提供一組可供二次開發(fā)的接口,以支持特定企業(yè)復(fù)雜的任務(wù)分派邏輯實現(xiàn)。二次開發(fā)人員可以在工作流系統(tǒng)提供的插件(Plu-gin)中編寫具體的任務(wù)分派處理程序來實現(xiàn)這些接口,以擴展相應(yīng)系統(tǒng)的任務(wù)分派能力。JBoss的jBPM3就是其中一個典型代表。這種任務(wù)分派實現(xiàn)方法對復(fù)雜規(guī)則具有很強的描述能力,描述形式靈活多樣,并且很容易得到擴充;缺點是不容易被制定任務(wù)分派策略

10、的業(yè)務(wù)人員所理解,更無法讓業(yè)務(wù)人員直接創(chuàng)建與修改。(3)基于圖形界面的方式:由于只有業(yè)務(wù)人員才真正理解業(yè)務(wù)實際需求,因此目前很多工作流產(chǎn)品都直接向業(yè)務(wù)人員提供了界面友好的圖形化任務(wù)分派策略定義工具,以支持業(yè)務(wù)人員對任務(wù)分派策略的直接定義與維護(hù)。這種方式的優(yōu)點在于系統(tǒng)能夠直接反映現(xiàn)實任務(wù)分派需求,并快速適應(yīng)任務(wù)分派需求的變化;缺點是它的描述能力由操作界面中定義的項目決定,因此非常有限;一旦任務(wù)分派策略結(jié)構(gòu)發(fā)生變化,則操作界面及后臺代碼都必須進(jìn)行相應(yīng)的修改。(4)基于腳本語言的方式:開發(fā)者將特定任務(wù)分派實現(xiàn)以方法或函數(shù)的形式封裝起來,并使用基于自定義的某種比較容易讀懂的語句結(jié)構(gòu)形式來實現(xiàn)對這些函數(shù)

11、或方法的調(diào)用以完成相應(yīng)任務(wù)分派的實現(xiàn)。該方法使得業(yè)務(wù)人員與開發(fā)人員很容易就任務(wù)分派策略內(nèi)容達(dá)成一致,并且具有很好的靈活性以及可擴充性。缺點是由于腳本語言表達(dá)能力的限制,因此該方式對于任務(wù)分派策略的表達(dá)能力也比較有限;它不支持鏈?zhǔn)椒峙刹呗缘亩x;另外,該方式仍然不能直接為業(yè)務(wù)人員所用。實際業(yè)務(wù)處理中,任務(wù)分派邏輯需要能夠被業(yè)務(wù)人員直接定義,以直接客觀地反映實際企業(yè)工作流任務(wù)分派需求。另外,工作流任務(wù)分派內(nèi)容結(jié)構(gòu)也需要被業(yè)務(wù)人員與相關(guān)人員定義與維護(hù),以適應(yīng)變化的工作流任務(wù)分派需要。以上多種工作流任務(wù)分派方式在滿足這些企業(yè)工作流任務(wù)分派需求時都有這樣與那樣的不足。通過業(yè)務(wù)規(guī)則方法的引入,可以很好地解

12、決這個問題。組成原理圖如圖1所示。用戶工作站應(yīng)用服務(wù)器事實對象及驅(qū)動命令規(guī)則引擎規(guī)則業(yè)務(wù)人員規(guī)則定義工具請求規(guī)則庫圖1規(guī)則系統(tǒng)組成原理業(yè)務(wù)人員通過規(guī)則定義工具定義適于企業(yè)業(yè)務(wù)流程處理的核心業(yè)務(wù)邏輯,因此規(guī)則系統(tǒng)需要向業(yè)務(wù)人員提供方便操作與維護(hù)的業(yè)務(wù)規(guī)則模板,定義相應(yīng)業(yè)務(wù)規(guī)則基本語句框架以及語義內(nèi)容,以便業(yè)務(wù)人員能夠定義出可被計算機直接識別與處理的業(yè)務(wù)規(guī)則內(nèi)容。規(guī)則系統(tǒng)需要存儲業(yè)務(wù)人員定義的業(yè)務(wù)規(guī)則內(nèi)容。由于業(yè)務(wù)人員定義的業(yè)務(wù)規(guī)則通常包含了很多自然描述方法與內(nèi)容,因此系統(tǒng)需要將其轉(zhuǎn)換為可被計算機直接處理與執(zhí)行的規(guī)則形式。因此,通常規(guī)則系統(tǒng)中包含兩種業(yè)務(wù)規(guī)則描述形式,一種是面向業(yè)務(wù)人員的,一種是面

13、向計算機處理底層的;規(guī)則引擎可以直接識別與處理后者。兩種規(guī)則描述形式都存儲于系統(tǒng)規(guī)則庫中。規(guī)則引擎需要獲取應(yīng)用程序的指令,才能開始相應(yīng)的業(yè)務(wù)規(guī)則篩選與執(zhí)行,并將處理結(jié)果返回給相應(yīng)應(yīng)用程序。因此規(guī)則系統(tǒng)實際上就是將企業(yè)復(fù)雜的大量邏輯定義與執(zhí)行內(nèi)容從原來的應(yīng)用程序中分離出來,以提高相應(yīng)業(yè)務(wù)邏輯的定義與處理質(zhì)量;通過規(guī)則引擎與應(yīng)用處理核心單元的并行工作,可以提高整個系統(tǒng)的業(yè)務(wù)處理效率。實際的工作流任務(wù)分派中包含了大量可最終用ifthen形式描述的業(yè)務(wù)邏輯內(nèi)容。如任務(wù)分派邏輯“將任務(wù)A分派給具有角色B的員工對象”可被解釋為“當(dāng)任務(wù)A實例在進(jìn)行分派時,如果特定員工對象的角色信息為B,那么他可以成為任務(wù)A

14、的執(zhí)行候選人”;如“當(dāng)業(yè)務(wù)對象A滿足條件B時,則將任務(wù)C分派給職位為D的員工對象,否則將任務(wù)C分派給職位為E的員工對象”可以更容易地被轉(zhuǎn)化為業(yè)務(wù)規(guī)則描述形式“如果業(yè)務(wù)對象A滿足條件B,那么職位為D的員工對象可以成為任務(wù)C的執(zhí)行候選人,否則職位為E的員工對象將成為任務(wù)C的執(zhí)行候選人”。另外,如“任務(wù)A的執(zhí)行者與任務(wù)B的執(zhí)行者不同”可以被轉(zhuǎn)化描述為“如果任務(wù)A的執(zhí)行候選者中包含了任務(wù)B的執(zhí)行者對象,則將其從任務(wù)A的執(zhí)行候選者集合中去除”,等。也就是說,工作流任務(wù)分派中包含了大量需要業(yè)務(wù)人員直接定義與維護(hù)的內(nèi)容;相應(yīng)工作流任務(wù)分派實現(xiàn)對靈活性以及可擴展性的要求更高。基于業(yè)務(wù)規(guī)則的工作流系統(tǒng)通過對規(guī)則

15、模板的高質(zhì)量維護(hù),最終實現(xiàn)了對復(fù)雜多變?nèi)蝿?wù)分派規(guī)則定義與執(zhí)行的支持。2業(yè)務(wù)規(guī)則與規(guī)則系統(tǒng)所謂業(yè)務(wù)規(guī)則4,實際上是面向業(yè)務(wù)人員的企業(yè)核心業(yè)務(wù)邏輯定義與描述方法。業(yè)務(wù)規(guī)則通常反映了業(yè)務(wù)流程處理過程中所必須遵循的行為規(guī)范以及約束內(nèi)容。一條業(yè)務(wù)規(guī)則通常最終可以用IFTHEN的謂詞形式進(jìn)行描述,定義當(dāng)一定業(yè)務(wù)條件滿足情況下需要完成的操作處理內(nèi)容。業(yè)務(wù)規(guī)則也通常反映了企業(yè)業(yè)務(wù)流程處理過程中最容易發(fā)生變化的內(nèi)容。業(yè)務(wù)規(guī)則與業(yè)務(wù)規(guī)則之間沒有明確的處理先后關(guān)系。業(yè)務(wù)規(guī)則的觸發(fā)往往與事件無關(guān),而與業(yè)務(wù)對象的具體狀態(tài)相關(guān)聯(lián),因此特定業(yè)務(wù)規(guī)則的觸發(fā)時間以及觸發(fā)順序是不確定的。因此業(yè)務(wù)規(guī)則需要被單獨定義與維護(hù)。規(guī)則系統(tǒng)

16、就是這樣一種獨立定義、解釋與執(zhí)行業(yè)務(wù)規(guī)則的系統(tǒng)。通常,規(guī)則系統(tǒng)由規(guī)則定義工具、規(guī)則庫以及規(guī)則引擎3大組件組成。規(guī)則系統(tǒng)3基于業(yè)務(wù)規(guī)則的工作流任務(wù)分派系統(tǒng)設(shè)計與實現(xiàn)基于業(yè)務(wù)規(guī)則的工作流任務(wù)分派系統(tǒng)(businessrule-basedworkflowtaskassignmentsystem,BR-TAS)是規(guī)則系統(tǒng)在具體業(yè)務(wù)領(lǐng)域中的一個具體應(yīng)用。它的基本模式與框架需要符合規(guī)則系統(tǒng)的基本組成與工作原理,也就是說基于業(yè)務(wù)規(guī)則的工5573作流任務(wù)分派系統(tǒng)也需要由任務(wù)分派規(guī)則定義工具、任務(wù)分派規(guī)則庫以及任務(wù)分派規(guī)則引擎3大組件組成。從提高領(lǐng)域規(guī)則系統(tǒng)的開發(fā)效率角度出發(fā),我們可以利用現(xiàn)有的通用規(guī)則系統(tǒng),并

17、將其規(guī)則語義延伸到業(yè)務(wù)領(lǐng)域,以滿足實際業(yè)務(wù)領(lǐng)域定義需要。這樣也可以為基于通用規(guī)則系統(tǒng)的工作流系統(tǒng)研究與實現(xiàn)奠定堅實的理論與實踐基礎(chǔ)。Drools5就是目前一款非常通用流行的規(guī)則系統(tǒng),它不僅提供了簡單易讀的面向業(yè)務(wù)人員以及面向底層處理的規(guī)則描述形式,還采用了目前最快的Rete匹配算法來提高規(guī)則匹配效率;而且Drools的研究與發(fā)展仍然在不斷進(jìn)行中,以奠定更堅實的通用規(guī)則系統(tǒng)基礎(chǔ)?;贒rools的工作流任務(wù)分派規(guī)則系統(tǒng)如圖2所示。用戶任務(wù)分派規(guī)則編輯器產(chǎn)生任務(wù)分派規(guī)則解釋利用任務(wù)分派規(guī)則模板利用利用工作流引擎驅(qū)動接口模塊轉(zhuǎn)換Drools規(guī)則庫選取執(zhí)行驅(qū)動Drools引擎組織機構(gòu)信息圖3規(guī)則模板的

18、XMLSchema描述參數(shù)部分:該部分內(nèi)容用規(guī)則模板的parameters屬性標(biāo)識;該部分可包含多個參數(shù)信息(parameter);每個參數(shù)的具體內(nèi)容由名稱(name)、類型(type)、初始值(init-value)以及說明(de-scription)4個基本屬性來定義。規(guī)則模板的參數(shù)部分對應(yīng)了業(yè)務(wù)人員可操作內(nèi)容。外部表示部分:該部分內(nèi)容用規(guī)則模板的lable屬性標(biāo)識,其內(nèi)容為一個字符串,用于說明展示給業(yè)務(wù)人員相應(yīng)規(guī)則模板的方法。相應(yīng)字符串中用“”和“”包含的是參數(shù)名稱信息,以便在規(guī)則模板的實際顯示時提示用戶輸入或選擇。該部分內(nèi)容的BNF范式描述為::=;其中表示自然語言描述,表示參數(shù)名稱。

19、內(nèi)部表示部分:該部分內(nèi)容用規(guī)則模板的value屬性標(biāo)識,定義了該規(guī)則模板的內(nèi)在語義約束,包括參數(shù)內(nèi)容約束以及整個規(guī)則模板的語義約束。該部分內(nèi)容需要能夠直接被Drools規(guī)則引擎識別與處理,因此該部分內(nèi)容的描述采用了Drools的領(lǐng)域規(guī)則語言(domainspecificlanguage,DSL)進(jìn)行描述,說明模板中關(guān)聯(lián)實體對象的約束內(nèi)容以及處理內(nèi)容。關(guān)于DSL的內(nèi)容稍后描述。擴展類部分:該部分內(nèi)容用規(guī)則模板的class屬性標(biāo)識;目前它的內(nèi)容定義為一個Java類的全路徑名。與jBPM自定義擴展任務(wù)分派的實現(xiàn)方式類似,規(guī)則模板也可由用戶自定義的Java類替代模板的內(nèi)部表示內(nèi)容,相應(yīng)類必須實現(xiàn)Tem

20、plateHandler接口,以進(jìn)一步增強規(guī)則模板的表達(dá)能力和可擴展性。由于規(guī)則模板的參數(shù)部分內(nèi)容可以是另外一個規(guī)則模板,因此本系統(tǒng)支持規(guī)則模板的嵌套使用,以支持復(fù)雜的任務(wù)分派規(guī)則定義。如業(yè)務(wù)人員可選擇IfThenElse規(guī)則模板,其中Then部分以及Else部分還可以繼續(xù)引入該模板;等等。任務(wù)分派規(guī)則編譯器圖2基于Drools的BR-TAS系統(tǒng)體系結(jié)構(gòu)基于Drools的BR-TAS系統(tǒng)主要由任務(wù)分派規(guī)則編輯器、任務(wù)分派規(guī)則編譯器、Drools引擎、接口模塊4大組件組成;由于Drools引擎是現(xiàn)有的,因此基于Drools的BR-TAS系統(tǒng)的設(shè)計與實現(xiàn)重心轉(zhuǎn)移到面向業(yè)務(wù)的任務(wù)分派規(guī)則到通用業(yè)務(wù)規(guī)

21、則(Drool業(yè)務(wù)規(guī)則)之間的轉(zhuǎn)換上來。本文將著重闡述任務(wù)分派規(guī)則編輯器、任務(wù)分派規(guī)則編譯器以及接口模塊3大部分。3.1任務(wù)分派規(guī)則編輯器任務(wù)分派規(guī)則編輯器需要向業(yè)務(wù)人員提供豐富多樣的任務(wù)分派規(guī)則模板,以便業(yè)務(wù)人員可以根據(jù)企業(yè)實際需要正確定義與維護(hù)任務(wù)分派規(guī)則內(nèi)容。因此,任務(wù)分派規(guī)則編輯器的實現(xiàn)重心在于任務(wù)分派規(guī)則模板以及任務(wù)分派規(guī)則的合理定義以及存儲。3.1.1任務(wù)分派規(guī)則模板任務(wù)分派規(guī)則模板是開發(fā)者在對工作流任務(wù)分派結(jié)構(gòu)與內(nèi)容的大量分析與研究基礎(chǔ)上定義的,它是業(yè)務(wù)人員與系統(tǒng)之間針對具體任務(wù)分派規(guī)則達(dá)成一致的關(guān)鍵。因此,任務(wù)分派規(guī)則模板需要包含外部形式與內(nèi)部形式兩種,其中外部形式定義了面向業(yè)

22、務(wù)人員展示與操作的內(nèi)容,而內(nèi)部形式定義了相應(yīng)模板語義解釋的內(nèi)容。不管是規(guī)則模板的外部形式,還是內(nèi)部形式,都需要包含一些可被業(yè)務(wù)人員定義與維護(hù)的內(nèi)容,我們通常稱之為參數(shù)。由于XML的表達(dá)規(guī)范性、易讀性以及可操作性強的特點,BR-TAS的規(guī)則模板以及規(guī)則都采用了XML形式進(jìn)行定義。規(guī)則模板的XMLScheme描述如圖3所示。規(guī)則模板除了具備name、type、version等基本屬性外,還由以下4個關(guān)鍵部分組成:3.1.2DSL語言DSL是Drools面向底層的規(guī)則描述語言。開發(fā)者可以使用它描述任何領(lǐng)域的業(yè)務(wù)規(guī)則內(nèi)容。然而它是需要專業(yè)人員理解與應(yīng)用的,因此需要由開發(fā)者將面向業(yè)務(wù)的規(guī)則內(nèi)容轉(zhuǎn)換為面向

23、底層的規(guī)則描述形式。DSL語法體系由Package、Import、Expander、Global、Func-tion、Query、Rule這7大部分組成。而最關(guān)鍵的Drool規(guī)則體Rule部分由規(guī)則基本屬性、LHS(lefthandside,條件部分)和RHS(righthandside,結(jié)論部分)3部分組成。Droold的規(guī)則條件5574部分以及結(jié)論部分分別用關(guān)鍵字“when”和“then”包含,并以關(guān)鍵字“end”表示規(guī)則描述的結(jié)束。規(guī)則屬性的內(nèi)容有no-loop、salience、agenda-group、auto-focus、activation-group、duration等,這里不

24、詳細(xì)說明。Drools定義的LHS部分由多個模式(Pattern)構(gòu)成,而每個模式的最基本組成單位是Column。Column的作用是對工作內(nèi)存中的事實對象進(jìn)行限制(constraint,類似于過濾)。實現(xiàn)方法是把事實對象作為一個JavaBean對象處理,在Column中出現(xiàn)的事實對象屬性(field)會被轉(zhuǎn)化為相應(yīng)事實對象的對應(yīng)方)”法,如系統(tǒng)在處理Column“Department(name=computer時,會調(diào)用工作內(nèi)存中的Department事實對象的getName以及Equal方法進(jìn)行Department事實對象name屬性內(nèi)容與常量”computer”的比較通過在一個或多個Co

25、lumn的基礎(chǔ)上使用CE(ConditionalElement,條件元素)可以定義更佳復(fù)雜的規(guī)則條件??梢詫⒚總€column結(jié)果進(jìn)行事實綁定(factBinding)內(nèi)容,以便將該結(jié)果映射到一個變量中,這樣相應(yīng)變量可以在規(guī)則的其它條件以及結(jié)論部分被使用。目前支持的CE包括and、or、eval、not、exists、group等。RHS是規(guī)則的結(jié)論部分(Consequence),該部分的內(nèi)容是相應(yīng)規(guī)則條件滿足時必須執(zhí)行的內(nèi)容。RHS部分不應(yīng)包含條件判斷的內(nèi)容,否則需要將這些內(nèi)容轉(zhuǎn)化到條件部分。RHS的主要工作內(nèi)容為向工作內(nèi)存中斷言、收回和修改事實,甚至可以通過調(diào)用特定對象的特定方法來完成特定的

26、功能處理內(nèi)容。RHS部分的關(guān)鍵字包括“l(fā)og”、“assert”、“retract”和“modify”等,并且LHS中被綁定的變量也可以在這里出現(xiàn)。condition:表示任務(wù)分派邏輯的條件部分,它主要由frag-ment元素構(gòu)成。fragment定義了該規(guī)則所使用的規(guī)則模板(tem-plate)以及用戶填入的參數(shù)(parameter)內(nèi)容。parameter的名稱(name)屬性與該規(guī)則所使用模板的特定參數(shù)對應(yīng)。then:表示分派策略條件成立時執(zhí)行的分派動作,由as-sign-to具體表示。assign-to主要內(nèi)容也是fragment構(gòu)成,表示滿足特定條件的分派目標(biāo)實體內(nèi)容,如員工、角色信

27、息等。該部分內(nèi)容還可以嵌套其它的任務(wù)分派策略內(nèi)容。else:表示分派策略條件不成立時執(zhí)行的分派動作,其它內(nèi)容與then部分一致。3.2任務(wù)分派規(guī)則編譯器由上可知,任務(wù)分派規(guī)則模板是定義任務(wù)分派規(guī)則的基礎(chǔ)。一條任務(wù)分派規(guī)則的定義往往需要一個或多個任務(wù)分派規(guī)則模板的使用。雖然任務(wù)分派規(guī)則模板的內(nèi)部描述形式采用了DSL規(guī)范語法,但是面向業(yè)務(wù)人員的任務(wù)分派規(guī)則外觀結(jié)構(gòu)上仍然包含著大量不符合DSL規(guī)范的內(nèi)容(如IfThenElse的嵌套,存在Else部分);而這些部分可以被自動進(jìn)行轉(zhuǎn)化。這就是任務(wù)分派規(guī)則編譯器的主要工作內(nèi)容。針對上述兩個問題可以通過調(diào)整規(guī)則邏輯結(jié)構(gòu),將一條業(yè)務(wù)規(guī)則分解為多條底層業(yè)務(wù)規(guī)則

28、來解決。除此之外,系統(tǒng)存儲的業(yè)務(wù)人員定義的任務(wù)分派規(guī)則條件部分(condition)和結(jié)論部分(con-sequence,包括從屬于then和else部分的)都只保留了用戶輸入的數(shù)據(jù),這就需要調(diào)出相應(yīng)規(guī)則模板的結(jié)構(gòu)定義,將用戶輸入的數(shù)據(jù)替換相應(yīng)的參數(shù)內(nèi)容,以便產(chǎn)生相應(yīng)的語句描述存儲起來。3.1.3任務(wù)分派規(guī)則由于任務(wù)分派規(guī)則是面向業(yè)務(wù)人員的內(nèi)容,因此它包含3.3接口模塊接口模塊實際上是工作流任務(wù)分派規(guī)則系統(tǒng)的補充組了許多DSL不包含的內(nèi)容。如DSL語言規(guī)則體中不包括ELSE部分,并且IF-THEN部分也不存在嵌套關(guān)系,而業(yè)務(wù)人員定義的任務(wù)分派規(guī)則允許IFThenElse模板的嵌套使用以及Els

29、e部分的存在,等。這里所說的任務(wù)分派規(guī)則是面向業(yè)務(wù)人員的,需要將其轉(zhuǎn)化為DSL規(guī)范形式,以順利地被Drools引擎識別與處理。任務(wù)分派規(guī)則的XMLSchema描述如圖4所示。件。通過它可以實現(xiàn)工作流引擎與Drools引擎之間的信息緩沖,支持工作流引擎與Drools引擎間的并行工作,從而提高整個工作流系統(tǒng)的業(yè)務(wù)處理效率。工作流引擎將任務(wù)分派請求以及關(guān)鍵事實對象信息(如業(yè)務(wù)流程實例信息、任務(wù)實例信息等)通過接口模塊傳遞給Drools規(guī)則引擎;Drools規(guī)則引擎根據(jù)相應(yīng)事實對象信息,從規(guī)則庫中通過匹配找出可以執(zhí)行的任務(wù)分派規(guī)則執(zhí)行,并將執(zhí)行結(jié)果(一個員工集合類型對象)通過接口模塊傳遞給工作流引擎。

30、由于Drools引擎是現(xiàn)有的應(yīng)用程序,它的封裝性很好;然而,由于任務(wù)分派的實際需要,需要定義一些具體的任務(wù)分派實現(xiàn)類和方法;該部分類以及方法可以被Drools執(zhí)行相應(yīng)任務(wù)分派規(guī)則時調(diào)用,可以被放置在接口模塊中。由此,接口模塊一方面向工作流引擎提供訪問Drools引擎的接口,如啟動(startRuleEngine()或停止規(guī)則引擎(stopTaskAssignRuleEngine)等,并將工作流引擎所需要的服務(wù)轉(zhuǎn)換為對Drools規(guī)則引擎中WorkingMemory、Agenda類的操作;另一方面,需要提供類似assignByEmployee()、assignByRole()、assignByP

31、osition()的具體任務(wù)分派策略實現(xiàn),以供Drools匹配和執(zhí)行時使用。因此接口模塊也是BR-TAS非常重要的一個功能模塊。圖4任務(wù)分派規(guī)則的XMLSchema描述任務(wù)分派規(guī)則(rule)的name屬性表示規(guī)則的名稱,version屬性表示規(guī)則的版本,processid屬性代表所分派任務(wù)所屬業(yè)務(wù)流程標(biāo)識,taskid代表所分派的任務(wù)標(biāo)識;除此之外,包含多個任務(wù)分派策略(assign-policy)構(gòu)成,多個任務(wù)分派策略可以同時并列存在。其中每個任務(wù)分派策略又由3部分組成:4結(jié)束語基于業(yè)務(wù)規(guī)則的任務(wù)分派系統(tǒng),通過向業(yè)務(wù)人員提供靈(下轉(zhuǎn)第5579頁)5575送表單內(nèi)容9。當(dāng)用戶在客戶端按下FO

32、RM上的SUBMIT按鈕,瀏覽器(Browser)將客戶端輸入的參數(shù)傳回服務(wù)器,服務(wù)器啟動指定的程序并將封裝的參數(shù)傳入,后臺程序依照傳入的參數(shù)完成指定的工作。如果此時有需要傳回結(jié)果的話,則程序會把結(jié)果傳回給服務(wù)器并發(fā)送到瀏覽器。CGI程序可以用任何程序設(shè)計語言編寫,如Shell腳本語言、Perl、Fortran、Pascal、C語言等。但是用C語言編寫的CGI程序具有執(zhí)行速度快、安全性高(因為C語言程序是編譯執(zhí)行且不可被修改)等特點10。本系統(tǒng)中的CGI程序全部由C語言實現(xiàn)。進(jìn)行視頻監(jiān)控時,在瀏覽器中輸入IP地址,進(jìn)入登錄界面。用戶通過正確輸入賬號和密碼,進(jìn)入視頻監(jiān)控界面。登錄界面如圖5所示。

33、圖6視頻監(jiān)控界面完全可以應(yīng)用于遠(yuǎn)程視頻監(jiān)控。相對于其它監(jiān)控系統(tǒng),本系統(tǒng)在保證視頻傳輸實時性的同時提高了視頻的質(zhì)量,由于本系統(tǒng)采用獨特的存儲方案,在保證重要視頻信息不丟失的前提下還節(jié)約了存儲介質(zhì)。參考文獻(xiàn):123圖5登錄界面456789漆世錢,郭麥成.基于嵌入式Linux視頻的網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計J.電子技術(shù)應(yīng)用,2006,32(4):74-76.謝長勇,陳念年,李波.基于MPEG4網(wǎng)絡(luò)實時視頻傳輸系統(tǒng)的設(shè)計J.攀枝花學(xué)院學(xué)報,2005,22(4):89-91.孫江波.基于嵌入式Linux的視頻監(jiān)控系統(tǒng)設(shè)計J.武漢工業(yè)學(xué)院學(xué)報,2006,25(3):31-36.田澤.ARM9嵌入式開發(fā)實驗與實踐M.北京:北京航空航天大學(xué)出版社,2006:381-402.v0_119990430,Video4LinuxkernelAPIreferenceS.AlanCox.video4linuxprogrammingEB/OL.孫輝,陸松年,楊樹堂.基于Linux和S3c2410的嵌入式WebSer-ver的研究與實現(xiàn)J.計算機應(yīng)用與軟件,2007,24(2):134-136.LarryDoolittle,JonNelson.BoaWeb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論