普通規則
打開決策集編輯器,點擊工(gōng)具(jù)欄上“添加規則”按鈕就可(kě)以在下面的工(gōng)作(zuò)區(qū)裏添加了一個普通的規則,如下图所示:
一個普通規則主體(tǐ)是由如果、那麽、否則構成,點擊規則名(míng)可(kě)以對規則名(míng)進行修改,修改完成後鼠标點擊頁(yè)簽處離開焦點就完成了規則名(míng)的修改确認;點擊“添加屬性”鏈接可(kě)以為(wèi)當前規則定義相關屬性。無論是普通規則還是循環規則都支持下面這些屬性。
中(zhōng)文(wén)屬性名(míng) | 值類型 | 描述 |
---|---|---|
優先級 | 數字 | 當有(yǒu)多(duō)個規則滿足條件時,這個值用(yòng)來決定這些滿足條件規則中(zhōng)動作(zuò)的執行順序,值越大,執行順序越靠前。如不設置這個值,那按條件滿足的順序執行,也就是說如果不配置優先級屬性規則的執行順序是不确定的。 |
生效日期 | 字符串 | 當規則設置了生效日期,表示這個規則隻有(yǒu)在當前系統日期為(wèi)大于等于生效日期時才會生效,否則即使條件滿足也不會觸發當前規則,如不設置,則不會對規則執行産(chǎn)生影響。該屬性的值要求是一個日期格式的字符串,格式為(wèi):yyyy-MM-dd HH:mm:ss |
失效日期 | 字符串 | 與生效日期對應,當規則設置失效日期時,一旦當前系統日期大于或等于失效日期,即使條件滿足規則也不會觸發執行,如不設置,則不會對規則執行産(chǎn)生影響。屬性的值要求是一個日期格式的字符串,格式為(wèi):yyyy-MM-dd HH:mm:ss |
是否啓用(yòng) | 布爾值 | 默認值為(wèi)true,也就是啓用(yòng)當前規則;如設置為(wèi)false,即使條件滿足規則也不會觸發執行,如不設置,則不會對規則執行産(chǎn)生影響。 |
允許調試信息輸出 | 布爾值 | 默認為(wèi)false,表示不輸出調試信息,設置為(wèi)true後,規則在執行時會在控制台輸出規則條件的匹配信息、規則動作(zuò)的執行信息;如果規則計算過程出現異常,還會在控制台輸出計算出現異常的位置,以便于我們快速定義規則錯誤位置。需要注意的是,如果項目的urule.debug屬性設置為(wèi)false時,規則的這個屬性會被覆蓋,也就是說即使設置為(wèi)true也不會輸出任何信息。 |
互斥組 | 字符串 | 系統會自動将此屬性相同的規則劃為(wèi)一組,且這個組中(zhōng)隻有(yǒu)一個規則會執行,待執行的規則如設置了優先級,則優先級最高的規則執行,否則随機;需要注意的是,互斥組屬性僅在當前規則集文(wén)件默認模式下有(yǒu)用(yòng),在順序模式下互斥組屬性将不起作(zuò)用(yòng)。 |
執行組 | 字符串 | 系統會自動将此屬性相同的規則劃為(wèi)一組,默認情況下,引擎不會執行這個組裏的規則,需要我們在定義規則動作(zuò)時利用(yòng)系統内置的函數顯示的指定要激活執行的執行組名(míng),這樣系統才會嘗試匹配并執行組裏的規則。 |
在使用(yòng)過程當中(zhōng),如果一個規則配置了執行組,也配置了互斥組屬性,那麽這個規則對應的執行組屬性被激活後,其中(zhōng)配置了互斥組屬性的規則将按互斥組屬性執行原則執行。
在決策集編輯器工(gōng)具(jù)欄上名(míng)為(wèi)配置的按鈕菜單下有(yǒu)一個用(yòng)于控制當前文(wén)件中(zhōng)所有(yǒu)向導式規則日志(zhì)輸出的開關按鈕,它的默認為(wèi)關閉狀态,如果我們希望打開當前文(wén)件中(zhōng)所有(yǒu)規則的日志(zhì)輸出功能(néng),那麽隻需要在這裏将其打開即可(kě);當然也可(kě)以通過規則中(zhōng)的“允許日志(zhì)輸出”屬性來單獨設置某個規則是否輸出日志(zhì),它可(kě)以覆蓋配置按鈕下的日志(zhì)輸出選項。
規則名(míng)及屬性定義完成後,接下來就可(kě)以開始配置規則的主體(tǐ)部分(fēn),首先是“如果”部分(fēn),在如果部分(fēn)當中(zhōng)可(kě)以添加若幹條件,添加完條件後,就可(kě)以通過鼠标點擊以向導方式設置條件,如下图:
對于一個具(jù)體(tǐ)的條件來說,我們可(kě)以将其分(fēn)為(wèi)三個部分(fēn),分(fēn)别是條件左邊部分(fēn)、比較操作(zuò)符以及條件右邊部分(fēn)。條件左邊部分(fēn),如上图所示我們可(kě)選擇的有(yǒu)變量、參數或者方法或函數,當然這相應的需要我們導入相關的變量庫、參數庫以及方法庫;對于操作(zuò)符目前URule Pro當中(zhōng)提供了下面這些操作(zuò)比較符,如下图所示:
這些操作(zuò)比較符基本已涵蓋我們業務(wù)當中(zhōng)所有(yǒu)類型的比較操作(zuò)。選擇完比較操作(zuò)符後,我們就可(kě)以來設置條件右邊部分(fēn)。條件右邊部分(fēn)相比左邊,可(kě)選擇的值類型會更多(duō)一些,如下图:
一旦選擇某種類型值之後,我們就可(kě)以進入下一步操作(zuò),同時在URule Pro當中(zhōng)無論條件左值還是條件右值都可(kě)以進行無限多(duō)級簡單的加、減、乘、除等運算操作(zuò),如下图所示:
注意:上图中(zhōng)諸如 >、<、== 之類的運算操作(zuò)返回值為(wèi)一個布爾(true/false)類型的值,這點與+、-、x、÷、%之類運算符産(chǎn)生的結果不同。
在URule Pro當中(zhōng),對于所有(yǒu)的菜單項,通過點擊菜單項上的配置按鈕,可(kě)以設置菜單項個數大于多(duō)少個時出現過濾框,默認是菜單項大于15個時就會出現,使用(yòng)時,可(kě)以根據自己的喜好對出現過濾框的時機進行定義。
在配置條件時,需要我們把之前定義好的變量庫文(wén)件、參數庫文(wén)件、常量庫文(wén)件、動作(zuò)庫文(wén)件導入進來。對于條件來說,可(kě)以是多(duō)個條件,也可(kě)以是多(duō)個複合條件組合,這樣都是通過鼠标點擊操作(zuò)完成,這裏就不再贅述。
條件配置完成後,可(kě)以為(wèi)“那麽”或“否則”部分(fēn)添加動作(zuò),那麽部分(fēn)的動作(zuò)隻有(yǒu)條件滿足時才會執行,如果未配置條件,那就意味着無條件執行,也就是說未配置條件會直接執行那麽部分(fēn)的動作(zuò);否則部分(fēn)的動作(zuò)在條件不滿足時執行。不加動作(zuò)意味着什麽也不幹,動作(zuò)可(kě)以有(yǒu)多(duō)個,多(duō)個動作(zuò)添加完成後可(kě)以通過拖曳改變順序。
目前在URule Pro當中(zhōng)支持的動作(zuò)類型有(yǒu)三種,分(fēn)别是:打印内容到控制台、變量賦值以及執行方法或函數,如下图所示:
打印内容到控制台其實就是将我們需要的信息打印輸出到日志(zhì)中(zhōng),我們可(kě)以在日志(zhì)中(zhōng)看到具(jù)體(tǐ)的輸出内容,輸出内容可(kě)以是一個普通的輸入值,也可(kě)以是一些複雜的值類型或它們的加、減、乘、除組合,及添加括号定義算術運行優先級。
變量賦值也就是給當前導入的變量庫或參數庫的值進行賦值,值類型可(kě)以是一個普通的輸入值,也可(kě)以是一些複雜的值類型或它們的加、減、乘、除組合,及添加括号定義算術運行優先級。
最後一種類型的動作(zuò)是執行方法或函數,要選擇執行的方法或函數,前提是我們必須方法所在的動作(zuò)庫文(wén)件導入到當前規則文(wén)件當中(zhōng),否則就看不到要執行的方法,一旦選擇執行方法後,如果當前方法當中(zhōng)包含參數,那麽我們也需要選擇相應的值為(wèi)參數賦值,同樣參數的值可(kě)以是一個普通的輸入值,也可(kě)以是一些複雜的值類型或它們的加、減、乘、除組合。動作(zuò)的具(jù)體(tǐ)配置都是基于鼠标點擊操作(zuò)的,比較簡單,這裏不再贅述。
在向導式規則編輯器中(zhōng),可(kě)以通過鼠标拖曳來改變那麽或否則部分(fēn)的動作(zuò)順序,同時,對于多(duō)個規則文(wén)件,也可(kě)以通過懸浮于右上方的規則導航以拖曳方式來改變它們的顯示順序。