規(guī)則引擎根本上其實(shí)是為了增加軟件的可維護(hù)性。為軟件提供可供用戶直接修改業(yè)務(wù)邏輯的功能。也就是說(shuō)用戶的需求改了,最好不要軟件公司參與,用戶就可以直接修改。這樣軟件項(xiàng)目不會(huì)因?yàn)榫S護(hù)成本太高,而最后虧本。
一般我們考慮將可變的邏輯部分,單獨(dú)分離出來(lái),用規(guī)則引擎來(lái)加以實(shí)現(xiàn),這樣可以有效地解決用戶邏輯的變更問(wèn)題。
這些問(wèn)題說(shuō)說(shuō)容易,其實(shí)真正要做到這點(diǎn)還是很難的。就比如說(shuō)可以滿足用戶需求的不斷變化,用戶需求的變化有時(shí)不光只是體現(xiàn)在邏輯方面,有些時(shí)候還涉及到操作界面和數(shù)據(jù)結(jié)構(gòu)。特別是作為軟件公司不能分析出來(lái)那些可變的規(guī)則,僅僅提供一個(gè)規(guī)則引擎的實(shí)現(xiàn)不能很好的解決用戶需求的變更問(wèn)題。
因此我們希望有一種產(chǎn)品,不光可以解決業(yè)務(wù)處理邏輯的改變,而且需要解決數(shù)據(jù)以及界面的變動(dòng)問(wèn)題。
VisualRules從一開(kāi)始設(shè)計(jì)時(shí)就考慮到這些問(wèn)題,因此VisualRules不光是一個(gè)規(guī)則引擎的實(shí)現(xiàn),而且還提供了數(shù)據(jù)以及界面的快速實(shí)現(xiàn)問(wèn)題。
-*-----------------------------------------------------------------------------------------------------*----------------------------、
復(fù)雜的事情 總會(huì)是非常復(fù)雜的。
以Jboss的 drools來(lái)說(shuō)吧。
它讓你規(guī)則條理化,當(dāng)然如果你很粗魯?shù)膶懸恍┮?guī)則,你沒(méi)有很規(guī)劃的去寫規(guī)則,會(huì)發(fā)現(xiàn)你的drools文件會(huì)更加讓人難以閱讀。規(guī)則引擎其實(shí)也只是做了if else之類的東西,只不過(guò)它給大家更加直觀的規(guī)則管理方式.
就說(shuō)我們目前使用drools的背景吧:
網(wǎng)站上面大約有將近20種事件,每種事件都會(huì)有一堆的規(guī)則。而且規(guī)則都非常復(fù)雜,改動(dòng)又比較大。客服可能會(huì)隨時(shí)去修改一種規(guī)則的風(fēng)險(xiǎn)數(shù)值。那么傳統(tǒng)的代碼模式顯然很難滿足現(xiàn)狀而且這些規(guī)則的邏輯也很難理清楚。
基于上面的現(xiàn)狀后來(lái)開(kāi)發(fā)了一套基于Jboss Drools規(guī)則引擎開(kāi)發(fā)框架與風(fēng)險(xiǎn)處理系統(tǒng)。
針對(duì)每條規(guī)則設(shè)置一個(gè)風(fēng)險(xiǎn)值,如果一個(gè)事件匹配到一條規(guī)則其風(fēng)險(xiǎn)值進(jìn)行累加,再根據(jù)最終的風(fēng)險(xiǎn)分?jǐn)?shù)來(lái)決定對(duì)這種事件到底要采取什么措施.
凡是沒(méi)有絕對(duì)。看哪些東西適合我們?nèi)ビ?,采用一些最新的技術(shù)代價(jià)要多少、風(fēng)險(xiǎn)又有多少。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。