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

正文內(nèi)容

drools使用手冊第三章-在線瀏覽

2025-01-17 04:41本頁面
  

【正文】 ge 包 包是規(guī)則以及其它相關(guān)結(jié)構(gòu)的一個(gè)集合,如 import 和 global。一個(gè)包通過名稱空間描繪,這樣很好的保持了一組規(guī)則的獨(dú)立性。 通過使用包,可以將規(guī)則從多個(gè)規(guī)則源組裝起來,使用一個(gè)頂層包將所有規(guī)則包含(當(dāng)規(guī)則被裝配的時(shí)候)。 下面的線路圖顯示一個(gè)包中可能 包含的所有組件。除了 package 和惡性 pander 標(biāo)記必須放在文件的頂部,在其它規(guī)則之前,其它關(guān)鍵字元素的使用沒有任何順序要求,可以使用在文件的任何地方。 The following rail road diagram shows all the ponents that may make up a package. Note that a package MUST have a namespace and be declared using standard java conventions for package names。對于任何要用在規(guī)則中的對象,你需要指定完整的路徑和類型名。 . expander 擴(kuò)展 圖 . expander Expander 標(biāo)記是可選的,用來指定 DSL 配置(通常保存在獨(dú)立文件中)。 . global 全局變量 圖 . global Global 是全局變量。全部變量通常用來返回?cái)?shù)據(jù),如一個(gè)動作的記錄,獲得提供數(shù)據(jù)或服務(wù)給規(guī)則使用。在條件約束中錯(cuò)誤使用全局變量會導(dǎo)致意想不到的結(jié)果。這意味著你可以傳入任何你想要的對象:你可以傳遞一個(gè) 服務(wù)的位置代理,或者可能是一個(gè)服務(wù)本身。在你的規(guī)則引擎的集成代碼中,你獲得你的 服務(wù)對象,并且將它引入到 working memory。然后在規(guī)則的推論中,你就可以使用類似 (number,message)這樣的調(diào)用。它們不可能做任何超過你可以在幫助類(在 java 中定義,被設(shè)置入規(guī)則的 Working Memory 中的類)中做到的事情(實(shí)際上,編譯器為后面的場景產(chǎn)生幫助類,那樣幫助不大)。函數(shù)最大的用處是被規(guī)則的推論( then)部分中的行為所調(diào)用,特別是當(dāng)一個(gè)行為操作需要反復(fù)被調(diào)用時(shí) —— 如發(fā)送郵件。 } 注意 function 關(guān)鍵字的使用,雖然它并不真的是 java 的一部分。返回值的概念也和普通方法相同。 作為對 function 的替代,你也可以在幫助類中定義靜態(tài)函數(shù):(),或者使用全局變量傳入一個(gè)幫助類 /服務(wù)的實(shí)例:()—— 這里 foo 被定義為全局變量。規(guī)則的格式是 IF something THEN action 這樣的格式(當(dāng)然我們使用的是 when 和 then 關(guān)鍵字) —— 對產(chǎn)生式規(guī)則而言。如果規(guī)則名稱中有空格,需要使用雙引號包含(好習(xí)慣是定義名稱時(shí)都使用雙引號)。規(guī)則使用 end 關(guān)鍵字 結(jié)尾。 . Left Hand Side 左手元 左手元 (LHS)是對規(guī)則的條件部分的一個(gè)通稱。右手元的目的是對 Working Memory進(jìn)行增加或刪除 Facts 的動作,并且對應(yīng)用程序調(diào)用任意指定的動作。 只 有很少的的條件方法可以用來改變 working memory 中的內(nèi)容。將要通知引擎一個(gè)對象發(fā)生了改變(在 LHS 中綁定的對象),規(guī)則需要重新檢查 assert(new Something())。 assertLogical(new Something())。 retract(obj)。 KnowledgeHelper 的實(shí)例在RHS 代碼塊中可以通過一個(gè)稱為 drools 的變量調(diào)用。 . Rule Attriutes 規(guī)則屬性 圖 . rule attributes . noloop 無循環(huán) 默認(rèn)值 : false 類型 : Boolean 當(dāng)規(guī)則在推論中對 fact 進(jìn)行修改后,可能會導(dǎo)致該規(guī)則的重新激活,引起遞歸。 . salience 優(yōu)先級 默認(rèn)值 : 0 類型 : integer 每一個(gè)規(guī)則有一個(gè)整數(shù)類型的優(yōu)先級屬性,默認(rèn)為 0,這個(gè)整數(shù)可以使正負(fù)數(shù)。 . agendagroup 默認(rèn)值 : MAIN 類型 : String Agenda group 允許用戶對分隔 Agenda 執(zhí)行區(qū)提供更多的控制。 . autofocus 自動獲取焦點(diǎn) 默認(rèn)值 false 類型 : Boolean 當(dāng)規(guī)則的 autofocus 屬性為 true 時(shí),如果該規(guī)則符合激活條件,則該規(guī)則所在agendagroup 自動獲得焦點(diǎn),允許規(guī)則激發(fā)。這個(gè)意思時(shí)在這個(gè)組中第一條被激發(fā)的規(guī)則將取消其它規(guī)則的激發(fā),即使它們已經(jīng)在激發(fā)隊(duì)列中。 注:這個(gè)組之前被稱為 Xorgroup,但是從技術(shù)上來說它與 Xor 并不完全一樣,但是當(dāng)你聽到別人說 xorgroup 時(shí),你知道這就是 activationgroup。在引擎內(nèi) 部,每一個(gè)匹配的對象類型的實(shí)例保存在一個(gè)數(shù)組中。每個(gè)對象類型實(shí)例是從 0 到多個(gè)字段約束中過濾出來的,術(shù)語 Column 是用來指出在對象類型上的約束列表。第二個(gè)例子引用兩 個(gè)字段約束,它們使用逗號分開,這意味著‘ and’。這意味著你可以在其它條件或規(guī)則的推論部分使用cheapStilton。它們通過對 fact 對象實(shí)例的字段的值進(jìn)行等值比較或?qū)Ρ缺容^。 Field 是一個(gè)可調(diào)用的方法。你可以使用 bean 名稱約定讀取 fields,因此 getType 可以使用 type 來訪問。你也可以通 過非 getter 方法讀取,例如 toString()方法。請確認(rèn)你調(diào)用的方法沒有使用參數(shù),并且是完全的讀取函數(shù)(這個(gè)意思時(shí),它們不能因?yàn)檎{(diào)用而影響對象的狀態(tài),這樣會影響到規(guī)則,記住規(guī)則引擎為了提高效率,在調(diào)用的過程中緩存了匹配的結(jié)果)。基本上 ,最好是不要在需要在規(guī)則中使用的對象模型中使用原類型。 注:在 版本中可直接使用原類型,不再需要封箱和拆箱支持。這種調(diào)用對方法的名稱大小寫敏感。 . Operators 操作 圖 . Operators 在不同的字段約束內(nèi)可以使用許多操作。通?;跀?shù)據(jù)類型的操作是自說明性的,例如對于數(shù)據(jù)字段,“ ”意味著之前。 . Literal Constraints 值約束 最基本的字段約束是值約束,這可以要求字段必須與給定值匹配。因?yàn)榭梢允褂?hash 提高性能,因此對“ ==”的值約束可以提供非常快的比較效率。你可以通過對 屬性指定可選的日期格式掩碼來支持其它日期格式。 有效操作 : ? == ? != ? ? ? = ? = 例 . Date Literal Constraint Cheese( bestBefore 27Oct2020 ) 字符串 允許任何有效的 Java 字符串。 有效操作 : ? true ? false 例 . Boolean Literal Constraint Cheese( smelly == true ) Matches 匹配操作 任何有效的 Java 正則表達(dá)式可以用來對字符串字段進(jìn)行匹配。contains39。 例 . Literal Constraints with Collections 集合的值約束 CheeseCounter( cheeses contains stilton ) CheeseCounter( cheeses excludes chedder ) Excludes Operator 排除操作 39。是用來檢查字段集合中是否不包含一個(gè)對象的操作。綁定的變量被稱為聲明。有效的操作范圍是由聲明所代表的對象或字段的類型來決定。 例 . Bound Field using 39。 operator Person( likes : favouriteCheese ) Cheese( type == likes ) ‘ likes’是我們的變量(聲明),被綁定到匹配的 Person實(shí)例的 favouriteCheese字段上,并且被用來約束下面的 Cheese 對象的類型。下面的例子顯示了綁定到 Cheese 對象實(shí)例的變量 $stilton 被用來對 Cheesery 對象進(jìn)行約束。contains39。前面提到的綁定聲明可以用在表達(dá)式中。所有綁定的原型聲明被封箱,當(dāng)前沒有自動拆箱(如果使用 Java5,則都是自動的)。 例 . Return Value operator Person( girlAge : age, sex = F ) Person( boyAge : age ( () == () + 2 ), sex = 39。 ) . Return Value Constraints 返回值約束 圖 . Return Value expression 返回值約束可以使用任何有效的 Java 表達(dá)式,只要它返回一個(gè)對象,它不能返回一個(gè)原型值(在 之后版本已無此限制),避免使用任何 Drools關(guān)鍵字作聲明。之前的綁定聲明可以用在這里。返回值如果是一個(gè)原型值,必須被封箱。注意在這里我們不需要綁定 boyAge,這樣看起來容易閱讀一些。M39。最常用的是‘ and’,當(dāng)在一個(gè)規(guī)則的LHS 的多個(gè) Column 之間沒有任何連接時(shí),默認(rèn)就是 and。一個(gè)聲明只能涉及到一個(gè)單獨(dú)的 Fact, 當(dāng) and被滿足時(shí),它匹配超過一個(gè) fact,哪一個(gè) Fact 是聲明所綁定的呢? [譯者注:這里的翻譯有些難懂,估計(jì)的意思是如果將 and和 or平級混用,這將引起邏輯上的混亂,因此不能這樣。and39。amp。or39。上面的示例將在兩個(gè)規(guī)則中產(chǎn)生結(jié)果。 OR的最好的使用方式是作為產(chǎn)生兩個(gè)額外規(guī)則的捷徑。 . 39。 圖 . eval 有效的子條件元素 : none Eval 本質(zhì)上是一個(gè)允許任何語義代碼(代碼返回原型 boolean)被執(zhí)行的調(diào)用。在一個(gè)規(guī)則的 LHS 中, eval 必須被放在最后。 Eval 不能被索引,這不是使用值約束的最佳方式。如果規(guī)則中的其它條件是匹配的, eval 仍然需要每次都重新檢查。 例 . eval p1 : Parameter() p2 : Parameter() eval( ().containsKey(()) ) eval( isValid(p1, p2) ) // 這是如何在 LHS 中進(jìn)行函數(shù) isValid 調(diào)用的方法 . 39。 圖 . not 有效的子條件元素 : Column 39。是一階邏輯的存在判斷量詞,檢查在 Working Memory 中某些 Fact 的存在性。 例 . No Busses not Bus() 例 . No red Busses not Bus(color == red) not ( Bus(color == red, number == 42) ) //not 后的括號可選 . 39。 存在 圖 . exists 有效的子條件元素 : Column 39。是一階邏輯的存在判斷量詞,檢查在 Working Memory 中某些 Fact 的存在性。它不同于只檢查 Column 自身的清況。如果使用 exists 對 Column,則規(guī)則僅僅激活一次,而不會考慮 Working Memory中有多少個(gè) Column符合條件。 例 . Atleast one Bus exists Bus() 例 . Atleast one red Bus exists Bus(color == red) . 39。 圖 . group 括號在這里與數(shù)學(xué)中使用的模式類似,它使得操作的順序更清晰。 (true)。這使得代碼的閱讀方便簡捷。在需要的時(shí)候 Drools 不得不進(jìn)行封箱操作。但是要注意的是它們不會被自動拆箱。 作為一個(gè)約定,如果可能的話將你的 fields 換成對象類型(至少直到 java5),或者最少將你的 fields 想象為對象類型,即使它們開始不是?,F(xiàn)在我期望你可以在Java5 以上版本開發(fā)。 . Query 查詢 圖 . query 查詢中僅僅包含規(guī)則 LHS 部分的
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1