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

正文內(nèi)容

drools應(yīng)用手冊-預(yù)覽頁

2024-12-09 12:42 上一頁面

下一頁面
 

【正文】 多,但是不同的組織間有不同的需要 —— 通常這超出了應(yīng)用者 /項目團隊的控制 )。產(chǎn)生式規(guī)則系統(tǒng)的核心是一個能夠處理大量規(guī)則和事實的推理引擎。推理機使用的用于模式匹配的算法有很多,包括 : ? Linear 線性的 ? Rete 網(wǎng)狀 ? Treat ? Leaps 葉狀 Drools實現(xiàn)了 Rete 和 Leaps算法; Leaps 是試驗性質(zhì)的,因為它是個十分新的算法。一個有大量規(guī)則和事實的系統(tǒng)可能會很多規(guī)則被滿足,這些規(guī)則被稱為具有沖突性。 RETE算法提供了專家系統(tǒng)的一個高效實現(xiàn)。網(wǎng)絡(luò)中非根結(jié)點的類型有 1input 結(jié)點(也稱為 alpha結(jié)點)和 2input 結(jié)點(也稱為 beta 結(jié)點)兩種。存儲區(qū)儲存的最小單位是工作存儲區(qū)元素( Working Memory Element,簡稱 WME),WME 是為事實建立的元素,是用于和非根結(jié)點代表的模式進行匹配的元素。 第 1 頁 共 1 頁 機密 – 未經(jīng)允許不得擴散 紅帽軟件中國 3 Drools 實戰(zhàn) 安裝 Eclipse 開發(fā)插件 Drools 提 供 了 基 于 eclipse 的 IDE ,讀者可以到 Drools 官網(wǎng)( Drools Eclipse Workbench 插件到本地,然后解壓該壓縮包。分別填入 Runtime 的名稱和Drools 的安裝路徑 (bin)。 Hello Drools 閑話少說,下面我們利用 Eclipse 插件來建立第一個 Drools 項目。如下圖: 第 3 頁 共 3 頁 機密 – 未經(jīng)允許不得擴散 紅帽軟件中國 最后, Eclipse 就會新建一個帶有規(guī)則文件例子的 Drools 項目。 我們再看看這文件里面的內(nèi)容吧。解析器對文件中規(guī)則文法的正確性進行檢查并為 descr 建立一個中間結(jié)構(gòu),在 AST 中的 descr 代表 規(guī)則的描述。 第 5 頁 共 5 頁 機密 – 未經(jīng)允許不得擴散 紅帽軟件中國 RuleBase 是運行時組件,包含一個或多個 Package。向 Working Memory 中設(shè)置對象的工作可能要在建立了一個或多個激活的規(guī)則后才結(jié)束。 ( Goodbye cruel world )。 第 7 頁 共 7 頁 機密 – 未經(jīng)允許不得擴散 紅帽軟件中國 end 我們可以看到。然后,該事實再去匹配下一個規(guī)則,直到匹配完成或者被 retract語句 從 Working Memory中移除為止。在 Working Memory中 Message被封裝成一個事實( Fact)。 ,規(guī)則“ GoodBye” 匹配成功。 規(guī)則語言 規(guī)則文件 規(guī)則文件通常是以 drl 擴展名結(jié)尾。 規(guī)則文件的完整結(jié)構(gòu)是 : package packagename imports globals 第 8 頁 共 8 頁 機密 – 未經(jīng)允許不得擴散 紅帽軟件中國 functions queries rules 這些元素的聲明順序不重要,處理 package的名稱如果聲明的話必須是規(guī)則文件的第一個元素。ATTRIBUTES(通常是可選項)指 出規(guī)則的行為表現(xiàn)。任何在 LHS中綁定的變量可以在 RHS中使用。接下來的列表是你應(yīng)該在規(guī)則內(nèi)容中避免使用的保留 字(如果使用了,大多數(shù)時候可以正常工作,但有時會引起解析錯誤)。 注釋 你可以使用 39。建立單行注釋。包的成員應(yīng)該彼此有一定聯(lián)系,如人力資源的規(guī)則包。但是不可能將不同名稱的 Package 的內(nèi)容放入同樣的 Package 資源下。注意,包必須有一個名稱空間,并且使用標準的 java 約定進行命名;例如包名不允許空格,不像規(guī)則名稱可以有空格。對于任何要用在規(guī)則中的對象,你需要指定完整的路徑和類型名。要注意的是在 中(這里與 中不同), expander聲明強制工具提供你的上下文環(huán)境并且避免錯誤報告,但是 API 允 許用編程方式附加 DSL 模板,如果 expander 沒有聲明在源文件中。 Global 不會插入到 Working Memory 中,因此當全局變量發(fā)生改變時,引擎不會得知;因為這個原因,全局變量不能用在條件約束上,除非這個值不會發(fā)生改變。全局變量不會被插入Working Memory,因此它們從來 不會參與推論,如果全局變量是一個不變的常量,則只在 LHS中使用它們。 為了使用全局變量,你必須: 在規(guī)則文件中聲明全局變量并使用它,如: global myGlobalList。 WorkingMemory wm = ()。隨著新的‘ from’元素現(xiàn)在可以傳遞一個 Hibernate Session 對象作為全局變量,允許‘ from’通過一個命名的Hibernate 查詢中將數(shù)據(jù)拉進來。 然后 在規(guī)則 的推 論中 ,你就 可以 使用 類似(number,message)這樣的調(diào)用。 Function 相對于正常的 java 類,函數(shù)是在你的規(guī)則代碼中放置語言代碼的方法。 典型的函數(shù)聲明如下所示: function String hello(String name) { return Hello +name+!。 作為使用函數(shù)的另一種方法,你可以在輔助類中使用一個靜態(tài)方法: ()?!?when”之所以取代“ if”是因為“ if”通常是程序執(zhí)行過程中的一部分,在某一個特定的時間點它對條件進行檢查。如果你新增的 DRL 包含一個 存在于 Packaage 中的規(guī)則,那新的規(guī)則將替換舊規(guī)則。規(guī)則不能進行嵌套。要從 Drools 中獲得最大的收獲,你必須十分的了解每一個屬性。優(yōu)先級數(shù)字高的規(guī)則會比優(yōu)先級低的規(guī)則先執(zhí)行 。 activationgroup 默認值 : N/A 類型 : String 在同名 activationgroup 中的規(guī)則將以互斥的方式激發(fā)。當前兩種語言有效, Java 和MVEL。 duration 默認值 : N/A 類型 : long Duration 指 出規(guī)則將在指定的一段時間后激發(fā),如果那個時候規(guī)則的激活條件還是處于 true的情況下。 第 18 頁 共 18 頁 機密 – 未經(jīng)允許不得擴散 紅帽軟件中國 Example: Rule Syntax Overview Example rule no CEs when then action* end 在內(nèi)部被重寫為 : rule no CEs when eval( true ) then action* end 條件元素工作在一種或多種模式下(將在下面介紹)。下面的實體關(guān)系圖給出了一個構(gòu)建模式約束的不同部分以及它們是如何一起工作的一個概要圖,每一個都會使用藍圖和例子詳細說明。 第 20 頁 共 20 頁 機密 – 未經(jīng)允許不得擴散 紅帽軟件中國 這意味著模式將匹配 working memory 中的每一個 Cheese 對象。一個約束可以是字段約束,內(nèi)部 Eval(在 中稱為斷言)或一個約束組。39。 Figure . Constraints Figure . Constraint Figure . Group Constraint 逗號 (,)被用來分隔約束組,它隱含著‘ and’的連接語法。39。amp。 連接符按照以下順序求值,從高到低: amp。amp。 要特別注意的是, 39。和逗號雖然有著同樣的語義,但是逗號不能被包含在復(fù)雜的約束表達式中。amp。and39。 第 22 頁 共 22 頁 機密 – 未經(jīng)允許不得擴散 紅帽軟件中國 Figure . prefixAnd Example . prefixAnd (and Cheese( cheeseType : type ) Person( favouriteCheese == cheeseType ) ) Example . implicit root prefixAnd when Cheese( cheeseType : type ) Person( favouriteCheese == cheeseType ) 中綴‘ and’與圓括號在一起進行顯式的分組。 Figure . infixAnd Example . infixAnd Cheese( cheeseType : type ) and Person( favouriteCheese == cheeseType ) //infixAnd (Cheese( cheeseType : type ) and (Person( favouriteCheese == cheeseType ) or Person( favouriteCheese == cheeseType ) ) //infixAnd with grouping ‘or’ ‘ or’條件元素用來組織其它條件元素。每個子規(guī)則可以像正常的規(guī)則一樣激活和激發(fā),在子規(guī)則直接沒有交互的行為 —— 這可能給新的規(guī)則編制者帶來很大的混淆。 Example . or with binding pensioner : (or Person( sex == f, age 60 ) Person( sex == m, age 65 ) ) 也允許顯式綁定每一個模式。 最好的考慮方法是將 OR 條件元素看成產(chǎn)生兩個額外規(guī)則的快捷方式。使用 eval 可以減少規(guī)則的聲明情況以及用一個低性能的引擎獲得結(jié)果。普通的字段約束中不能調(diào)用 drools 中定義的函數(shù)。是一階邏輯的存在判斷量詞,檢查在 Working Memory 中某些 Fact 的存在性。and39。將 exist理解為至少有一個 … 。 infix used here as ony two patterns ‘forall’ Figure . forall Forall 條件元素在 Drools 中完全支持一階邏輯。) Bus( this == $bus, color = 39。 Example . Single Pattern Forall rule All Buses are Red when forall( Bus( color == 39。 ‘from’ Figure . from ‘ from’條件元素允許你為模式聲明一個推論的來源。一個常見的例子是使用 hibernate 命名查詢從數(shù)據(jù)庫中返回需要的數(shù)據(jù)。下面是同樣的結(jié)果,但是用“ .”來 實現(xiàn)。例如,如果我們希望規(guī)則對訂單中的每一個項目增加 10%的折扣,可以如下: rule apply 10% discount to all items over US$ 100,00 in an order when $order : Order() $item : OrderItem( value 100 ) from $ then apply discount to $item end 上面的例子將導致每一次遇到給定訂單的任一個項目的值大于 100 時都激發(fā)規(guī)則。下面是簡單的例子: import rule Raise priority if system has more than 3 pending alarms when $system : System() $alarms : ArrayList( size = 3 ) from collect( Alarm( system == $system, status == 39。 Collect條件元素結(jié)果模式可以接受任何實現(xiàn)了 造函數(shù)的類。 Both source and result patterns can be constrained as any other pattern.) 在 collect 條件元素前的綁定變量中的元素是在源與結(jié)果模式的范圍內(nèi),你可以使用它們限制你的源和結(jié)果模式。Paris
點擊復(fù)制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1