freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于p2p全文檢索系統(tǒng)的設計與實現(xiàn)-資料下載頁

2025-06-27 18:37本頁面
  

【正文】 ??紤]如代碼清單 LHS,其含義是:當前匹配的事實(fact)必須是一個 Fish對象,而且其顏色必須為紅色(red) 。如果某個 fact符合此條件,則變量$fish 被綁定到這個fact,即用$fish 變量來表示這個 fact。代碼清單  LHS 示例工程碩士學位論文 第二章 相關(guān)理論基礎(chǔ)15變量名前的$是可選的,但常??梢杂盟鼇韰^(qū)分綁定變量和 fact的屬性,如代碼清單 $fish 和 color,帶$的標識符表示 fact,而不帶$的標識符表示 fact的屬性。對于多個條件的組合,它過濾的是多個 fact的組合。這有點類似于關(guān)系數(shù)據(jù)庫系統(tǒng)中的笛卡爾積。代碼清單  條件組合示例以代碼清單 ,這條規(guī)則試圖對所有北京市的月收入不低于 10000元的客戶發(fā)送廣告 。它的 LHS包含兩個條件,這樣,規(guī)則引擎在匹配這條規(guī)則時將對事實庫中的事實進行“笛卡爾積”式的匹配運算。如果把Customer和 Address分別當成關(guān)系數(shù)據(jù)庫中的一個表,那么上述條件組合就相當于如代碼清單 SQL查詢語句:代碼清單  條件組合示例當然,在實際的應用中,Address 對象和 Customer對象之間通常還存在著某種關(guān)聯(lián)。4) 規(guī)則的結(jié)果部分結(jié)果部分(Right Side Hand簡稱 RHS)又稱操作部分(action) ,它表示當 LHS滿足時,規(guī)則應該執(zhí)行的操作。這一部分代碼通??梢杂?Drools所支持的方言(dialect)來書寫,目前 Drools支持 java和 mvel兩種方言,如有需要,用戶也可以注冊特有的方言來編寫結(jié)果部分。雖然用戶可以按任何合法的方式來編寫 RHS,但在 RHS中使用命令式或條件式代碼是一個壞的習慣,因為規(guī)則引擎設計的初衷就是將條件部分與操作部分進行分離,所有需要判斷的代碼應該都放在 LHS中,RHS 中的代碼應該盡量簡單。如果代碼編寫者發(fā)現(xiàn)在 RHS中需要使用 if之類的條件語句時,往往意味著 LHS部分的規(guī)則可能不是完全的,需要再次進行細分。Drools 的官方文檔建議編寫者在 RHS中僅僅對 Working Memory中的數(shù)據(jù)進行一些簡單的操作,如插入、刪除、修改等操作,或者僅簡單地調(diào)用一些功能操作。5)規(guī)則描述語言簡介  Drools 定義的標準規(guī)則描述語言是一種簡單的規(guī)則語言,即使對于沒有編程經(jīng)驗的業(yè)務人員來說,學會用這種規(guī)則語言來描述業(yè)務規(guī)則也不是一件難事。當然,除上述各節(jié)所介紹的基本概念外,它還有少量語法細節(jié)?! ≡?LHS部分,Drools 定義了各條件之間的連接詞,如amp。amp。(and) 、||(or)工程碩士學位論文 第二章 相關(guān)理論基礎(chǔ)16等;也定義了用于 fact或 fact屬性上的比較運算符,如、 =、 、 =、 ==、 !=、 contains、 not contains、memberof、not memberof、matches、not matches等等。在 RHS部分,用戶可以使用 Drools所支持的方言(dialect)如 java或 mvel來編寫操作代碼;Drools 還定義了一系列直接操作運行時 Working Memory的宏函數(shù),如:insert、update、retract 等等。另外,Drools 還定義了用于描述規(guī)則本身特性的一系列屬性詞,它們是:activationgroup、agendagroup、autofocus、dateeffective、dateexpires、dialect、duration、enabled、lockonactive、noloop、ruleflowgroup、salience 等。這些屬性用來組織規(guī)則、控制規(guī)則的優(yōu)先級、聲明規(guī)則的有效期、指示當 Working Memory中的 fact發(fā)生變化時規(guī)則引擎的動作特性等?! ∪绱a清單 ,Drools 還定義了導入 java包和類的語法;聲明全局變量的語法;定義函數(shù)的語法;定義查詢的語法等等,這些語法都比較簡單,相關(guān)細節(jié)本文不再細述。Drools支持用 XML來描述業(yè)務規(guī)則。一般來說,除非實際應用中有某種特別的需求,否則不要使用 XML來描述業(yè)務規(guī)則,這主要是因為 XML文件的書寫、閱讀和管理都不方便。當業(yè)務規(guī)則變多時,XML 文件會急劇膨脹。借助于預定義的一套 XML節(jié)點和屬性,規(guī)則編寫人員只需按固定的格式填寫相應屬性和代碼即可完成一個 Drools規(guī)則的編制。Drools 提供了一個符合W3C標準的 XSD文件,用以驗證以 XML格式書寫的規(guī)則是否符合 Drools語法規(guī)范。但 XML格式的規(guī)則是固化的,無法再進行擴展。所有 XML格式所支持的規(guī)則語法在標準規(guī)則描述語言中都得到了支持,所以 XML規(guī)則語法是標準語法的一個子集。關(guān)于用 XML來描述規(guī)則的語法和格式細節(jié),可以參考 JBoss的相關(guān)官方文檔。另外,Drools 還提供了一系列工具用于在 規(guī)則之間進行任意的轉(zhuǎn)換:1)XmlDumper 規(guī)則轉(zhuǎn)換成 XML規(guī)則2)DrlDumper 用于將 規(guī)則3)DrlParser 規(guī)則4)XmlPackageReader 用于解析 XML規(guī)則在一些成熟的應用中,用戶的業(yè)務規(guī)則具有相對固定的格式,所有的規(guī)則可以用若干規(guī)則模板來表示,此時,可以考慮使用決策表 [24]來描述業(yè)務規(guī)則。Drools的決策表也稱規(guī)則表。決策表是一種精確而簡潔地表達邏輯條件的方法,其概念很早就出現(xiàn)了,并且很早就應用到了許多邏輯表達場合,例如我們在系工程碩士學位論文 第二章 相關(guān)理論基礎(chǔ)17統(tǒng)分析與軟件測試中就常用到?jīng)Q策表。Drools 支持在電子表格(決策表)中管理規(guī)則, 格式。這樣我們就可以用 Microsoft Excel或 Open Office之類的軟件來管理規(guī)則。和支持所有其它方式描述規(guī)則一樣,Drools 也提供了對決策表進行操作的 API接口。Drools定義了一套關(guān)鍵字來規(guī)范和幫助用戶制作規(guī)則表,用戶在用規(guī)則表描述規(guī)則時應該遵循 Drools的模板格式和語法。一個規(guī)則表通常具有若干固定的條件列和結(jié)果列,列的標題描述了這個匹配模式的數(shù)據(jù)類型、操作屬性或?qū)ο蟮?,?guī)則表的每一行都表示一條規(guī)則。在規(guī)則表的標識位置和列標題中會要用到 Drools定義的模板關(guān)鍵字,例如:用 CONDITION關(guān)鍵字可表示某一列是條件列,用 ACTION關(guān)鍵字可表示某一列是結(jié)果列。限于篇幅,本文不再介紹規(guī)則表的語法細節(jié)。決策表因其簡潔、直觀、管理方便而經(jīng)常被用于商業(yè)性應用系統(tǒng)中。通過對決策表進行精心的設計,我們能有效地隔離 IT人員與業(yè)務人員(或領(lǐng)域?qū)<遥┲g的交互,使得對規(guī)則表的維護完全交由業(yè)務人員(或領(lǐng)域?qū)<遥﹣磉M行,這正是規(guī)則引擎應用的精髓之一。 Drools規(guī)則編譯運行Drools “規(guī)則”的概念拓展到了“知識(Knowledge) ”。所謂“知識”指的是由規(guī)則、規(guī)則流、全局變量、自定義函數(shù)、自定義查詢等共同組成的規(guī)則包。規(guī)則包的編譯與運行總是通過 Drools提供的各種 java類和 API來完成的。在 Drools ,用于完成這些工作的 java類主要有KnowledgeBuilder、KnowledgeBase、StatefulKnowledgeSession 及StatelessKnowledgeSession等?;旧?,對規(guī)則文件進行讀取、編譯和查錯、插入 fact到 Working Memory、設置 global變量、執(zhí)行規(guī)則或規(guī)則流等操作均可以借助這些類來完成。1) KnowledgeBuilder類  編寫好的規(guī)則文件在運行之前首先要對它進行編譯,編譯通過的話,就可以生成規(guī)則包(KnowledgePackage) ;如果編譯沒通過,我們可以調(diào)用KnowledgeBuilder類提供的 hasError()和 getErrors()來獲取錯誤信息??梢允褂?KnowledgeBuilderFactory的 newKnowledgeBuilder()方法來創(chuàng)建KnowledgeBuilder對象,然后使用 KnowledgeBuilder對象的 add()方法將.drl、.xls 等規(guī)則文件添加進來,在添加的同時 KnowledgeBuilder對象將對規(guī)則文件進行編譯,KnowledgeBuilder 對象的 getKnowledgePackages()方法可以返回編譯后產(chǎn)生的規(guī)則包。2) KnowledgeBase類工程碩士學位論文 第二章 相關(guān)理論基礎(chǔ)18圖 ,規(guī)則引擎的工作依賴于兩類工作數(shù)據(jù):一類是規(guī)則(rule,在 Drools knowledge) ;另一類是事實(fact) 。這兩類工作數(shù)據(jù)分別存放在 Production Memory和 Working Memory中,所以在引擎開始工作前我們必須初始化 Production Memory和 Working Memory。一個KnowledgeBase對象就是一個 Production Memory對象, 在引擎開始工作前我們必須把應用程序的規(guī)則包(即知識包)添加到一個 KnowledgeBase對象中。通過 KnowledgeBaseFactory類所提供的這個 newKnowledgeBas() 方法是可以創(chuàng)建 KnowledgeBase對象。在創(chuàng)建的時候還可以為其指定一個 配置對象,即KnowledgeBaseConfiguration 對象。一個 KnowledgeBaseConfiguration 對象是用來存放規(guī)則引擎運行時相關(guān)環(huán)境參數(shù)定義的配置對象。3) StatefulKnowledgeSession及 StatelessKnowledgeSession類初始化 Production Memory后即可以開始初始化 Working Memory。在Drools Working Memory對象被稱為 session對象。session 對象可分為兩類:一類是有狀態(tài)的 session對象,稱為 StatefulKnowledgeSession對象;另一類是無狀態(tài)的 session對象,稱為 StatelessKnowledgeSession對象。因為 session對象總是與 KnowledgeBase對象相關(guān)聯(lián)的,所以 session對象的創(chuàng)建也必須通過 KnowledgeBase對象來完成。借助于 KnowledgeBase對象的 newStatefulKnowledgeSession()方法可以創(chuàng)建一個 StatefulKnowledgeSession對象;而借助于 KnowledgeBase對象的newStatelessKnowledgeSession()方法是可以創(chuàng)建一個對象,在這個對象中為StatelessKnowledgeSession對象。一旦 StatefulKnowledgeSession對象或 StatelessKnowledgeSession對象創(chuàng)建成功,我們就可以用它們的 insert()方法把事實(fact)插入到 Working Memory中,以完成事實庫的初始化工作。初始化 Working Memory工作完成后即可以調(diào)用 StatefulKnowledgeSession對象或 StatelessKnowledgeSession對象的 fireAllRules()方法來觸發(fā)所有規(guī)則的執(zhí)行。需要特別注意的是:StatefulKnowledgeSession 對象的 fireAllRules()方法可以多次調(diào)用,在兩次調(diào)用之間 StatefulKnowledgeSession對象的狀態(tài)一直被保持。使用完 StatefulKnowledgeSession對象后我們必須注意調(diào)用它的dispose()方法以釋放其所占用的資源。而 StatelessKnowledgeSession對象的fireAllRules()方法只能調(diào)用一次,調(diào)用完后該方法自動調(diào)用對象自身的dispose()方法,自動釋放其所占用的資源。4) Fact對象Fact對象是指通過 insert()方法插入到 StatefulKnowledgeSession對象工程碩士學位論文 第二章 相關(guān)理論基礎(chǔ)19或 StatelessKnowledgeSession對象中的 JavaBean對象。Drools 要求 Fact對象必須是一個 JavaBean,即它必須符合 JavaBean的編寫規(guī)范,例如:如果某Fact對象具有一個可讀寫的屬性 color,則它必須實現(xiàn) getColor()和setColor()方法。在實際應用中,一個 Fact對象通常是一個具有 getter和setter方法的 POJO對象。Fact 對象的作用是充當規(guī)則引擎與應用系統(tǒng)之間數(shù)據(jù)交互的橋梁?! ‘?Fact對象被插入到 Working Memory后,規(guī)則引擎會將它與當前 Working Memory中的所有規(guī)則進行匹配,同時返回一個 FactHandler對象。FactHandler對象是插入到 Working Memor中的 Fac對象的引用句柄,通過FactHandle對象可以實現(xiàn)對 Fact對象的修改、刪除等
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1