普通決策表
打開一個項目,在決策表節點中(zhōng)點擊右鍵,在彈出的菜單中(zhōng)選擇創建決策表,輸入文(wén)件名(míng)後就可(kě)以創建一個普通決策表文(wén)件,如下图所示:
可(kě)以看到,在決策表當中(zhōng),同樣需要我們導入需要使用(yòng)的變量庫、參數庫、常量庫及動作(zuò)庫。
和規則集中(zhōng)的規則一樣,可(kě)以為(wèi)決策表添加若幹屬性,但不同的是決策表中(zhōng)可(kě)添加的屬性隻有(yǒu)五個,其含義和作(zuò)用(yòng)與決策集中(zhōng)的規則相同,這裏不再贅述。
一旦為(wèi)決策表定義了屬性,那麽這些屬性将會被應用(yòng)到決策表中(zhōng)定義的每個規則上。
實際使用(yòng)當中(zhōng),我們可(kě)能(néng)會将若幹個決策表或若幹個決策表與若幹個決策集放在一個知識包中(zhōng)使用(yòng),這個時候如果沒有(yǒu)使用(yòng)決策流來對它們的執行順序進行編排的話,那麽優先級屬性的作(zuò)用(yòng)就顯現出來,通過定義優先級屬性,可(kě)以實現若幹個決策表文(wén)件與若幹個決策集文(wén)件放在一個知識包中(zhōng)執行順序的編排,也就是優先級的值越大,執行越靠前。
URule Pro中(zhōng)的決策表,整體(tǐ)可(kě)分(fēn)為(wèi)左右兩個部分(fēn),分(fēn)别是條件列部分(fēn)與動作(zuò)列部分(fēn),它們之間以一較粗的灰黑色線(xiàn)分(fēn)隔,該線(xiàn)左邊為(wèi)條件列,右邊則為(wèi)動作(zuò)列。在導入好相關的變量庫或參數庫後,那就可(kě)以在條件列的列頭上右鍵,通過右鍵菜單選擇當前條件要綁定的變量或參數,如下图所示:
在URule Pro當中(zhōng),對于所有(yǒu)的菜單項,通過點擊菜單項上的配置按鈕,可(kě)以設置菜單項個數大于多(duō)少個時出現過濾框,默認是菜單項大于15個時就會出現,使用(yòng)時,可(kě)以根據自己的喜好對出現過濾框的時機進行定義。
要設置決策表的條件,我們必須先為(wèi)條件列設置好與之綁定的變量或參數,否則是無法設置當前條件列下單元格中(zhōng)的條件的。URule Pro中(zhōng)的決策表提供了三種類型的動作(zuò)列,分(fēn)别是:賦值動作(zuò)列、執行方法動作(zuò)列以及控制台輸出動作(zuò)列。
所謂的賦值動作(zuò)列,就是指在條件列相關對應條件滿足後對某個目标變量或參數進行賦值,同樣在設置賦值動作(zuò)列時,必須先插入一個賦值動作(zuò)列,然後選擇與當前綁定的參數或變量名(míng)稱,最後才能(néng)在當前列對應的單元格中(zhōng)輸入具(jù)體(tǐ)值,在對應的條件滿足時為(wèi)目标變量或參數賦值,如下图所示:
執行方法動作(zuò)列就是在這個列當中(zhōng),在相關條件滿足時執行指定的方法。執行方法動作(zuò)列與賦值動作(zuò)列不同,我們需要做的就是添加一個執行方法動作(zuò)列,而不用(yòng)将該列與任何變量、參數或方法綁定,添加好執行方法動作(zuò)列後,就可(kě)以在該列對應的單元格中(zhōng)添加具(jù)體(tǐ)的要執行的方法即可(kě),如图所示:
控制台輸出動作(zuò)列,就是将該列對應的單元格裏設置的内容直接輸出日志(zhì)當中(zhōng),其效果與決策集文(wén)件中(zhōng)定義的打印内容到控制台效果完全一緻。
添加好條件列并配置好與之綁定的參數和變量後,接下來就可(kě)以在該列對應的單元格添加具(jù)體(tǐ)的條件,添加條件方法比較簡單,在目标單元格右鍵,在彈出的菜單中(zhōng)選擇“配置條件”項即可(kě)。
在彈出的配置條件窗口中(zhōng),可(kě)以看到,這個配置條件的窗口采用(yòng)的是向導式條件配置方式,與決策集中(zhōng)條件配置方式基本一緻,不同的地方是決策表中(zhōng)向導式條件配置不能(néng)添加“聯合條件”,同時對于單個條件不用(yòng)指定條件左值(這是因為(wèi)當前條件列的列頭已與具(jù)體(tǐ)的參數或變量綁定,這個綁定的參數或變量就是其下所有(yǒu)條件單元格條件的左值),如下图所示:
對于賦值動作(zuò)列,在綁定好要賦值的參數或變量後,就可(kě)以在該列對應的單元格中(zhōng)選擇輸入具(jù)體(tǐ)的值,可(kě)以看到在對賦值動作(zuò)列對應的單元格設置值時,其可(kě)選值的範围與操作(zuò)方式與“向導式規則”中(zhōng)條件右值的設置方式完全相同。
對于執行方法動作(zuò)列,在設置其下具(jù)體(tǐ)單元格中(zhōng)要執行的方法時,我們需要先導入包含已定義好方法的動作(zuò)庫文(wén)件,否則是無法操作(zuò)的,一旦導入動作(zuò)庫文(wén)件,我們就可(kě)以設置執行方法動作(zuò)列下對應的單元格中(zhōng)需要執行的方法:
在設置具(jù)體(tǐ)要執行的方法時,與決策集中(zhōng)動作(zuò)設置中(zhōng)執行方法部分(fēn)的設置完全相同。
對于控制台輸出動作(zuò)列,其設置方式與賦值動作(zuò)列基本一緻,唯一不同的地方是它不需要設置與該列綁定的參數或變量,因為(wèi)它作(zuò)用(yòng)就是将當前列單元格中(zhōng)定義的内容直接輸出到日志(zhì)中(zhōng),所以一般用(yòng)于調試。
在決策表的單元格中(zhōng),無論是條件部分(fēn)單元格還是動作(zuò)部分(fēn)單元格,如果某些單元格内容相同或類似,那麽可(kě)以在源單元格中(zhōng)右鍵,從菜單裏選擇複制,到目标單元格粘貼即可(kě),這樣就可(kě)以實現決策表内容的快速編輯。 後面要介紹的複雜決策表、評分(fēn)卡之類都可(kě)以采用(yòng)這種複制粘貼機制。
複制粘貼時有(yǒu)一點需要注意,那就是複制的條件部分(fēn)隻能(néng)粘貼到條件單元格中(zhōng),動作(zuò)單元格也是這樣
互斥組的支持
在 v4.2.3+
的版本普通決策表支持了互斥組的設置,設置了互斥組後,整個決策表從上到下計算時,遇到命中(zhōng)行後就結束,後續條件行的決策項将不會執行。
另外,結合互斥組可(kě)以實現決策表中(zhōng)否則的功能(néng)效果,如下图所示:
從Excel中(zhōng)導入決策表
URule Pro中(zhōng)的決策表支持從外部的Excel中(zhōng)導入,在Excel中(zhōng)按要求定義好決策表,然後導入即可(kě)使用(yòng)。打開決策表編輯器,可(kě)以看到工(gōng)具(jù)欄上有(yǒu)“導入Excel”按鈕,點擊該按鈕在彈出的窗口中(zhōng)選擇要導入的Excel文(wén)件即可(kě)。如下图所示Excel:
導入後決策表效果如下:
我們來看下Excel中(zhōng)如何定義決策表(下載這個Excel)。
Excel中(zhōng)定義決策表,與URule Pro中(zhōng)實際的決策表區(qū)别不大,也分(fēn)為(wèi)條件列和動作(zuò)列,我們先來看看條件列如何定義。
條件
對于條件列的列頭支持變量及參數兩種類型的值,如上图中(zhōng)的“員工(gōng).年齡”、“員工(gōng).性别”兩個條件列采用(yòng)的都是變量,在定義的時候要求我們在要導入的項目中(zhōng)已定義好對應的變量,比如這裏的“員工(gōng)”,那當前要導入的項目中(zhōng)要有(yǒu)一個變量分(fēn)類名(míng)為(wèi)“員工(gōng)”,這樣導入時引擎會自動查找這個變量分(fēn)類,如果Excel裏定義裏某個變量分(fēn)類或具(jù)體(tǐ)分(fēn)類,但在項目中(zhōng)不存在這麽個變量分(fēn)類或變量,則在導入時會失敗。
列頭在定義時要放在第一行,這是必須的,否則在導入時會産(chǎn)生錯誤。列頭定義好後,接下來就可(kě)以定義對應的具(jù)體(tǐ)條件了。條件在定義時隻需要具(jù)體(tǐ)的比較操作(zuò)符及條件右值即可(kě),如下图所示:
多(duō)條件連接時與、或可(kě)使用(yòng)|| 及&&表示,如果是等于(==),則等于号可(kě)省略不寫,如下图所示:
上图中(zhōng),“員工(gōng).性别”屬性隻能(néng)為(wèi)男和女兩種,在定義條件時可(kě)不寫等于号;“員工(gōng).年齡”最後一個條件中(zhōng)等于65或70或80也省略了等于号。需要特别指出的是,多(duō)條件不支持括号,不能(néng)用(yòng)括号把多(duō)個條件連接。
動作(zuò)列
動作(zuò)列支持兩種類型:一種是用(yòng)于賦值的動作(zuò)列(如上图中(zhōng)的員工(gōng).薪水以及員工(gōng).地址兩列都是用(yòng)于賦值操作(zuò)的);另一種就是輸出到控制台的動作(zuò)列(如上图中(zhōng)的控制台輸出列)。在URule Pro當中(zhōng)通過為(wèi)列頭添加備注來區(qū)分(fēn)當前動作(zuò)列是賦值列還是輸入到控制台的列。如果是賦值列,則需要為(wèi)列頭添加“賦值”或“assign”的字符串備注,如果是輸出到控制台的列,則列表添加“控制台輸出”或"out"的字符串備注,如下图所示:
定義好動作(zuò)列表後,在下面的行中(zhōng)就可(kě)以定義具(jù)體(tǐ)的内容,需要指出的是,目前内容隻支持字符數字之類的簡單值,不支持内容裏采用(yòng)别的參數或變量或調用(yòng)方法等。同時在Excel中(zhōng)定義決策表時,決策表需要放在第一個Sheet頁(yè)中(zhōng),對于定義的決策表外觀上的修飾不影響決策表的導入,如上图中(zhōng)決策表邊線(xiàn)及背景色等有(yǒu)無皆可(kě)。
到這裏Excel也就定義好了,接下來隻需要打開我們的決策表文(wén)件,選擇工(gōng)具(jù)欄上的“導入Excel”按鈕,将這個Excel文(wén)件導入即可(kě)使用(yòng)。
在excel中(zhōng)支持的關鍵字和中(zhōng)文(wén)關鍵字
關鍵字 | 對應中(zhōng)文(wén)關鍵字 |
---|---|
> | 大于 |
< | 小(xiǎo)于 |
>= | 大于等于 |
<= | 小(xiǎo)于等于 |
== | 等于 或者 不填 |
!= | 不等于 |
EndWith | 結束于 |
NotEndWith | 不結束于 |
StartWith | 開始于 |
NotStartWith | 不開始于 |
In | 在集合中(zhōng) |
NotIn | 不集合中(zhōng) |
Match | 匹配 |
NotMatch | 不匹配 |
EqualsIgnoreCase | 忽略大小(xiǎo)寫等于 |
NotEqualsIgnoreCase | 忽略大小(xiǎo)寫不等于 |
==null | 為(wèi)空 |
!=null | 不為(wèi)空 |
Contain | 包含 |
NotContain | 不包含 |
excel中(zhōng)正則表達式或者日期類型值等特殊符号字符串,需要用(yòng)雙引号包裹,比如:"2023-11-11 12:12:10" "^1[3456789]\d{9}$"
決策表支持預定義功能(néng)
預定義值功能(néng)是 v4.3.0+
版本新(xīn)增的功能(néng),主要為(wèi)了簡化規則編寫,支持局部參數的定義與使用(yòng),提升用(yòng)戶編寫規則體(tǐ)驗。
更多(duō)用(yòng)法請參考決策集的5.8對預定義值的支持 。