交叉決策表
交叉決策表又(yòu)叫決策矩陣,是URule Pro中(zhōng)提供的一種特殊類型的決策表。
與普通決策表相比,交叉決策表的條件由縱向和橫向兩個維度決定,而普通決策表的條件隻是由縱向維度決定;但在普通決策表的動作(zuò)部分(fēn)可(kě)以是三種類型,分(fēn)别是賦值、輸出和執行方式,而在交叉決策表中(zhōng)動作(zuò)部分(fēn)就是縱向和橫向兩個維度交叉後的單元格的值,一般來說,這種交叉後單元格的值都是賦給某個變量或參數,所以交叉決策表的動作(zuò)基本就一個,那就是賦值。
下面的這張图中(zhōng)展示了交叉決策表的整體(tǐ)結構。
在上图中(zhōng),紫色單元格中(zhōng)5的值由橫向和縱向兩個維度的上箭頭對應的條件決定,隻有(yǒu)這兩個維度上的條件都滿足了,才會執行将這個單元格裏的值賦給“客戶.等級”這個變量。
相比普通的決策表,交叉決策表是從橫向和縱向兩個維度來唯一确定一個值,所以它更加簡單,也更為(wèi)直觀,相同類型的交叉決策表實現的交叉業務(wù)規則,如果換成普通決策表來定義,那将大大增加定義的複雜度。
使用(yòng)交叉決策表
在項目的決策表節點下點擊右鍵菜單,選擇添加交叉決策表項,輸入正确的名(míng)稱,即可(kě)創建一個新(xīn)的交叉決策表文(wén)件,如下图所示:
接下來,我們需要導入要使用(yòng)到的在項目中(zhōng)已定義好的變量、參數、常量或動作(zuò)庫文(wén)件,這點和前面介紹的決策集、普通決策表的用(yòng)法一緻,然後就可(kě)以來編輯我們的交叉決策表文(wén)件。
首先,對于橫向和縱向的條件部分(fēn),在定義時需要首先選擇橫向一行以及縱向一列條件所對應的對應屬性,如下图所示:
屬性選擇完成後,就可(kě)以為(wèi)條件在單元格上點擊右鍵菜單,為(wèi)條件單元格配置具(jù)體(tǐ)的條件,如果需要增加行列,也是通過在條件單元格裏點擊右鍵菜單,添加對應的條件行列即可(kě)。如下图所示:
橫向和縱向的條件配置完成後,接下來就可(kě)以配置交叉單元格的值了。交叉單元格的值配置方式比較簡單,點擊單元格中(zhōng)“無”在彈出的菜單裏選擇對應的配置項,完成配置即可(kě),這點與之前介紹的向導式規則完全一緻。
如果某個條件或交叉單元格的值不再需要了,那麽可(kě)以在單元格裏點擊右鍵,選擇清空即可(kě)。
交叉決策表的屬性與普通決策表的屬性完全一樣,所起到的作(zuò)用(yòng)也一緻,這裏不再贅述。
最後,還有(yǒu)一個重要的屬性需要配置,那就是左上方的“選擇交叉單元格值要賦予的對象”,其作(zuò)用(yòng)就是将橫向和縱向兩個維度的條件滿足後的交叉單元格的值賦予的具(jù)體(tǐ)對象,這裏我們可(kě)以選擇具(jù)體(tǐ)的變量或參數,如下图所示:
在交叉決策有(yǒu)編輯器上方的工(gōng)具(jù)欄裏,同樣有(yǒu)“導入Excel”按鈕,說明交叉決策表和普通決策表一樣支持将外部Excel裏的數據導入到當前交叉決策表中(zhōng),下面我們就來看看如何導入。
導入Excel中(zhōng)定義的交叉決策表
交叉決策表支持從外部Excel中(zhōng)導入。Excel可(kě)以按照URule Pro中(zhōng)的要求定義好交叉決策表,然後就可(kě)以直接導入,這樣可(kě)以大大減輕交叉決策表定義的工(gōng)作(zuò)量,大幅提高工(gōng)作(zuò)效率。比如下面的Excel文(wén)件(點擊此處下載此Excel文(wén)件):
導入後的效果如下:
可(kě)以看到,Excel在定義交叉決策表時同樣支持橫向和縱向兩個維度多(duō)層條件配置,這與交叉決策表功能(néng)一緻。在Excel中(zhōng)定義要導入到URule Pro中(zhōng)的交叉決策表時需要注意以下幾點:
- 交叉表左上角單元格一定要合并起來,否則将出現錯誤,如下图所示:
左上角單元格合并後,可(kě)以輸入具(jù)體(tǐ)内容,這些内容在導入到後就變成交叉表的表頭,在導入時,URule Pro就是根據這裏的單元格合并情況來區(qū)分(fēn)橫縱向條件的,所以正确的合并左上角的交叉單元格是定義合法交叉決策表的先決條件。
對于橫縱向條件的第一個單元格裏,要為(wèi)這個單元格添加批注,用(yòng)以說明該條件行或列所綁定的變量或參數對象,如下图所示:
需要注意的是,在定義要綁定的參數或具(jù)體(tǐ)變量時,一定要保證該參數或具(jù)體(tǐ)變量能(néng)在當前項目中(zhōng)找到,否則将導入失敗。比如上图中(zhōng)的“會員.是否有(yǒu)房”就是一個變量,這個變量就需要在項目中(zhōng)定義好。
在定義橫向或縱向條件單元格裏具(jù)體(tǐ)内容時,可(kě)不寫等于号;比如上图中(zhōng)的橫向列條件都沒有(yǒu)比較符,所以就表示等于。需要特别指出的是,多(duō)條件不支持括号,不能(néng)用(yòng)括号把多(duō)個條件連接。
對于橫向及縱向條件交叉後單元格的值隻支持字符串、數字之類簡單值,不支持引用(yòng)别的參數、變量或調用(yòng)方法等複雜類型的值。
如果我們是用(yòng)決策表來進行賦值操作(zuò),同時這個決策表的限制條件又(yòu)比較多(duō),這時就比較适合采用(yòng)URule Pro中(zhōng)提供的交叉決策表來實現,因為(wèi)其從橫向和縱向兩個維度來進行條件限制,所以可(kě)以大大簡化決策表的配置,同時配合外部的Excel導入功能(néng),可(kě)顯著提高交叉決策表的配置效率。
交叉決策表支持預定義功能(néng)
預定義值功能(néng)是 v4.3.0+
版本新(xīn)增的功能(néng),主要為(wèi)了簡化規則編寫,支持局部參數的定義與使用(yòng),提升用(yòng)戶編寫規則體(tǐ)驗。
更多(duō)用(yòng)法請參考決策集的5.8對預定義值的支持 。