I'll be back!

            Focus on BPM, celebrate PegaRULES Process Commander (PRPC)
          posts - 76, comments - 161, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          規(guī)則引擎 (Rule Engine)

          Posted on 2009-05-20 12:37 zolly 閱讀(1514) 評論(0)  編輯  收藏
          規(guī)則引擎出現(xiàn)的目的:
          復(fù)雜企業(yè)級項(xiàng)目的開發(fā)以及其中隨外部條件不斷變化的業(yè)務(wù)規(guī)則(business logic),迫切需要分離商業(yè)決策者的商業(yè)決策邏輯和應(yīng)用開發(fā)者的技術(shù)決策,并把這些商業(yè)決策放在中心數(shù)據(jù)庫或其他統(tǒng)一的地方,讓它們能在運(yùn)行時(shí)(即商務(wù)時(shí)間)可以動態(tài)地管理和修改從而提供軟件系統(tǒng)的柔性和適應(yīng)性。規(guī)則引擎正是應(yīng)用于上述動態(tài)環(huán)境中的一種解決方法。

          規(guī)則引擎出現(xiàn)的相關(guān)背景:
          企業(yè)管理者對企業(yè)級IT系統(tǒng)的開發(fā)有著如下的要求:(1)為提高效率,管理流程必須自動化,即使現(xiàn)代商業(yè)規(guī)則異常復(fù)雜(2)市場要求業(yè)務(wù)規(guī)則經(jīng)常變化,IT系統(tǒng)必須依據(jù)業(yè)務(wù)規(guī)則的變化快速、低成本的更新(3)為了快速、低成本的更新,業(yè)務(wù)人員應(yīng)能直接管理IT系統(tǒng)中的規(guī)則,不需要程序開發(fā)人員參與。
          而項(xiàng)目開發(fā)人員則碰到了以下問題:(1)程序=算法+數(shù)據(jù)結(jié)構(gòu),有些復(fù)雜的商業(yè)規(guī)則很難推導(dǎo)出算法和抽象出數(shù)據(jù)模型(2)軟件工程要求從需求->設(shè)計(jì)->編碼,然而業(yè)務(wù)規(guī)則常常在需求階段可能還沒有明確,在設(shè)計(jì)和編碼后還在變化,業(yè)務(wù)規(guī)則往往嵌在系統(tǒng)各處代碼中(3)對程序員來說,系統(tǒng)已經(jīng)維護(hù)、更新困難,更不可能讓業(yè)務(wù)人員來管理。

          什么是業(yè)務(wù)規(guī)則:
          一個(gè)業(yè)務(wù)規(guī)則包含一組條件和在此條件下執(zhí)行的操作,它們表示業(yè)務(wù)規(guī)則應(yīng)用程序的一段業(yè)務(wù)邏輯。業(yè)務(wù)規(guī)則通常應(yīng)該由業(yè)務(wù)分析人員和策略管理者開發(fā)和修改,但有些復(fù)雜的業(yè)務(wù)規(guī)則也可以由技術(shù)人員使用面向?qū)ο蟮募夹g(shù)語言或腳本來定制。業(yè)務(wù)規(guī)則的理論基礎(chǔ)是:設(shè)置一個(gè)或多個(gè)條件,當(dāng)滿足這些條件時(shí)會觸發(fā)一個(gè)或多個(gè)操作。

          什么是規(guī)則引擎:
          規(guī)則引擎由推理引擎發(fā)展而來,是一種嵌入在應(yīng)用程序中的組件,實(shí)現(xiàn)了將業(yè)務(wù)決策從應(yīng)用程序代碼中分離出來,并使用預(yù)定義的語義模塊編寫業(yè)務(wù)決策。接受數(shù)據(jù)輸入,解釋業(yè)務(wù)規(guī)則,并根據(jù)規(guī)則做出業(yè)務(wù)決策。

          規(guī)則引擎的算法:
          大部分規(guī)則引擎產(chǎn)品的算法,基本上都來自于Dr. Charles Forgy在1979年提出的RETE算法及其變體,Rete算法是目前效率最高的一個(gè)Forward-Chaining推理算法,Drools項(xiàng)目是Rete算法的一個(gè)面向?qū)ο蟮腏ava實(shí)現(xiàn),Rete算法其核心思想是將分離的匹配項(xiàng)根據(jù)內(nèi)容動態(tài)構(gòu)造匹配樹,以達(dá)到顯著降低計(jì)算量的效果。

          Java規(guī)則引擎API(JSR-94)
          Java規(guī)則引擎API由javax.rules包定義,是訪問規(guī)則引擎的標(biāo)準(zhǔn)企業(yè)級API。Java規(guī)則引擎API允許客戶程序使用統(tǒng)一的方式和不同廠商的規(guī)則引擎產(chǎn)品交互,就像使用JDBC編寫?yīng)毩⒂趶S商訪問不同的數(shù)據(jù)庫產(chǎn)品一樣。

          原文請參考:http://www.ibm.com/developerworks/cn/java/j-java-rules/#N10041 (Java規(guī)則引擎與其API(JSR-94))

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 桑植县| 保山市| 乌苏市| 油尖旺区| 华安县| 瑞安市| 威远县| 怀柔区| 宣威市| 黔西| 土默特右旗| 五莲县| 兴海县| 陵水| 余姚市| 祁门县| 龙州县| 汨罗市| 清水县| 华阴市| 望谟县| 驻马店市| 江北区| 连平县| 谷城县| 阜宁县| 类乌齐县| 锦屏县| 颍上县| 尼玛县| 遂平县| 温泉县| 威海市| 湾仔区| 桐庐县| 织金县| 秦安县| 怀安县| 讷河市| 石首市| 佛山市|