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

正文內(nèi)容

drools應(yīng)用手冊(cè)(編輯修改稿)

2024-12-13 12:42 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 第 9 頁 共 9 頁 機(jī)密 – 未經(jīng)允許不得擴(kuò)散 紅帽軟件中國(guó) ? then ? end ? null ? and ? or ? not ? exists ? collect ? accumulate ? from ? forall ? true ? false ? eval 下面的列表是你在編寫規(guī)則時(shí)應(yīng)當(dāng)盡量避免使用的,但是如果你不得不在某些地方使用它們,語法分析器也可以正常工作。 ? package ? function ? global ? import ? template ? attributes ? enabled ? salience ? duration ? init ? action ? reverse ? result ? contains ? excludes 第 10 頁 共 10 頁 機(jī)密 – 未經(jīng)允許不得擴(kuò)散 紅帽軟件中國(guó) ? memberOf ? matches ? in ? dateeffective ? dateexpires ? noloop ? autofocus ? activationgroup ? agendagroup ? dialect ? ruleflowgroup 當(dāng)然,你可以將它們用作方法名稱 的一部分,如 notSomething()—— 這完全沒有問題。 注釋 你可以使用 39。39。 或者 39。//39。建立單行注釋。語法分析器會(huì)自動(dòng)忽略注釋的內(nèi)容。例如: // this is a single line ment. this is a single line ment. 多行注釋使用 /* */符號(hào)。 /* this is a multiline ment in the left hand side of a rule */ Package 包是規(guī)則以及其它相關(guān)結(jié)構(gòu)的一個(gè) 集合,如 import 和 global。包的成員應(yīng)該彼此有一定聯(lián)系,如人力資源的規(guī)則包。一個(gè)包通過名稱空間描繪,這樣很好的保持了一組規(guī)則的獨(dú)立性。包名也就是名稱空間名,與文件或目錄名稱無關(guān)。 運(yùn)行時(shí)的規(guī)則包可以從多個(gè)規(guī)則源碼處組裝,當(dāng)組裝完成時(shí),所有的規(guī)則被放入一個(gè)頂級(jí)的Package 配置中。但是不可能將不同名稱的 Package 的內(nèi)容放入同樣的 Package 資源下。在一個(gè)RuleBase 上可以建立多個(gè) Package。通常情況是將所有同名 Package 下的規(guī)則放在一個(gè)文件中(這樣它就是完全自包含的)。 下面的藍(lán)圖 顯示一個(gè)包中可能包含的所有組件。注意,包必須有一個(gè)名稱空間,并且使用標(biāo)準(zhǔn)的 java 約定進(jìn)行命名;例如包名不允許空格,不像規(guī)則名稱可以有空格。除了 package 和 expander 第 11 頁 共 11 頁 機(jī)密 – 未經(jīng)允許不得擴(kuò)散 紅帽軟件中國(guó) 標(biāo)記必須放在文件的頂部,在其它規(guī)則之前,其它關(guān)鍵字元素的使用沒有任何順序要求,可以使用在文件的任何地方。分號(hào)是可選用的。 Import Import標(biāo)記就像 java中的含義一樣。對(duì)于任何要用在規(guī)則中的對(duì)象,你需要指定完整的路徑和類型名。 Drools 從同名的 java 包中自動(dòng)導(dǎo)入類。 Expander Expander 標(biāo)記是可選的,用來指定 DSL 配置(通常保存在獨(dú)立文件中)。這為解析器提供了如何理解你自定義的規(guī)則語言。要注意的是在 中(這里與 中不同), expander聲明強(qiáng)制工具提供你的上下文環(huán)境并且避免錯(cuò)誤報(bào)告,但是 API 允 許用編程方式附加 DSL 模板,如果 expander 沒有聲明在源文件中。 Global 全局變量 Global是全局變量。如果多個(gè)包定義了同樣名稱的全局變量,它們必須使用同樣的類型,并且全部指向同一個(gè)全局值。全部變量通常用來返回?cái)?shù)據(jù),如一個(gè)動(dòng)作的記錄,獲 得提供數(shù)據(jù)或服務(wù)給規(guī)則使用。 Global 不會(huì)插入到 Working Memory 中,因此當(dāng)全局變量發(fā)生改變時(shí),引擎不會(huì)得知;因?yàn)檫@個(gè)原因,全局變量不能用在條件約束上,除非這個(gè)值不會(huì)發(fā)生改變。在條件約束中錯(cuò)誤使用 第 12 頁 共 12 頁 機(jī)密 – 未經(jīng)允許不得擴(kuò)散 紅帽軟件中國(guó) 全局變量會(huì)導(dǎo)致意想不到的結(jié)果。 Globals 是全局的變量。他們常用來將應(yīng)用程序的對(duì)象提供給規(guī)則使用,通常是將數(shù)據(jù)或服務(wù)提供給規(guī)則使用(指定使用在規(guī)則推論中的應(yīng)用服務(wù)),從規(guī)則處返回?cái)?shù)據(jù)(如日志或在規(guī)則推論中增加的值)或者從規(guī)則中對(duì)應(yīng)用進(jìn)行回調(diào)。全局變量不會(huì)被插入Working Memory,因此它們從來 不會(huì)參與推論,如果全局變量是一個(gè)不變的常量,則只在 LHS中使用它們。引擎不會(huì)通知和跟蹤全局變量的值變更。不正確的在約束中使用全局變量會(huì)帶來讓人驚訝的結(jié)果 —— 糟糕的驚訝,就像醫(yī)生對(duì)你的 X光片說“那里有些有趣的東西”一樣。 如果多個(gè) Package 聲明了同樣的全局變量,那么它們必須有相同的類型,并指向同一個(gè)全局變量。 為了使用全局變量,你必須: 在規(guī)則文件中聲明全局變量并使用它,如: global myGlobalList。 rule Using a global when eval( true ) then ( Hello World )。 end 在 working memory 上設(shè)置全局變量的值。最好是在將 fact 插入 working memory 之前設(shè)置完所有全局變量,如: List list = new ArrayList()。 WorkingMemory wm = ()。 ( myGlobalList, list )。 注意,這些全局變量只 是從你的應(yīng)用傳到 Working Memory 的對(duì)象的實(shí)例。這意味著你可以傳入任何你想要的對(duì)象:你可以傳遞一個(gè)服務(wù)的位置代理,或者可能是一個(gè)服務(wù)本身。隨著新的‘ from’元素現(xiàn)在可以傳遞一個(gè) Hibernate Session 對(duì)象作為全局變量,允許‘ from’通過一個(gè)命名的Hibernate 查詢中將數(shù)據(jù)拉進(jìn)來。 可能的一個(gè)例子是 Email 服務(wù)。在你的規(guī)則引擎的集成代碼中,你獲得你的 服務(wù)對(duì)象,并且將它引入到 working memory。在 DRL文件中,聲明你已經(jīng)有了一個(gè) EmailService 類型的全局 變量 ,并 給它 一個(gè)名 稱為 。 然后 在規(guī)則 的推 論中 ,你就 可以 使用 類似(number,message)這樣的調(diào)用。 第 13 頁 共 13 頁 機(jī)密 – 未經(jīng)允許不得擴(kuò)散 紅帽軟件中國(guó) 全局變量不是被設(shè)計(jì)用來在規(guī)則之間共享數(shù)據(jù)的,并且它們永遠(yuǎn)都不應(yīng)該用于這個(gè)目的。規(guī)則經(jīng)常對(duì) working memory 進(jìn)行推論和刪除 fact,因此如果你想在規(guī)則間共享數(shù)據(jù),將數(shù)據(jù)插入working memory 就可以。 從規(guī)則中設(shè)置全局變量的值是非常不合適的,我們建議你在應(yīng)用程序中通過 working memory的接口設(shè)置這個(gè)值。 Function 相對(duì)于正常的 java 類,函數(shù)是在你的規(guī)則代碼中放置語言代碼的方法。它們不可能做任何超過你可以在幫助類(在 java中定義,被設(shè)置入規(guī)則的 Working Memory 中的類)中做到的事情(實(shí)際上,編譯器為后面的場(chǎng)景產(chǎn)生幫助類,那樣幫助不大)。主要使用函數(shù)的優(yōu)點(diǎn)是可以將邏輯保存在一個(gè)地方,并且你可以在需要的時(shí)候改變函數(shù)(這樣做各有優(yōu)缺點(diǎn))。函數(shù)最大的用處是被規(guī)則的推論( then)部分中的行為所調(diào)用,特別是當(dāng)一個(gè)行為操作需要反復(fù)被調(diào)用時(shí) —— 如發(fā)送郵件。 典型的函數(shù)聲明如下所示: function String hello(String name) { return Hello +name+!。 } 注意 function 關(guān)鍵字的使用,雖然它并不真的是 java 的一部分。傳入 function 的參數(shù)就像普通的方法一樣(如果不需要參數(shù)可以為空)。返回值的概念也和普通方法相同。 作為使用函數(shù)的另一種方法,你可以在輔助類中使用一個(gè)靜態(tài)方法: ()。 支持靜態(tài)方法導(dǎo)入,因此你只需要做下面的事情: import static 對(duì)于上面的情況,要使用函數(shù)只需要在推論或 代碼塊中通過函數(shù)名稱來調(diào)用它,例如: rule using a static function when eval( true ) then ( hello( Bob ) )。 end 規(guī)則 第 14 頁 共 14 頁 機(jī)密 – 未經(jīng)允許不得擴(kuò)散 紅帽軟件中國(guó) 規(guī)則指定“ when”作為一系列條件的集合(稱為 LHS),然后在“ then”中指定一系列操作(稱為 RHS)。一個(gè)用戶經(jīng)常問的問題是“為什么使用 when代替 if”。“ when”之所以取代“ if”是因?yàn)椤?if”通常是程序執(zhí)行過程中的一部分,在某一個(gè)特定的時(shí)間點(diǎn)它對(duì)條件進(jìn)行檢查。而“ when”代表著它不約束在特定的評(píng)估順序或時(shí)間點(diǎn),在引擎生命周期的任何時(shí)候“ when”都可以執(zhí)行。 規(guī)則必須有一個(gè)名稱,并且在一個(gè)包中是唯一的。如果你在同一個(gè) DRL中定義同名規(guī)則兩次,在裝載時(shí)將產(chǎn)生一個(gè)錯(cuò)誤。如果你新增的 DRL 包含一個(gè) 存在于 Packaage 中的規(guī)則,那新的規(guī)則將替換舊規(guī)則。如果規(guī)則名稱中有空格,需要使用雙引號(hào)包含(好習(xí)慣是定義名稱時(shí)都使用雙引號(hào))。 特性是可選的,最好保持每行一條,如下描述: 規(guī)則的 LHS 部分跟隨 when關(guān)鍵字( when 最好在單獨(dú)的一行上), RHS 部分跟隨 then 關(guān)鍵字(最好也單獨(dú)一行)。規(guī)則使用 end 關(guān)鍵字結(jié)尾。規(guī)則不能進(jìn)行嵌套。 Example 規(guī)則語法 rule name attribute* when conditional element* then action* end Example 規(guī)則示例 第 15 頁 共 15 頁 機(jī)密 – 未經(jīng)允許不得擴(kuò)散 紅帽軟件中國(guó) 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.)。 (true)。 end 規(guī)則 屬性 規(guī)則屬性提供了影響規(guī)則行為的一種聲明式的方法,有些十分簡(jiǎn)單,而另一些是復(fù)雜子系統(tǒng)的一部分,如規(guī)則流。要從 Drools 中獲得最大的收獲,你必須十分的了解每一個(gè)屬性。 noloop 第 16 頁 共 16 頁 機(jī)密 – 未經(jīng)允許不得擴(kuò)散 紅帽軟件中國(guó) 默認(rèn)值 : false 類型 : Boolean 當(dāng)規(guī)則在推論中對(duì) fact進(jìn)行修改后,可能會(huì)導(dǎo)致該規(guī)則的重新激活,引起遞歸。設(shè)置 noloop為 true 可以阻止該規(guī)則被再次激活。 salience 默認(rèn)值 : 0 類型 : integer 每一個(gè)規(guī)則有一個(gè)整數(shù)類型的優(yōu)先級(jí)屬性,默認(rèn)為 0,這個(gè)整數(shù)可以使正負(fù)數(shù)。優(yōu)先級(jí)數(shù)字高的規(guī)則會(huì)比優(yōu)先級(jí)低的規(guī)則先執(zhí)行 。 agendagroup 默認(rèn)值 : MAIN 類型 : String Agenda group 允許用戶對(duì)分隔 Agenda 執(zhí)行區(qū)提供更多的控制。只有在具有焦點(diǎn)的 agenda group 中的規(guī)則才能夠激發(fā)。 autofocus 自動(dòng)獲取焦點(diǎn) 默認(rèn)值 false 類型 : Boolean 當(dāng)規(guī)則的 autofocus 屬性為 true時(shí),如果該規(guī)則符合激活條件,則該規(guī)則所在 agendagroup自動(dòng)獲得焦點(diǎn),允許規(guī)則激發(fā)。 activationgroup 默認(rèn)值 : N/
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1