欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
CSDN 文檔中心:Java規則引擎工作原理及其應用
Java規則引擎工作原理及其應用
  摘 要 Java規則引擎是一種嵌入在Java程序中的組件,它的任務(wù)是把當前提交給引擎的Java數據對象與加載在引擎中的業(yè)務(wù)規則進(jìn)行測試和比對,激活那些符合當前數據狀態(tài)下的業(yè)務(wù)規則,根據業(yè)務(wù)規則中聲明的執行邏輯,觸發(fā)應用程序中對應的操作。

  引言

  目前,Java社區推動(dòng)并發(fā)展了一種引人注目的新技術(shù)——Java規則引擎(Rule Engine)。利用它就可以在應用系統中分離商業(yè)決策者的商業(yè)決策邏輯和應用開(kāi)發(fā)者的技術(shù)決策,并把這些商業(yè)決策放在中心數據庫或其他統一的地方,讓它們能在運行時(shí)可以動(dòng)態(tài)地管理和修改,從而為企業(yè)保持靈活性和競爭力提供有效的技術(shù)支持。

  規則引擎的原理

  1、基于規則的專(zhuān)家系統(RBES)簡(jiǎn)介

  Java規則引擎起源于基于規則的專(zhuān)家系統,而基于規則的專(zhuān)家系統又是專(zhuān)家系統的其中一個(gè)分支。專(zhuān)家系統屬于人工智能的范疇,它模仿人類(lèi)的推理方式,使用試探性的方法進(jìn)行推理,并使用人類(lèi)能理解的術(shù)語(yǔ)解釋和證明它的推理結論。為了更深入地了解Java規則引擎,下面簡(jiǎn)要地介紹基于規則的專(zhuān)家系統。RBES包括三部分:Rule Base(knowledge base)、Working Memory(fact base)和Inference Engine。它們的結構如下系統所示:


圖1 基于規則的專(zhuān)家系統構成

  如圖1所示,推理引擎包括三部分:模式匹配器(Pattern Matcher)、議程(Agenda)和執行引擎(Execution Engine)。推理引擎通過(guò)決定哪些規則滿(mǎn)足事實(shí)或目標,并授予規則優(yōu)先級,滿(mǎn)足事實(shí)或目標的規則被加入議程。模式匹配器決定選擇執行哪個(gè)規則,何時(shí)執行規則;議程管理模式匹配器挑選出來(lái)的規則的執行次序;執行引擎負責執行規則和其他動(dòng)作。

  和人類(lèi)的思維相對應,推理引擎存在兩者推理方式:演繹法(Forward-Chaining)和歸納法(Backward-Chaining)。演繹法從一個(gè)初始的事實(shí)出發(fā),不斷地應用規則得出結論(或執行指定的動(dòng)作)。而歸納法則是根據假設,不斷地尋找符合假設的事實(shí)。Rete算法是目前效率最高的一個(gè)Forward-Chaining推理算法,許多Java規則引擎都是基于Rete算法來(lái)進(jìn)行推理計算的。

  推理引擎的推理步驟如下:

  (1)將初始數據(fact)輸入Working Memory。

  (2)使用Pattern Matcher比較規則庫(rule base)中的規則(rule)和數據(fact)。

  (3)如果執行規則存在沖突(conflict),即同時(shí)激活了多個(gè)規則,將沖突的規則放入沖突集合。

  (4)解決沖突,將激活的規則按順序放入Agenda。

  (5)使用執行引擎執行Agenda中的規則。重復步驟2至5,直到執行完畢所有Agenda中的規則。

  上述即是規則引擎的原始架構,Java規則引擎就是從這一原始架構演變而來(lái)的。

  2、規則引擎相關(guān)構件

  規則引擎是一種根據規則中包含的指定過(guò)濾條件,判斷其能否匹配運行時(shí)刻的實(shí)時(shí)條件來(lái)執行規則中所規定的動(dòng)作的引擎。與規則引擎相關(guān)的有四個(gè)基本概念,為更好地理解規則引擎的工作原理,下面將對這些概念進(jìn)行逐一介紹。

  1)信息元(Information Unit)

  信息元是規則引擎的基本建筑塊,它是一個(gè)包含了特定事件的所有信息的對象。這些信息包括:消息、產(chǎn)生事件的應用程序標識、事件產(chǎn)生事件、信息元類(lèi)型、相關(guān)規則集、通用方法、通用屬性以及一些系統相關(guān)信息等等。

  2)信息服務(wù)(Information Services)

  信息服務(wù)產(chǎn)生信息元對象。每個(gè)信息服務(wù)產(chǎn)生它自己類(lèi)型相對應的信息元對象。即特定信息服務(wù)根據信息元所產(chǎn)生每個(gè)信息元對象有相同的格式,但可以有不同的屬性和規則集。需要注意的是,在一臺機器上可以運行許多不同的信息服務(wù),還可以運行同一信息服務(wù)的不同實(shí)例。但無(wú)論如何,每個(gè)信息服務(wù)只產(chǎn)生它自己類(lèi)型相對應的信息元。

  3)規則集(Rule Set)

  顧名思義,規則集就是許多規則的集合。每條規則包含一個(gè)條件過(guò)濾器和多個(gè)動(dòng)作。一個(gè)條件過(guò)濾器可以包含多個(gè)過(guò)濾條件。條件過(guò)濾器是多個(gè)布爾表達式的組合,其組合結果仍然是一個(gè)布爾類(lèi)型的。在程序運行時(shí),動(dòng)作將會(huì )在條件過(guò)濾器值為真的情況下執行。除了一般的執行動(dòng)作,還有三類(lèi)比較特別的動(dòng)作,它們分別是:放棄動(dòng)作(Discard Action)、包含動(dòng)作(Include Action)和使信息元對象內容持久化的動(dòng)作。前兩種動(dòng)作類(lèi)型的區別將在2.3規則引擎工作機制小節介紹。

  4)隊列管理器(Queue Manager)

  隊列管理器用來(lái)管理來(lái)自不同信息服務(wù)的信息元對象的隊列。

  下面將研究規則引擎的這些相關(guān)構件是如何協(xié)同工作的。

  如圖2所示,處理過(guò)程分為四個(gè)階段進(jìn)行:信息服務(wù)接受事件并將其轉化為信息元,然后這些信息元被傳給隊列管理器,最后規則引擎接收這些信息元并應用它們自身攜帶的規則加以執行,直到隊列管理器中不再有信息元。


圖2 處理過(guò)程協(xié)作圖

  3、規則引擎的工作機制

  下面專(zhuān)門(mén)研究規則引擎的內部處理過(guò)程。如圖3所示,規則引擎從隊列管理器中依次接收信息元,然后依規則的定義順序檢查信息元所帶規則集中的規則。如圖所示,規則引擎檢查第一個(gè)規則并對其條件過(guò)濾器求值,如果值為假,所有與此規則相關(guān)的動(dòng)作皆被忽略并繼續執行下一條規則。如果第二條規則的過(guò)濾器值為真,所有與此規則相關(guān)的動(dòng)作皆依定義順序執行,執行完畢繼續下一條規則。該信息元中的所有規則執行完畢后,信息元將被銷(xiāo)毀,然后從隊列管理器接收下一個(gè)信息元。在這個(gè)過(guò)程中并未考慮兩個(gè)特殊動(dòng)作:放棄動(dòng)作(Discard Action)和包含動(dòng)作(Include Action)。放棄動(dòng)作如果被執行,將會(huì )跳過(guò)其所在信息元中接下來(lái)的所有規則,并銷(xiāo)毀所在信息元,規則引擎繼續接收隊列管理器中的下一個(gè)信息元。包含動(dòng)作其實(shí)就是動(dòng)作中包含其它現存規則集的動(dòng)作。包含動(dòng)作如果被執行,規則引擎將暫停并進(jìn)入被包含的規則集,執行完畢后,規則引擎還會(huì )返回原來(lái)暫停的地方繼續執行。這一過(guò)程將遞歸進(jìn)行。

                          圖3 規則引擎工作機制

  Java規則引擎的工作機制與上述規則引擎機制十分類(lèi)似,只不過(guò)對上述概念進(jìn)行了重新包裝組合。Java規則引擎對提交給引擎的Java數據對象進(jìn)行檢索,根據這些對象的當前屬性值和它們之間的關(guān)系,從加載到引擎的規則集中發(fā)現符合條件的規則,創(chuàng )建這些規則的執行實(shí)例。這些實(shí)例將在引擎接到執行指令時(shí)、依照某種優(yōu)先序依次執行。一般來(lái)講,Java規則引擎內部由下面幾個(gè)部分構成:工作內存(Working Memory)即工作區,用于存放被引擎引用的數據對象集合;規則執行隊列,用于存放被激活的規則執行實(shí)例;靜態(tài)規則區,用于存放所有被加載的業(yè)務(wù)規則,這些規則將按照某種數據結構組織,當工作區中的數據發(fā)生改變后,引擎需要迅速根據工作區中的對象現狀,調整規則執行隊列中的規則執行實(shí)例。Java規則引擎的結構示意圖如圖4所示。


圖4 Java規則引擎工作機制

  當引擎執行時(shí),會(huì )根據規則執行隊列中的優(yōu)先順序逐條執行規則執行實(shí)例,由于規則的執行部分可能會(huì )改變工作區的數據對象,從而會(huì )使隊列中的某些規則執行實(shí)例因為條件改變而失效,必須從隊列中撤銷(xiāo),也可能會(huì )激活原來(lái)不滿(mǎn)足條件的規則,生成新的規則執行實(shí)例進(jìn)入隊列。于是就產(chǎn)生了一種“動(dòng)態(tài)”的規則執行鏈,形成規則的推理機制。這種規則的“鏈式”反應完全是由工作區中的數據驅動(dòng)的。

  任何一個(gè)規則引擎都需要很好地解決規則的推理機制和規則條件匹配的效率問(wèn)題。規則條件匹配的效率決定了引擎的性能,引擎需要迅速測試工作區中的數據對象,從加載的規則集中發(fā)現符合條件的規則,生成規則執行實(shí)例。1982年美國卡耐基·梅隆大學(xué)的Charles L. Forgy發(fā)明了一種叫Rete算法,很好地解決了這方面的問(wèn)題。目前世界頂尖的商用業(yè)務(wù)規則引擎產(chǎn)品基本上都使用Rete算法。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
詳解Java規則引擎與其API
互用性技術(shù):數據層
深入理解Java虛擬機[原創(chuàng )](一)
常見(jiàn)規則引擎技術(shù)
Java規則引擎的集成
楊立昆重磅論文:通往自主機器智能之路(二)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久