基于BRMS的“旅游一卡通”計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)
文章出處:http://56733.cn 作者:張燕玲 潘正運(yùn) 王莉 人氣: 發(fā)表時(shí)間:2012年01月23日
隨著科技不斷進(jìn)步和信息化時(shí)代的到來,旅游行業(yè)的管理也在不斷地進(jìn)行信息化的革命。單個(gè)獨(dú)立的應(yīng)用系統(tǒng)已經(jīng)不能滿足旅游系統(tǒng)綜合管理的需求,而對“旅游一卡通”系統(tǒng)的開發(fā)將有效地整合卡應(yīng)用系統(tǒng)的信息資源,使游客在河南旅游時(shí)可以通過簡單的一張卡實(shí)現(xiàn)所有消費(fèi)。但是由于“旅游一卡通”系統(tǒng)涉及到吃、住、行、游、購、娛6大要素,旅游行業(yè)間的競爭也越來越激烈,各個(gè)運(yùn)營商要不斷地推出新的服務(wù),有針對性地向用戶提供各種新的計(jì)費(fèi)規(guī)則,及時(shí)回應(yīng)競爭對手的策略變換。所有這些需求使得“旅游一卡通”系統(tǒng)的業(yè)務(wù)規(guī)則復(fù)雜多變,能否對其實(shí)行有效的管理就極大地依賴于“旅游一卡通”計(jì)費(fèi)系統(tǒng)的有效支持。
在許多傳統(tǒng)的計(jì)費(fèi)系統(tǒng)中,由于業(yè)務(wù)規(guī)則以程序代碼的方式“固化”在系統(tǒng)中,缺乏真正的靈活性,使運(yùn)營商要推出新的服務(wù)或推出新的優(yōu)惠計(jì)劃時(shí),必須通過IT人員編寫代碼的方式來修改規(guī)則,然后經(jīng)過繁復(fù)測試才能部署實(shí)施。這導(dǎo)致業(yè)務(wù)策略的變動(dòng)周期非常的漫長。同時(shí),由于業(yè)務(wù)規(guī)則是面向技術(shù)人員的程序代碼,使業(yè)務(wù)策略無法被業(yè)務(wù)人員真正的掌握和管理。而本文提出的一種基于業(yè)務(wù)規(guī)則管理系統(tǒng)的計(jì)費(fèi)系統(tǒng)可以使業(yè)務(wù)規(guī)則與程序代碼分離,使得對業(yè)務(wù)規(guī)則能夠進(jìn)行有效地管理和靈活的運(yùn)用。
1 業(yè)務(wù)規(guī)則管理系統(tǒng)
1.1 業(yè)務(wù)規(guī)則管理系統(tǒng)概述
業(yè)務(wù)規(guī)則管理技術(shù)是伴隨著面向?qū)ο蠹夹g(shù)、軟件構(gòu)件技術(shù)、人工智能、數(shù)據(jù)庫、XML(數(shù)據(jù)庫的表示)等相關(guān)技術(shù)的發(fā)展而出現(xiàn)的,具有規(guī)則管理、規(guī)則部署、規(guī)則分析、規(guī)則定制和設(shè)計(jì)功能。業(yè)務(wù)規(guī)則管理系統(tǒng)是一組工具集,包括:
(1)規(guī)則引擎(Rules Engine):規(guī)則引擎是執(zhí)行業(yè)務(wù)規(guī)則的軟件組件,它嵌入在程序中,是業(yè)務(wù)規(guī)則管理系統(tǒng)的核心元素。規(guī)則引擎的類型有:簡單型,數(shù)據(jù)中心型和面向事務(wù)型。
(2)規(guī)則庫(Rules Repository):規(guī)則庫用于存儲(chǔ)規(guī)則和規(guī)則元數(shù)據(jù)(Meta Data)以及與規(guī)則有關(guān)的屬性。它提供一組工具用于存儲(chǔ)、分類、查詢、版本控制、權(quán)限控制、測試、提交等,規(guī)則的狀態(tài)和有效性可以跟蹤。
(3)規(guī)則語言框架(Rules Language Framework):規(guī)則語言一般分為兩類:“面向程序技術(shù)”的規(guī)則語言,使用者是技術(shù)人員;“面向業(yè)務(wù)”的規(guī)則語言,使用者是業(yè)務(wù)人員。規(guī)則語言框架是為定制“面向業(yè)務(wù)”的規(guī)則語言提供支持。
(4)規(guī)則集成開發(fā)環(huán)境(Rules IDE):一般規(guī)則集成開發(fā)環(huán)境只有規(guī)則編輯器,而高級(jí)的規(guī)則集成開發(fā)環(huán)境可以實(shí)現(xiàn)對規(guī)則和規(guī)則庫的管理:如規(guī)則的創(chuàng)建、分類、檢索、修改、版本控制、權(quán)限管理。
BRMS的模塊結(jié)構(gòu)如圖1所示。
1.2 BRMS的基本原理
BRMS的基本原理是用一個(gè)或多個(gè)規(guī)則引擎替換“固化”在計(jì)費(fèi)程序不同位置的業(yè)務(wù)規(guī)則(邏輯)的程序代碼。被替換的業(yè)務(wù)規(guī)則(邏輯)存儲(chǔ)在程序之外的規(guī)則庫中;規(guī)則庫中的規(guī)則可以通過圖形化規(guī)則管理工具實(shí)現(xiàn)定制、修改和部署,如圖2所示。
1.3 基于BRMS的系統(tǒng)開發(fā)
基于BRMS的系統(tǒng)開發(fā)可以劃分為3個(gè)階段:
(1)設(shè)計(jì)階段:這個(gè)階段與傳統(tǒng)的系統(tǒng)開發(fā)不同點(diǎn)在于,除了技術(shù)架構(gòu)(包括規(guī)則引擎的位置安排)和基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)之外,最主要是完成業(yè)務(wù)對象模型(BOM)的設(shè)計(jì),為業(yè)務(wù)規(guī)則的開發(fā)提供必要的“詞匯”;定義規(guī)則的組織結(jié)構(gòu);設(shè)計(jì)業(yè)務(wù)規(guī)則的模板。
(2)開發(fā)階段:這個(gè)階段包括業(yè)務(wù)規(guī)則開發(fā)和系統(tǒng)程序的開發(fā)。
(3)部署階段:這個(gè)階段主要是業(yè)務(wù)規(guī)則服務(wù)的部署。業(yè)務(wù)規(guī)則服務(wù)(Rule Service)分布在系統(tǒng)的不同位置上,每個(gè)提供規(guī)則服務(wù)的模塊都嵌入了規(guī)則引擎,不同的規(guī)則服務(wù)可能使用不同的規(guī)則集。在這階段中,部署人員需要通過系統(tǒng)提供的方法或規(guī)則管理工具把不同的規(guī)則集部署到系統(tǒng)的對應(yīng)位置上,使規(guī)則引擎可以訪問到它們需要的規(guī)則集。
2“旅游一卡通”計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)
“旅游一卡通”計(jì)費(fèi)系統(tǒng)是利用BRMS技術(shù)對系統(tǒng)進(jìn)行設(shè)計(jì)的,這樣可以使業(yè)務(wù)規(guī)則在系統(tǒng)外被定制,運(yùn)營商無須開發(fā)人員介入,就可以讓他們的業(yè)務(wù)人員創(chuàng)建和修改規(guī)則。
在旅游計(jì)費(fèi)系統(tǒng)中,業(yè)務(wù)規(guī)則時(shí)刻扮演著非常重要的角色。它能很好地把繁雜的計(jì)費(fèi)規(guī)則,如優(yōu)惠、折扣規(guī)則等提取到系統(tǒng)之外進(jìn)行管理,同時(shí)配合高性能的規(guī)則引擎和友好的規(guī)則用戶界面,使得業(yè)務(wù)人員能夠迅速地根據(jù)市場的變化而改變它們的促銷策略。
2.1 系統(tǒng)總體結(jié)構(gòu)
本系統(tǒng)在ILOG JRules上進(jìn)行總體設(shè)計(jì),選用J2EE為系統(tǒng)開發(fā)部署平臺(tái),如圖3所示。JRules是由ILOG公司開發(fā)的一套業(yè)務(wù)規(guī)則管理系統(tǒng)的通用軟件,它可以為系統(tǒng)的開發(fā)提供圖形化的界面,具有完備的功能;J2EE平臺(tái)為設(shè)計(jì)、開發(fā)和部署業(yè)務(wù)規(guī)則應(yīng)用程序提供了一種基于組件的方法。整個(gè)系統(tǒng)分為前臺(tái)Web客戶端顯示模塊和后臺(tái)處理模塊兩個(gè)部分。Web客戶端有兩種界面:
(1)針對業(yè)務(wù)定制人員的Web Rule Builder編譯器。業(yè)務(wù)人員通過在規(guī)則編輯器中編寫規(guī)則,然后將編輯的內(nèi)容提交到后臺(tái)計(jì)費(fèi)規(guī)則管理模塊中,由計(jì)費(fèi)規(guī)則管理模塊對計(jì)費(fèi)規(guī)則庫進(jìn)行更新;另一方面,計(jì)費(fèi)規(guī)則管理模塊可以通過遠(yuǎn)程調(diào)用接口調(diào)用規(guī)則服務(wù)組件,將更新的規(guī)則直接作用于應(yīng)用程序,以便于前臺(tái)規(guī)則使用人員使用新的規(guī)則對客戶進(jìn)行計(jì)費(fèi)處理。
(2)面向規(guī)則使用人員的Web App Portal。規(guī)則使用人員通過應(yīng)用程序接口于計(jì)費(fèi)規(guī)則會(huì)話Bean進(jìn)行交互,同時(shí)激活規(guī)則服務(wù)組件對規(guī)則庫進(jìn)行操作,取出符合需求的計(jì)費(fèi)規(guī)則返回給應(yīng)用程序接口,前臺(tái)計(jì)費(fèi)業(yè)務(wù)人員根據(jù)相應(yīng)的計(jì)費(fèi)規(guī)則從客戶的“旅游一卡通”IC卡中扣除相應(yīng)的金額。
圖3 BRMS旅游計(jì)費(fèi)系統(tǒng)的總體結(jié)構(gòu)
2.2 系統(tǒng)業(yè)務(wù)對象模型BOM(Business Object Model)的建立
業(yè)務(wù)規(guī)則模型的設(shè)計(jì)是基于規(guī)則系統(tǒng)的非常關(guān)鍵的步驟,它直接關(guān)系到整個(gè)系統(tǒng)是否能夠真正靈活地運(yùn)轉(zhuǎn)起來。業(yè)務(wù)模型是由一組類(Class)構(gòu)成,每個(gè)類包含屬性(Property)和一些方法(Method)。類的屬性、類與類的關(guān)系將會(huì)出現(xiàn)在業(yè)務(wù)規(guī)則的條件部分(Condition),類中的屬性值與導(dǎo)入到引擎中的許多規(guī)則的條件進(jìn)行匹配,如果某些對象(或?qū)ο笾g的關(guān)系)滿足某個(gè)規(guī)則的條件的定義,那么引擎將觸發(fā)規(guī)則的執(zhí)行部分。
2.2.1 業(yè)務(wù)對象的分析
“旅游一卡通”系統(tǒng)是一個(gè)復(fù)雜的消費(fèi)系統(tǒng),它不僅涉及消費(fèi)者,而且整個(gè)旅游行業(yè)的所有企業(yè),包括酒店、餐飲、旅行社、景區(qū)景點(diǎn)等都是組成這個(gè)系統(tǒng)的關(guān)鍵要素。建立完善的旅游計(jì)費(fèi)系統(tǒng)就必須抽象出這些獨(dú)立業(yè)務(wù)對象的共性,建立統(tǒng)一的、具有共同特征的業(yè)務(wù)對象實(shí)體。在本系統(tǒng)的設(shè)計(jì)中,抽象出了以下業(yè)務(wù)對象:
(1)客戶(Customer)對象:這里的Customer對象是特指利用“旅游一卡通”進(jìn)行消費(fèi)的游客,是消費(fèi)的主體。Consume對象在消費(fèi)過程中可以享受相應(yīng)的免費(fèi)資源、折扣和優(yōu)惠措施。在系統(tǒng)中該對象具有一定的類型屬性,根據(jù)不同的企業(yè)所定義的屬性值是不同的。
(2)企業(yè)(Enterprise)對象:Enterprise對象是指組成“旅游一卡通”系統(tǒng)的旅游部門,包括酒店、旅行社、景區(qū)景 點(diǎn)等。
(3)消費(fèi)項(xiàng)目(Consume)對象:由于各個(gè)行業(yè)部門不同所以其中包含的消費(fèi)項(xiàng)目也是大相徑庭的,所以將消費(fèi)項(xiàng)目(Consume)單獨(dú)抽象為一個(gè)業(yè)務(wù)對象,使之與Enterprise對象相關(guān)聯(lián)。
(4)折扣方案(Discount)對象:折扣是計(jì)費(fèi)系統(tǒng)中比較復(fù)雜的一項(xiàng)業(yè)務(wù)規(guī)則,它主要的特點(diǎn)就是經(jīng)常變動(dòng)。對于不同的客戶采取的折扣也是不同的。并且單位采取折扣的時(shí)間是有限制的,所以該對象具有時(shí)效性和有效性。
(5)優(yōu)惠方案(Privilege)對象:優(yōu)惠是計(jì)費(fèi)系統(tǒng)的另一個(gè)重要組成部分,它同樣具有時(shí)效性和有效性。
2.2.2 業(yè)務(wù)對象模型的建立
各個(gè)業(yè)務(wù)對象之間存在著復(fù)雜的關(guān)聯(lián)??蛻暨@個(gè)業(yè)務(wù)對象是整個(gè)系統(tǒng)的消費(fèi)主體,其消費(fèi)行為通過“旅游一卡通”直接與所有系統(tǒng)中的企業(yè)對象實(shí)體相聯(lián)系。客戶在系統(tǒng)中消費(fèi)時(shí)可能和多個(gè)企業(yè)對象相聯(lián)系,所以抽象其業(yè)務(wù)對象屬性CustomerEnterprise[]與消費(fèi)企業(yè)對象進(jìn)行關(guān)聯(lián)。
企業(yè)這個(gè)業(yè)務(wù)對象實(shí)體是整個(gè)計(jì)費(fèi)系統(tǒng)得關(guān)鍵所在。因?yàn)橄到y(tǒng)中的企業(yè)是完全獨(dú)立的個(gè)體,在實(shí)施計(jì)費(fèi)策略時(shí)是大不相同的,而且對于單個(gè)CustomerEnterprise對象內(nèi)部不同消費(fèi)項(xiàng)目的計(jì)費(fèi)策略也不完全相同。每個(gè)CustomerEnterprise包括若干消費(fèi)項(xiàng)目Consume,通過屬性Consume[]與消費(fèi)項(xiàng)目實(shí)體相關(guān)聯(lián);企業(yè)可能對所有的消費(fèi)項(xiàng)目,也可能針對某消費(fèi)項(xiàng)目實(shí)施折扣、優(yōu)惠等方案,所以不單單是企業(yè)而且消費(fèi)項(xiàng)目都與折扣、優(yōu)惠和免費(fèi)對象實(shí)體相關(guān)。它們通過屬性FreeItem[]與免費(fèi)資源對象的關(guān)聯(lián),通過DiscountPlan[]對象屬性與折扣方案對象關(guān)聯(lián),通過PrivilegePlan[]與優(yōu)惠方案對象關(guān)聯(lián)。
根據(jù)以上分析抽象系統(tǒng)的業(yè)務(wù)對象模型如圖4所示(略)。
2.3 規(guī)則引擎的嵌入和使用
業(yè)務(wù)規(guī)則引擎的嵌入和使用步驟??梢园凑障旅娴幕静襟E實(shí)現(xiàn)規(guī)則引擎的嵌入和使用(采用ILOG JRules的API):
(1)創(chuàng)建一個(gè)規(guī)則引擎對象(這是ILOG JRules)提供的對象。
// Create an ILOG rule engine
IlrContext myEngine = new IlrContext();
(2)從規(guī)則庫中取得與計(jì)費(fèi)相關(guān)的規(guī)則包,并加載到規(guī)則引擎中。(注意:這里折扣規(guī)則包存儲(chǔ)在名字是“Discount-rules”的文件中,優(yōu)惠規(guī)則包存儲(chǔ)在“Privilege-rules”如果規(guī)則包保存在數(shù)據(jù) 庫中,需要使用其它的API)
//get the IlrRuleset associated with myContext
IlrRuleset myRuleset=myContext.getRuleset();
//Add rules to myRuleset
myRuleset.parseFileName(“Consume-rules”);
myRuleset.parseFileName(“Discount-rules”);
myRuleset.parseFileName(“Privilege-rules”);
myRuleset.parseFileName(“FreeItem-rules”);
(3)使用引擎的API,向規(guī)則引擎導(dǎo)入客戶對象(Customer),企業(yè)對象(Enterprise),該客戶的消費(fèi)方案(Plan),該客戶的優(yōu)惠方案(Privilege),折扣方案(Discount)和該客戶相關(guān)的有效免費(fèi)資源(FreeItem)。引擎將對導(dǎo)入的所有對象的屬性值與當(dāng)前加載的規(guī)則包中的優(yōu)惠規(guī)則進(jìn)行匹配比對,把匹配的規(guī)則放在一個(gè)規(guī)則執(zhí)行隊(duì)列中。
myEngine.insert(Customer);//提交客戶信息
myEnterprise.insert(Enterprise);//提交企業(yè)信息
for (int ii=0;ii<…; ii++
{ //提交與企業(yè)相關(guān)的消費(fèi)項(xiàng)目信息
myEngine.insert(Consume[ii]);
}
for (int ii=0;ii<…; ii++
{ //提交該客戶相關(guān)的免費(fèi)資源信息
myEngine.insert(freeItem[ii]);
}
for (int ii=0; ii<……; ii++) {//提交該客戶相關(guān)優(yōu)惠方案信息
myEngine.insert(Privilege [ii]);
}
for (int ii=0; ii<……; ii++) {//提交該客戶相關(guān)折扣方案信息
myEngine.insert(Discount[ii]);
}
(4)使用引擎的API,通知引擎執(zhí)行規(guī)則執(zhí)行隊(duì)列中的規(guī)則實(shí)例,即觸發(fā)規(guī)則執(zhí)行部分的方法。在引擎逐個(gè)執(zhí)行規(guī)則的過程中,會(huì)出現(xiàn)這樣一些可能操作:一些對象的屬性值將會(huì)被修改(如免費(fèi)資源的可用量會(huì)減少);有些新的對象被創(chuàng)建,如新的免費(fèi)資源被生成等。引擎會(huì)在每個(gè)規(guī)則被執(zhí)行之后會(huì)自動(dòng)作這樣的檢驗(yàn):當(dāng)前狀態(tài)下,“規(guī)則執(zhí)行隊(duì)列”中等待執(zhí)行的規(guī)則是否還滿足條件,剔除不滿足條件的等待執(zhí)行的規(guī)則;同時(shí)檢查規(guī)則包中原來沒有在“執(zhí)行隊(duì)列”的規(guī)則是否符合當(dāng)前狀態(tài)的規(guī)則,如果有則把它們加入到“執(zhí)行序表(Agenda)”中。引擎最終會(huì)清空“執(zhí)行隊(duì)列”。
// execute the rules on the agenda
myEngine.fireAllRules();
使用引擎的API把引擎中的對象取出并導(dǎo)出(如回存數(shù)據(jù)庫等)
// retrieve updates objects from engine
myEngine.getObjects();
// output code…
…
// empty engines for next time use
myEngine.removeObjects(); //從引擎中撤除所有對象,為下一//個(gè)優(yōu)惠處理作準(zhǔn)備。
3 結(jié)束語
本文對BRMS系統(tǒng)在“旅游一卡通”計(jì)費(fèi)系統(tǒng)中的應(yīng)用與開發(fā)進(jìn)行了研究。本系統(tǒng)的設(shè)計(jì)大大簡化了對“旅游一卡通”計(jì)費(fèi)系統(tǒng)業(yè)務(wù)規(guī)則的開發(fā)與管理,該系統(tǒng)是目前比較符合實(shí)際的較為理想的“旅游一卡通”計(jì)費(fèi)系統(tǒng)。它的應(yīng)用必將極大地提高旅游市場計(jì)費(fèi)業(yè)務(wù)規(guī)則的管理效率,具有廣闊的市場前景。