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

正文內(nèi)容

drools使用手冊(cè)第三章-wenkub

2022-11-25 04:41:00 本頁(yè)面
 

【正文】 以將規(guī)則從多個(gè)規(guī)則源組裝起來,使用一個(gè)頂層包將所有規(guī)則包含(當(dāng)規(guī)則被裝配的時(shí)候)。 . 單行注釋 圖 . 單 行注釋 . 多行注釋 圖 . 多行注釋 . Package 包 包是規(guī)則以及其它相關(guān)結(jié)構(gòu)的一個(gè)集合,如 import 和 global。接下來的列表是你應(yīng)該在規(guī)則內(nèi)容中避免使用的保留字(如果使用了,大多數(shù)時(shí)候可以正常工作,但有時(shí)會(huì)引起解析錯(cuò)誤)。但在某些情況下, Drools 自帶的規(guī)則語言是完美的。 DSLs 擴(kuò)展機(jī)制通過一行行處理規(guī)則源文件,就好像進(jìn)行編譯一樣,這也是換行機(jī)制唯一起到重要作用的時(shí)候。 . 領(lǐng)域語言 Domain Specific Languages DSL 是作為對(duì) Drools 3 自帶語言的增強(qiáng)來實(shí)現(xiàn)的。 RHS 是允許 Java 語義代碼(很快將支持其它語言和 C)執(zhí)行的塊。 DRL 是簡(jiǎn)單的 text文件格式。如果你使用規(guī)則工作臺(tái),那許多規(guī)則結(jié)構(gòu)可以通過內(nèi)容輔助系統(tǒng)完成,例如輸入‘ ru’然后按 下 Ctrl+Space,它將為你建立一個(gè)規(guī)則結(jié)構(gòu)。這種格式通過使用標(biāo)點(diǎn)符號(hào),使得標(biāo)點(diǎn)非常的輕量化,并且通過 DSL(域規(guī)則語言)支持自然語言的擴(kuò)展,這使得你可以將該語言演化到與你需要解決的問題域更為相配。這章主要介紹 Drools3自帶的規(guī)則語言。 . 規(guī)則文件 規(guī)則文件通常是以 drl 擴(kuò)展名結(jié)尾。 . What makes a rule 規(guī)則具有如下主體結(jié)構(gòu) : rule name ATTRIBUTES when LHS then RHS end 規(guī)則的結(jié)構(gòu)是非常簡(jiǎn)單的,許多符號(hào)都是不需要的,甚至“ name”兩邊的引號(hào)也是可選的。僅有的特別的關(guān)鍵字是為了設(shè)置,刪除和修改 facts所用。使用了“ expander(擴(kuò)展 )”機(jī)制。它用來增加可讀性并避免使用標(biāo)點(diǎn)符號(hào)。如何選擇是你的自由。當(dāng)然你可以將這也關(guān)鍵字用作方法等定義的一部 分,例如 notSomething(),這樣沒有問題。包的成員應(yīng)該彼此有一定聯(lián)系,如人力資源的規(guī)則包。通常情況下,是將一個(gè)包所有的規(guī)則放在聲明包的同樣的文件中,這是完全的自包含。分號(hào)是可選用的。 Drools 從同名的 java 包中自動(dòng)導(dǎo)入類。如果多個(gè)包定義了同樣名稱的全局變量,它們必須使用同樣的類型,并且全部指向同一個(gè)全局值。 注意,這些全局變量只是從你的應(yīng)用傳到 Working Memory 的對(duì)象的實(shí)例。在 DRL 文件中,聲明你已經(jīng)有了一個(gè) EmailService 類型的全局變量,并給它一個(gè)名稱為 。主要使用函數(shù)的優(yōu)點(diǎn)是可以將邏輯保存在一個(gè)地方,并且你可以在需要的時(shí)候改變函數(shù)(這樣做各有優(yōu)缺點(diǎn))。傳入 function的參數(shù)就像不同的方法一樣(如果不需要參數(shù)可以為空)。 . Rule 規(guī)則 圖 . rule 規(guī)則的構(gòu)造顯然是最重要的構(gòu)造。 特性是可選的,最好保持每行一條,如下描述: 規(guī)則的 LHS 部分跟隨 when 關(guān)鍵字( when 最好在單獨(dú)的一行上), RHS 部分跟隨then 關(guān)鍵字(最好也單獨(dú)一行)。 為了理解下圖,請(qǐng)查閱下面的細(xì)節(jié)部分: 圖 . Left Hand Side 圖 . pattern . The Right Hand Side 右手元 右手元 (RHS)是對(duì)規(guī)則的推論行為的通稱。 modify(obj)。 與 assert 類似,但當(dāng)沒有 facts 支持引起 assertLogical 的規(guī)則的條件時(shí),使用 assertLogical 設(shè)置的對(duì)象自動(dòng)從working memory 中刪除 。如果你提供了 Property Change Listeners(屬性變更監(jiān)聽器)給設(shè)置到引擎中的 java beans 對(duì)象,當(dāng)對(duì)象改變時(shí)可以不用調(diào)用 modify 方法,引擎也可以得到通知。優(yōu)先級(jí)數(shù)字高的規(guī)則會(huì)比優(yōu)先級(jí)低 的規(guī)則先執(zhí)行。 . activationgroup 默認(rèn)值 N/A 類型 : String 在同名 activationgroup 中的規(guī)則將以互斥的方式激發(fā)。 . duration 持續(xù)時(shí)間 默認(rèn)值 : 無默認(rèn)值 類型 : long 例 . 一些屬性的示例 rule my rule salience 42 agendagroup number 1 when ... . Column 圖 . Column 例 . Column Cheese( ) Cheese( type == stilton, price 10 ) 一個(gè)規(guī)則由一或多個(gè)對(duì)象類型的字段約束組成。第一個(gè)例子沒有約束,將匹配所有在 Working Memory中的 Cheese的實(shí)例,不考慮實(shí)例的字段值是什么。 . Field Constraints 字段約束 字段約束針對(duì) fact 對(duì)象,使得工作引擎可以從 working memory 中選擇出匹配的對(duì)象。如果你的模型對(duì)象使用 java bean 模式, fields 由 getXXX 或 isXXX 方法提供(這些方法是無參數(shù),有返回值的)。在這時(shí),調(diào)用方式應(yīng)當(dāng)是: Cheese(toString==? ),使用方法的全名的正確拼寫但不要括號(hào)。如果你使用 Java5,則你可以獲得最好的效果(可以讓編譯器為你自動(dòng)封箱),如果你使用 JDT 語法編譯器, Drools 將遵循它,如果是 JANINO 則不支持 Java5。例如getter 方法是 getURI,則訪問屬性名為 URI,因?yàn)樵?get 后面有超過一個(gè)的連續(xù)大寫字母,這完全遵循 JavaBean 標(biāo)準(zhǔn)。 Matches操作只能在字符串字段上可用, contains 和 excludes 操作只能在集合類型上可用。 圖 . Literal Constraints 數(shù)字 所有標(biāo)準(zhǔn)的 Java 數(shù)字原型都支持 有效操作 : ? == ? != ? ? ? = ? = 例 . Numeric Literal Constraint Cheese( quantity == 5 ) 日期 當(dāng)前默認(rèn)只支持‘ ddmmyyyy’這樣的日期格式類型。 有效操作 : ? == ? != 例 . String Literal Constraint Cheese( type == stilton ) 布爾值 只有 true 或 false 可以使用,不能使用 0 和 1 代表布爾值。 是一個(gè)特定的操作,可以用來檢查一個(gè)字段的集合是否包含一個(gè)對(duì)象。 例 . Literal Constraints with Collections 集合的值約束 CheeseCounter( cheeses excludes cheddar ) . Bound Variable Constraint 綁定變量約束 圖 . Bound Variable Declaration 變量可以綁定 Fact 或它們的字段,然后在后來的值約束中使用。綁定的變量,因?yàn)槭褂?hash 的關(guān)系,對(duì)于‘ ==’和‘ !=’操作可以提供非常高的效率。然后有效的 java 變量名都可以用來做綁定變量的名稱,包括‘ $’,它常用來標(biāo)識(shí)變量與字段的區(qū)別。 operator $stilton : Cheese( type == stilton ) Cheesery( cheeses contains $stilton ) . Predicate Constraints 斷言約束 圖 . Predicate expression 斷言表達(dá)式 斷言表達(dá)式能夠使用任何有效的 Java 表達(dá)式,只要它的計(jì)算結(jié)果是 boolean 型即可,注意避免使用任何 Drools 的關(guān)鍵字作為聲明。 下面的例子是找到所有男性比女性大兩歲的配對(duì)。使用在返回值表達(dá)式中的函數(shù)必須返回時(shí)間常量結(jié)果。 如前面斷言的例子,下面的例子同樣找到男性比女性大 2 歲的配對(duì)。 ) . Conditional Elements 條件元素 條件元素工作在一個(gè)或多個(gè) Column 中。 ] . 39。 Person( favouriteCheese == cheeseType ) Cheese( cheeseType : type ) and Person( favouriteCheese == cheeseType ) . 39。這兩個(gè)規(guī)則在 Working Memory 中獨(dú)立的工作,這意味著每一個(gè)都能夠匹配、激活和執(zhí)行,沒有捷徑。eval39。你可以在規(guī)則中有多個(gè) evanl ,通常你需 要使用一些列約束將他們組合起來。 對(duì)于那些熟悉 Drools 版本的人,舊的 Drools 參數(shù)和條件標(biāo)記等于將一個(gè)變量綁定到適當(dāng)?shù)念愋蜕?,然后作為一個(gè) eval 節(jié)點(diǎn)使用。not39。exists39。存在的意思是至少有一個(gè)。 當(dāng)前只有 Column 可以在 exists 中嵌套,以后將可以支持 and 和 or 進(jìn)行嵌套(已在 中實(shí)現(xiàn))。 例 . Example of groups ... ( Message( status == ) and Message(message != null) or Message(status == null) ) ... 例 . A rule example rule Approve if not rejected salience 100 agendagroup approval when not Rejection() p : Policy(approved == false, policyState:status) exists Driver(age 25) Process(status == policyState) then log(APPROVED: due to no objections.)。但是 Drools 也支持在 中運(yùn)行,我們不能依賴于這點(diǎn)( 之后版本不用考慮本節(jié)所述問題 )。這樣的話,如果你綁定了 field 在一個(gè) int 原型數(shù)值上,它的行為在規(guī)則中看起來像對(duì)象一樣 (如斷言、返回值約束和 RHS)。因?yàn)橹暗?java 不是所有都是對(duì)象才造成這個(gè)頭痛的問題。查詢名稱對(duì)于 RuleBase 來說是全局性的,因此在為一個(gè)RuleBase 服務(wù)的不同 Package 中不要使用重復(fù)的查詢名稱。 例 . Query People over the age of 30 QueryResults results = ( people over the age of 30 )。 ()。 } . Domain Specific Languages 領(lǐng)域語言 如之前介紹, DSL是將規(guī)則語言擴(kuò)展到你自己的問題領(lǐng)域中的辦法。如果你需要規(guī)則能夠被非技術(shù)人員閱讀和使用,如商業(yè)分析師, DSL 正好合適。 XML風(fēng)格也仍然被支持的,如果你需要的話,可以查看 Drools3 的 Xml 規(guī)則語言,并考慮使用 XSLT將 Drools2 中的 XML 映射為 Drools3 XML 語言。在 [when]之后是要用在規(guī)則之內(nèi)的表達(dá)式(通常是自然語言表達(dá)式,但不是必需的)。 要特別注意的是 DSL 表達(dá)式一次處理一行。這意味著分析器沿著句子檢查,并將字符之間(在這里是雙引號(hào))的值取出。 例 . 引號(hào)示例 [when]This is {something} and {another}=Something(something=={something}, another=={another}) [when]This is {also} valid=Another(something=={also}) 在 DSL 表達(dá)式中在可能的情況下除了使用引號(hào)以外應(yīng)當(dāng)盡量避免使用標(biāo)點(diǎn)符號(hào),這樣可以使表達(dá)式看起來簡(jiǎn)單易懂。 } 不
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1