決策樹又稱為規(guī)則樹,是URule Pro規(guī)則引擎中提供的另外一種構(gòu)建規(guī)則的方式,它以一棵躺倒的樹形結(jié)構(gòu)來表現(xiàn)規(guī)則(之所以將其躺倒是為了節(jié)省空間,否則一棵稍微大點(diǎn)的樹將會占用很大的頁面空間),決策樹表現(xiàn)業(yè)務(wù)規(guī)則更為形象,實(shí)際上,無論是決策樹、決策表還是評分卡,都可以通過決策集來實(shí)現(xiàn),只是,對于某些業(yè)務(wù)規(guī)則來說,通過決策樹或決策表或評分卡實(shí)現(xiàn)起來更為形象、快捷。
下圖是一棵定義好的決策樹:
打開URule Pro控制臺,在測試項(xiàng)目的“決策樹”節(jié)點(diǎn)下右鍵,在彈出菜單中選擇“創(chuàng)建決策樹”項(xiàng)就可以創(chuàng)建一個(gè)決策樹文件,如下圖所示:
決策表最上方是工具欄,它同樣需要導(dǎo)入各種庫文件;中間是屬性設(shè)置區(qū),與決策表一樣只提供四個(gè)屬性,如果定義屬性,那么它們將會在運(yùn)行時(shí)被附加由決策樹生成的所有規(guī)則上;最下面就是決策樹的定義區(qū),默認(rèn)它是一個(gè)根變量節(jié)點(diǎn),是不可刪除的。在URule Pro當(dāng)中有三種類型的樹節(jié)點(diǎn),分別是變量節(jié)點(diǎn)、條件節(jié)點(diǎn)以及動作節(jié)點(diǎn)。
變量節(jié)點(diǎn)就是用來選擇目標(biāo)變量的節(jié)點(diǎn),要操作這里我們需要首先導(dǎo)入需要使用到的變量庫文件或參數(shù)庫文件,比如導(dǎo)入我們定義的會員變量庫,然后就可以選擇具體的會員變量屬性,如下圖:
定義好變量節(jié)點(diǎn)上要使用的變量后,就可以添加下級子節(jié)點(diǎn),變量節(jié)點(diǎn)下只能添加條件節(jié)點(diǎn),一個(gè)變量節(jié)點(diǎn)可添加多個(gè)條件節(jié)點(diǎn),每個(gè)條件節(jié)點(diǎn)上配置的條件與當(dāng)前變量節(jié)點(diǎn)構(gòu)成一個(gè)完整的約束條件,條件的定義與向?qū)揭?guī)則中完全相同。如下圖:
條件節(jié)點(diǎn)下可以繼續(xù)添加子條件以進(jìn)一步對上級條件進(jìn)行約束或添加動作節(jié)點(diǎn)以結(jié)束當(dāng)前條件分支或者再添加若干變量節(jié)點(diǎn)以添加新類型的條件約束,如下圖:
一旦某個(gè)條件節(jié)點(diǎn)下添加了動作節(jié)點(diǎn),那么就意味著這個(gè)條件分支的結(jié)束,一個(gè)動作節(jié)點(diǎn)中可添加多個(gè)動作,同樣一個(gè)條件節(jié)點(diǎn)下可以有多個(gè)動作節(jié)點(diǎn),動作節(jié)點(diǎn)上的動作類型與動作定義方式與向?qū)揭?guī)則中完全相同。
對于一個(gè)合法的決策樹來說,任何一個(gè)分支都必須要由至少一個(gè)動作節(jié)點(diǎn)結(jié)束,否則系統(tǒng)將不允許保存。
實(shí)際上,決策樹是決策表的另一種表現(xiàn)形式,所以所有的決策表都可以用決策樹表現(xiàn),反之亦然。下圖當(dāng)中的決策樹就實(shí)現(xiàn)了在決策表一節(jié)示例中對應(yīng)的功能:
可以看到,與決策表相同的功能采用決策樹實(shí)現(xiàn)起來感覺體積上要大很多,所以在實(shí)際業(yè)務(wù)當(dāng)中多數(shù)決策樹都會轉(zhuǎn)換成決策表來定義。
將這個(gè)決策樹文件放到知識包中進(jìn)行測試,同樣可以得到正確的結(jié)果。
更多建議: