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