10.决策树

简介

决策树又称为规则树,是URule Pro规则引擎中提供的另外一种构建规则的方式,它以一棵躺倒的树形结构来表现规则(之所以将其躺倒是为了节省空间,否则一棵稍微大点的树将会占用很大的页面空间),决策树表现业务规则更为形象,实际上,无论是决策树、决策表还是评分卡,都可以通过决策集来实现,只是,对于某些业务规则来说,通过决策树或决策表或评分卡实现起来更为形象、快捷。

下图是一棵定义好的决策树:

创建决策树

打开URule Pro控制台,在测试项目的“决策树”节点下右键,在弹出菜单中选择“创建决策树”项就可以创建一个决策树文件,如下图所示:

决策表最上方是工具栏,它同样需要导入各种库文件;中间是属性设置区,与决策表一样只提供四个属性,如果定义属性,那么它们将会在运行时被附加由决策树生成的所有规则上;最下面就是决策树的定义区,默认它是一个根变量节点,是不可删除的。在URule Pro当中有三种类型的树节点,分别是变量节点、条件节点以及动作节点。

变量节点就是用来选择目标变量的节点,要操作这里我们需要首先导入需要使用到的变量库文件或参数库文件,比如导入我们定义的会员变量库,然后就可以选择具体的会员变量属性,如下图:

定义好变量节点上要使用的变量后,就可以添加下级子节点,变量节点下只能添加条件节点,一个变量节点可添加多个条件节点,每个条件节点上配置的条件与当前变量节点构成一个完整的约束条件,条件的定义与向导式规则中完全相同。如下图:

条件节点下可以继续添加子条件以进一步对上级条件进行约束或添加动作节点以结束当前条件分支或者再添加若干变量节点以添加新类型的条件约束,如下图:

一旦某个条件节点下添加了动作节点,那么就意味着这个条件分支的结束,一个动作节点中可添加多个动作,同样一个条件节点下可以有多个动作节点,动作节点上的动作类型与动作定义方式与向导式规则中完全相同。

对于一个合法的决策树来说,任何一个分支都必须要由至少一个动作节点结束,否则系统将不允许保存。

在URule Pro当中,为了方便大家定义较为复杂的决策树,我们提供了两种类型的决策树设计器,一种就是上面介绍的那种设计器,我们称之为“横向树编辑器”;还有一种就是传统的树形结构决策树设计器,称之为“纵向树设计器”,如下图所示:

可以看到,相比“横向树设计器”,这种传统类型树设计器节点菜单内容更多,对树的编辑能力更强,因为它采用的是传统的树形结构展示,所以这种“纵向树设计器”有非常强大的树表现能力,可以快速展示成千上万个节点。 你在定义决策树时,如果节点数量过多,采用“横向树设计器”会发现其加载速度很慢,但切换到“纵向树设计器”则不存在这种问题。 同时大家也能看到“纵向树设计器”这种传统的树结构相比“横向树设计器”对树的表现能力略差一些,具体使用中大家可以根据情况灵活选择。

通过决策树设计器工具栏里的“切换设计器”按钮可在两种设计器间自由切换,切换信息会保存在当前浏览器的cookie中,所以下次在打开决策树文件时会采用最后一次使用的决策树设计器来打开目标文件。

示例

实际上,决策树是决策表的另一种表现形式,所以所有的决策表都可以用决策树表现,反之亦然。下图当中的决策树就实现了在决策表一节示例中对应的功能:

可以看到,与决策表相同的功能采用决策树实现起来感觉体积上要大很多,所以在实际业务当中多数决策树都会转换成决策表来定义。

将这个决策树文件放到知识包中进行测试,同样可以得到正确的结果。

results matching ""

    No results matching ""