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