構(gòu)建電信計(jì)費(fèi)系統(tǒng)、保險(xiǎn)系統(tǒng)、金融等交易系統(tǒng)之所以復(fù)雜,除了對(duì)諸如高性能、高可靠性、高可用性、高安全性、高擴(kuò)展性的要求外,另外至關(guān)重要的原因是這些 領(lǐng)域存在大量的業(yè)務(wù)規(guī)則,這些規(guī)則千差萬(wàn)別,甚至是相互沖突的(瞧瞧電信資費(fèi)就知道有多么復(fù)雜)。在市場(chǎng)驅(qū)動(dòng)的情況下,系統(tǒng)架構(gòu)和模型必須對(duì)客戶、競(jìng)爭(zhēng)對(duì) 手、合作伙伴和整個(gè)市場(chǎng)情況的各種變更及時(shí)響應(yīng),同時(shí)將這些變更產(chǎn)生的需求作為業(yè)務(wù)規(guī)則體現(xiàn)到系統(tǒng)中去。從業(yè)務(wù)的角度看,業(yè)務(wù)規(guī)則是一種原則,包含在特定 活動(dòng)或范圍內(nèi)關(guān)于指導(dǎo)、操作、實(shí)踐或過(guò)程的行為規(guī)范;從信息系統(tǒng)的角度看,業(yè)務(wù)規(guī)則是一個(gè)定義或限制業(yè)務(wù)某些方面的聲明。一個(gè)業(yè)務(wù)規(guī)則包含一組條件和在此 條件下執(zhí)行的操作,它們表示業(yè)務(wù)規(guī)則應(yīng)用程序的一段業(yè)務(wù)邏輯。業(yè)務(wù)規(guī)則通常應(yīng)該由業(yè)務(wù)分析人員和策略管理者開(kāi)發(fā)和修改,但有些復(fù)雜的業(yè)務(wù)規(guī)則也可以由技術(shù) 人員使用面向?qū)ο蟮募夹g(shù)語(yǔ)言或腳本來(lái)定制。業(yè)務(wù)規(guī)則的理論基礎(chǔ)是:設(shè)置一個(gè)或多個(gè)條件,當(dāng)滿足這些條件時(shí)會(huì)觸發(fā)一個(gè)或多個(gè)操作。
1、應(yīng)用場(chǎng)景:
- 電信計(jì)費(fèi)費(fèi)率模型
一次批價(jià):根據(jù)預(yù)處理提供的標(biāo)準(zhǔn)格式話單,結(jié)合費(fèi)率表、號(hào)段表、區(qū)號(hào)表等計(jì)費(fèi)資料對(duì)話單進(jìn)行計(jì)費(fèi)。費(fèi)率表中記錄的信息主要有:基本計(jì)費(fèi)單元、基本通 話費(fèi)率、長(zhǎng)途計(jì)費(fèi)單元、長(zhǎng)途通話費(fèi)率、優(yōu)惠時(shí)段起始時(shí)間、優(yōu)惠時(shí)段終止時(shí)間、優(yōu)惠時(shí)段費(fèi)率等等。號(hào)段表記錄了IMSI號(hào)、MSISDN號(hào)所對(duì)應(yīng)的歸屬地, 以此來(lái)判定用戶的歸屬地,進(jìn)而判定出用戶是否漫游、是否撥打了異地手機(jī)而應(yīng)收取長(zhǎng)途費(fèi)等等。區(qū)號(hào)表記錄了各個(gè)長(zhǎng)途區(qū)號(hào),用以從用戶所撥的對(duì)方號(hào)碼中提取出 長(zhǎng)途區(qū)號(hào)供計(jì)費(fèi)使用。
二次批價(jià):在一次批價(jià)的基礎(chǔ)上,根據(jù)用戶入網(wǎng)所享受的各項(xiàng)優(yōu)惠對(duì)話單進(jìn)行重計(jì)費(fèi),以最終生成向用戶收費(fèi)的話單。用戶所享受的各項(xiàng)優(yōu)惠記錄存在營(yíng)業(yè)系 統(tǒng)的用戶資料中,因此二次批價(jià)必須結(jié)合營(yíng)業(yè)資料進(jìn)行。二次批價(jià)使是一個(gè)耗時(shí)耗資源的過(guò)程,一般在合帳前集中完成,為了提高速度,將二次批價(jià)中需要頻繁用到 的營(yíng)業(yè)資料載入內(nèi)存中。
- 信用卡積分規(guī)則
憑XX信用卡消費(fèi)1元人民幣,即可獲得1分的消費(fèi)積分,在汽車類商戶每消費(fèi)100元人民幣積8分,在房地產(chǎn)類商戶每消費(fèi)100元人民幣積6分。 兌獎(jiǎng)規(guī)則:100分~300分:兌換150元禮品,300分~500分兌換300元禮品,500分以上兌換400元禮品。
2、規(guī)則引擎
規(guī)則引擎的設(shè)計(jì)目的是使得規(guī)則的創(chuàng)建和維護(hù)變得簡(jiǎn)單,方便和代價(jià)低。好的規(guī)則引擎應(yīng)該將業(yè)務(wù)邏輯的定義從一個(gè)系統(tǒng)中分離出來(lái),而不是在代碼中固化。 同時(shí)規(guī)則引擎也將系統(tǒng)開(kāi)發(fā)或者集成過(guò)程中不同角色的工作耦合程度大大降低,使得業(yè)務(wù)邏輯開(kāi)發(fā)人員和具體系統(tǒng)開(kāi)發(fā)等人員的工作可以接近并行的進(jìn)行。在參考文 檔中有業(yè)務(wù)規(guī)則引擎基礎(chǔ)較為詳細(xì)的描述。
3、規(guī)則引擎使用思考
基于drools+MVEL或ognl來(lái)構(gòu)建核心的業(yè)務(wù)規(guī)則處理部分。
需要考慮解決的幾個(gè)問(wèn)題:
- 性能及壓力測(cè)試。對(duì)于像企業(yè)應(yīng)用問(wèn)題還不大,但對(duì)于在線實(shí)時(shí)交易系統(tǒng),盡管可以預(yù)先編譯規(guī)則,但規(guī)則引擎是否會(huì)成為性能瓶頸。
- drools與db的結(jié)合、內(nèi)存數(shù)據(jù)庫(kù)(berkeleydb)的結(jié)合
Loading and managing rules dynamically from a database
- 與mule及SoA框架結(jié)合,用于做對(duì)外接口
- 規(guī)則引擎用于系統(tǒng)部署及內(nèi)容分發(fā)
5、參考資料
http://java-source.net/open-source/rule-engines
http://www.manageability.org/blog/stuff/rule_engines/view
http://www.ibm.com/developerworks/cn/java/j-drools/index.html
http://java.ccidnet.com/art/3737/20060427/531321_1.html
http://www.onjava.com/pub/a/onjava/2005/08/03/drools.html
http://www.infoq.com/articles/Brasilian-Healthcare-System
Technorati 標(biāo)簽:
業(yè)務(wù)規(guī)則引擎
,
rule engine
,
電子商務(wù)
,
drools
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
