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

正文內容

drools應用手冊(編輯修改稿)

2024-12-13 12:42 本頁面
 

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