9.复杂评分卡
简介
对于普通评分卡,它可以针对某个对象的一些属性值进行评分,但只能针对是单个对象属性进行条件判断,如果需要对多个对象属性进行条件叠加判断,那么普通评分卡就实现不了,所以URule Pro提供了复杂评分卡,利用复杂评分卡,可以实现评分时多条件叠加判断,进而使得评分卡的功能更加的完善和强大。
复杂评分卡在定义时与普通决策表有些类型,其定义出的效果如下图所示:
创建复杂评分卡
打开URule Pro控制台,在项目的“评分卡”节点上点击右键,在弹出的菜单里选择“添加复杂评分卡”,在弹出的窗口中输入复杂评分卡名称,就会创建一个新的空白的复杂评分卡文件,如下图所示:
在复杂评分卡的编辑器中,上部是工具栏,和其它类型的规则编辑器一样,工具栏里可以导入当前项目中已定义好的要使用的常量、变量、参数或动作库文件。工具栏的下方,可以通过点击“添加属性”链接,为当前复杂评分卡添加相关属性,这些属性与决策表或普通评分卡里完全一致,其作用也相同。再下方的表格就是具体的定义评分卡的表格。
可以看到,这样表格与普通决策表的表格类似,通过一条加粗的灰黑色的线将整个表格分为左右两个部分,左边部分为条件定义部分,右边部分为分值列及自定义列定义部分。
表格的下方,和普通评分卡一样,是得分计算方式以及得分计算好后赋值定义部分,只是这里的得分计算方式相比普通评分卡少了”加权求和“项,这是因为在复杂评分卡里,因为条件可能由多对象属性叠加组成,所以无法添加权值功能,所以这里在得分计算上不支持加权求和方式,除此以外,其它皆与普通评分卡完全一致。
和其它类型的规则文件定义方式相同,我们需要首先导入要使用的相关库文件,这里导入之前定义好的包含”会员“的变量库文件,导入后,在条件列头上点击右键菜单就可以为当前条件列选择对应的对象,如下图所示:
为条件列选择好当前列所属的对象后,接下来就可以定义当前条件列下所有单元格中条件所使用的当前对象下的属性,如下图所示:
为条件单元格定义好对象属性后,就可以在这个单元格上点右键,在弹出的菜单中选择”配置条件“,即可为当前单元格里选择的对象属性配置相关条件,这点与普通评分卡也是完全相同的,如下图所示:
和普通评分卡不同的地方在于,复杂评分卡的条件列可以有多列,可以在条件列列头上点击右键菜单,通过”插入条件列“项来增加条件列,对于每个条件列都可以选择不同的对象与之绑定,每个条件列下条件单元格中又可以选择对应的对象属性,再配置相关的条件,这样每个分值的条件计算就可以形成多条件叠加效果,从而大大增加评分卡定义的灵活性,充分满足业务需求。
下面是一张配置好的复杂评分卡示意图:
从上图中可以看到,条件列有两列,第一列与”会员“对象绑定,第二列与”订单“对象绑定。
在会员列中,前四个单元格采用会员对象下的”年龄“属性作为条件判断对象,后两个采用会员对象下的”性别“属性作为条件判断对象;在订单列中,对应第一列的条件单元格,将每个第一列的条件单元格在第二列都拆分成两个单元格,然后绑定订单下的对象属性进行条件判断;最后一列为分值列,在这个列中每个分值单元格都与一行条件对应。
如上图中红色圆圈内分值为6的单元格所对应的条件就是会员对象的年龄属性要大于或等于30并且小于50,同时订单的数量属性要小于10,这样才会等到6分的分值。
在评分卡条件配置过程中,如果条件类似,可点击右键菜单将条件单元格里条件复制下来,然后在目标条件单元格选择右键菜单里粘贴即可快速将目标条件粘贴到当前单元格中,可实现条件的快速配置。
复杂评分卡弥补了普通评分卡在条件判断复杂度方面的不足,实际业务当中,要根据需求灵活选择对应的评分卡工具。
从Excel中导入
从2.2.1版本开始,URule Pro中的复杂评分卡支持从Excel中导入,我们只需要按要求在Excel中定义好具体的评分卡内容,然后就可以直接将这个Excel导入到一个复杂评分卡当中。下图是一个定义好的可以导入到复杂评分卡的Excel截图, 点击此处下载该Excel:
可以看到,在这个Excel当中,第一行用于定义列头,除最后一列外,前几列定义的是评分卡条件列采用的变量分类名,比如上图中的“客户”和“订单”,这两个对象要求我们必须预先在当前项目的某一个变量库文件里定义好,否则导入该Excel时会产生错误。 最后一列的列头名为“分值”,这里的“分值”是固定的,不能更改,这样导入的时候引擎就会认为该列是用于评分的列。
在条件列当中,每个单元格都对应一个条件,条件定义方式采用的是脚本中条件定义方式,具体可参考脚本式规则集中关于条件比较部分的描述,需要注意的是,如果是等于(==),那么“==”是可以省略不写的, 如上图中的TRUE以及2,3,4等值;条件中对应的对象属性名则是定义在当前单元格的备注当中,如上图所示;同样,对应属性名也需要在当前项目的某一个变量库文件里定义好,否则导入该Excel时会产生错误。