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

正文內(nèi)容

drools使用手冊(cè)第三章-文庫(kù)吧資料

2024-11-22 04:41本頁(yè)面
  

【正文】 ype, price, age, country。如果你的 DSL表達(dá)式使用“ ”開(kāi)始 ,它會(huì)被假設(shè)為字段約束,并被自動(dòng)加入在上面提供的聲明中(每行是一個(gè)字段約束)。將每一種組合情況都用 DSL 表示是不可能的。 . 增加 facts的約束條件 當(dāng)編寫規(guī)則表達(dá)式時(shí),通常要對(duì) fact聲明增加許多約束。 DSL 表達(dá)式的處理根據(jù)映射文件的順序,按照從頂部到底部的順序。 expander 一般會(huì)將 DSL 文件放在與規(guī)則文件相同的目錄下,但是使用上面的代碼可以從不同目錄讀取 DSL,只需要提供對(duì)應(yīng)的讀取器即可。 ( source, dsl )。 為了使用 DSL 編譯和運(yùn)行規(guī)則,你需要將 DSL配置源碼與規(guī)則源碼一起傳入。 當(dāng)你使用構(gòu)建好的 DSL 工作時(shí),你會(huì)發(fā)現(xiàn) DSL 配置起來(lái)非???,那是因?yàn)槟悴粩嗍褂孟嗤?DSL 表達(dá)式新建和修改規(guī)則。注意,一旦你使用了 expander 關(guān)鍵字,如果解析器不能識(shí)別表達(dá)式,將會(huì)拋出錯(cuò)誤,你必須將所有東西都移到 DSL 中。你可以使用單元測(cè)試開(kāi)始。 [when]And = and 上面定義的翻譯規(guī)則,將下面的輸入翻譯成指定的結(jié)果 例 . Some examples as processed There is a Person with name of kitty Person(name=kitty) Person is at least 42 years old and lives in atlanta Person(age 42, location=atlanta) Log boo (boo)。 } 不要忘記 ,如果你從用戶處捕捉字符串,你也需要在表達(dá)式右邊的映射出加上引號(hào),就像一個(gè)普通的規(guī)則一樣,因?yàn)樽鳛橛成涞慕Y(jié)果在規(guī)則語(yǔ)言中也必須是有效的。 { 和 } 只能用在表達(dá)式的左邊以用來(lái)標(biāo)記 tokens。 例 . 引號(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á)式看起來(lái)簡(jiǎn)單易懂。 [譯者注:這里的內(nèi)容直譯不易理解,最好參看后面的例子 理解; ] 作為一個(gè)慣例,對(duì)文本數(shù)據(jù)使用引號(hào)是規(guī)則編輯器所默認(rèn)的。這意味著分析器沿著句子檢查,并將字符之間(在這里是雙引號(hào))的值取出。這樣的效果可能不是當(dāng)你想將不同的 DSL 擴(kuò)展鏈接在一起產(chǎn)生一個(gè)目標(biāo)表達(dá)式時(shí)想要的。 要特別注意的是 DSL 表達(dá)式一次處理一行。 分解器將獲得你指定的表達(dá)式,然后取出輸入中的 {something}(稱為 Tokens)值進(jìn)行匹配。在 [when]之后是要用在規(guī)則之內(nèi)的表達(dá)式(通常是自然語(yǔ)言表達(dá)式,但不是必需的)。如果你使用 IDE,你可以獲得一個(gè)友好的圖形編輯器(以及一些校驗(yàn)),但保存文件的格式十分簡(jiǎn)單。 XML風(fēng)格也仍然被支持的,如果你需要的話,可以查看 Drools3 的 Xml 規(guī)則語(yǔ)言,并考慮使用 XSLT將 Drools2 中的 XML 映射為 Drools3 XML 語(yǔ)言。 DSL 不關(guān)注規(guī)則的運(yùn)行時(shí),它們僅僅是分解和編譯時(shí)需 要的特性。如果你需要規(guī)則能夠被非技術(shù)人員閱讀和使用,如商業(yè)分析師, DSL 正好合適。 . 何時(shí)使用 DSL DSL 可以用作分離規(guī)則編輯(規(guī)則的作者)和在規(guī)則引擎中操作的對(duì)象的一個(gè)中間層。 } . Domain Specific Languages 領(lǐng)域語(yǔ)言 如之前介紹, DSL是將規(guī)則語(yǔ)言擴(kuò)展到你自己的問(wèn)題領(lǐng)域中的辦法。 Person person = ( Person ) ( person )。 ()。 ( These people are are over 30: )。 例 . Query People over the age of 30 QueryResults results = ( people over the age of 30 )。 例 . Query People over the age of 30 query people over the age of 30 person : Person( age 30 ) end 通過(guò)在返回的查詢結(jié)果 (QueryResults)上進(jìn)行標(biāo)準(zhǔn)的 for 循環(huán)遍歷,每一行將返回一個(gè) QueryResult,該對(duì)象可以用來(lái)存取組元中的每一個(gè) Column。查詢名稱對(duì)于 RuleBase 來(lái)說(shuō)是全局性的,因此在為一個(gè)RuleBase 服務(wù)的不同 Package 中不要使用重復(fù)的查詢名稱。它提供了查詢working memory 中符合約束條件的對(duì)象的一個(gè)簡(jiǎn)單辦法。因?yàn)橹暗?java 不是所有都是對(duì)象才造成這個(gè)頭痛的問(wèn)題。另一個(gè)要注意的是返回值約束,返回值片斷必須返回一個(gè)對(duì)象而不是原型。這樣的話,如果你綁定了 field 在一個(gè) int 原型數(shù)值上,它的行為在規(guī)則中看起來(lái)像對(duì)象一樣 (如斷言、返回值約束和 RHS)。被查閱的 Field 會(huì)自動(dòng)封箱到對(duì)應(yīng)的對(duì)象類型(如 intInteger) ,如果本身已經(jīng)是對(duì)象則不會(huì)改變。但是 Drools 也支持在 中運(yùn)行,我們不能依賴于這點(diǎn)( 之后版本不用考慮本節(jié)所述問(wèn)題 )。 end . 對(duì)原型數(shù)據(jù)自動(dòng)封箱的提醒 Java 5 支持對(duì)原型進(jìn)行類型適當(dāng)?shù)淖詣?dòng)封箱和拆箱。 例 . 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.)。group39。 當(dāng)前只有 Column 可以在 exists 中嵌套,以后將可以支持 and 和 or 進(jìn)行嵌套(已在 中實(shí)現(xiàn))。如果只是要求 Column,則意味著對(duì)每一個(gè)符 合的 Column。存在的意思是至少有一個(gè)。exists39。exists39。當(dāng)前只有 Column 可以在 not 中嵌套,以后將可以支持 and 和 or 進(jìn)行嵌套(已在 中實(shí)現(xiàn))。not39。not39。 對(duì)于那些熟悉 Drools 版本的人,舊的 Drools 參數(shù)和條件標(biāo)記等于將一個(gè)變量綁定到適當(dāng)?shù)念愋蜕希缓笞鳛橐粋€(gè) eval 節(jié)點(diǎn)使用。但是當(dāng)函數(shù)的返回值不斷改變時(shí)(這樣的函數(shù)不能用在值約束中),使用 eval 非常合適。你可以在規(guī)則中有多個(gè) evanl ,通常你需 要使用一些列約束將他們組合起來(lái)。它可以用來(lái)查閱在規(guī)則的 LHS 中綁定的變量。eval39。如果你這樣想,很明顯對(duì)于一個(gè)規(guī)則能有多個(gè)行為,如果 Or 條件元素的兩邊都滿足的話。這兩個(gè)規(guī)則在 Working Memory 中獨(dú)立的工作,這意味著每一個(gè)都能夠匹配、激活和執(zhí)行,沒(méi)有捷徑。 圖 . or 有效的子條件元素 : and, or, not, exists, column 例 . or Person( sex == f, age 60 ) || Person( sex == m, age 65 ) Person( sex == f, age 60 ) or Person( sex == m, age 65 ) 圖 . or 例 . or with binding pensioner : ( Person( sex == f, age 60 ) or Person( sex == m, age 65 ) ) Or條件元素在多個(gè)規(guī)則(稱為子規(guī)則)中對(duì)每一個(gè)可能的邏輯輸出產(chǎn)生結(jié)果。 Person( favouriteCheese == cheeseType ) Cheese( cheeseType : type ) and Person( favouriteCheese == cheeseType ) . 39。 圖 . and 有效的子條件元素 (用括號(hào)進(jìn)行組合 ): and, or, not, exists, column 例 . Column Cheese( cheeseType : type ) amp。 ] . 39。注意在‘ and’前面不能有一個(gè)如‘ or’這樣的聲明綁定,想一下你很容易明白。 ) . Conditional Elements 條件元素 條件元素工作在一個(gè)或多個(gè) Column 中。 例 . Return Value operator Person( girlAge : age, sex == F ) Person( age == ( new Integer(() + 2) ), sex == 39。 如前面斷言的例子,下面的例子同樣找到男性比女性大 2 歲的配對(duì)。所有的綁定原型聲明被封箱,當(dāng)前沒(méi)有自動(dòng)拆箱功能。使用在返回值表達(dá)式中的函數(shù)必須返回時(shí)間常量結(jié)果。M39。 下面的例子是找到所有男性比女性大兩歲的配對(duì)。在斷言約束中使用的函數(shù)必須返回時(shí)間常量結(jié)果 [譯者注:這句的翻譯準(zhǔn)確,但不理解要表達(dá)的含義,提供英文原本‘ Functions used in a Predicate Constraint must return time constant results.’ ]。 operator $stilton : Cheese( type == stilton ) Cheesery( cheeses contains $stilton ) . Predicate Constraints 斷言約束 圖 . Predicate expression 斷言表達(dá)式 斷言表達(dá)式能夠使用任何有效的 Java 表達(dá)式,只要它的計(jì)算結(jié)果是 boolean 型即可,注意避免使用任何 Drools 的關(guān)鍵字作為聲明。 例 . Bound Fact using 39。然后有效的 java 變量名都可以用來(lái)做綁定變量的名稱,包括‘ $’,它常用來(lái)標(biāo)識(shí)變量與字段的區(qū)別。==39。綁定的變量,因?yàn)槭褂?hash 的關(guān)系,對(duì)于‘ ==’和‘ !=’操作可以提供非常高的效率。聲明不能被用來(lái) 進(jìn)行匹配 (matchs)操作,雖然它與約束一起工作。 例 . Literal Constraints with Collections 集合的值約束 CheeseCounter( cheeses excludes cheddar ) . Bound Variable Constraint 綁定變量約束 圖 . Bound Variable Declaration 變量可以綁定 Fact 或它們的字段,然后在后來(lái)的值約束中使用。excludes39。 是一個(gè)特定的操作,可以用來(lái)檢查一個(gè)字段的集合是否包含一個(gè)對(duì)象。 例 . 正則表達(dá)式約束 Cheese( type matches (Buffulo)?\\S*Mozerella ) Contains Operator 包含操作 39。 有效操作 : ? == ? != 例 . String Literal Constraint Cheese( type == stilton ) 布爾值 只有 true 或 false 可以使用,不能使用 0 和 1 代表布爾值。如果需
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1