本篇以高胆固醇血症评点规则为例,讲解决策表(非交叉)、决策集、决策树、决策流使用步骤方法。
高胆固醇血症评点规则实现稍微复杂,该业务规则计算实际需要如下3个步骤:先计算总胆固醇评定级别和低密度脂蛋白评定级别、然后计算得出高胆固醇血症评定级别即取两者的最高级别值、再根据评定级别与年龄关系得出高胆固醇血症评点结果;通过URule实现则需要先编写4个基本规则:计算总胆固醇评定级别、计算低密度脂蛋白评定级别、计算高胆固醇血症评定级别、计算高胆固醇血症评点结果,然后再通过决策流对他们按照步骤进行编排,具体实现步骤如下。
不同的总胆固醇数值代表高胆固醇血症不同级别,即某属性不同值对应着不同结果,也即不同条件下对应不同的结果,这一类规则使用URule中决策表实现非常方便,具体实现步骤如下。
1.和创建交叉决策表相同,先右键点击项目列表树种决策表节点,然后点击选择添加决策表,在弹出“创建一个决策表文件”对话框中输入“cholesterolResultLevel1Total”然后点击“保存”,这时就会创建一个新的决策表文件,系统模板会打开该文件的维护界面,具体如下图。
2.导入客户变量库和导入常量库,导入方法和血压寿险评点规则导入方法相同,这里不再赘述
3.配置决策表条件,右键点击决策表表头中第一个“请选择参数或变量”,然后再点击选择“客户”下的“总胆固醇”,然后右键点击“客户的总胆固醇”单元格下方的第一个单元格,再点击“配置条件”,结合高胆固醇血症评定级别规则表5,在配置对话框,配置条件为“小于或等于3.2”,配置方法和血压寿险评点规则中配置方法相同,同样方法分别点击此列下方单元格将高胆固醇血症评定级别规则表5中“总胆固醇”一列其它条件逐个配置,具体操作及配置结果如下。
注:决策表默认仅有2个条件行,在单元格中点击右键,选择“添加条件行”即可实现新增更多的条件行
4.删除多余条件列,由于URule决策表默认显示了2个条件列,而本业务只需一个条件列,点击第二列表头标题行,然后点击选择“删除当前条件列”即可
5.定义决策结果,右键点击表头标题“选择要赋值的变量”,然后点击“客户”,再点击“高胆固醇总胆固醇评点级别”字段,然后分别点击该列下方单元格中“无”,再点击“选择常量”,结合高胆固醇血症评定级别规则表5,定义逐个条件对应的结果,最后点击左上角“保存”,这样就完成了此决策表定义,一些主要操作及截图如下
低密度脂蛋白评定级别和总胆固醇评定级别规则业务类似,规则类型相同,采用URule中决策表实现即可,开发方法步骤和总胆固醇评定级别规则相同,此决策表文件名称命名为“cholesterolResultLevel2Low”,具体过程这里不再赘述,最终实现规则如下。
高胆固醇血症评定级别规则实现功能即:取总胆固醇评定级别和低密度脂蛋白评定级别中较高的值作为高胆固醇血症的评定级别,这里面其实存在一个设计技巧,尽管我们看到的评定级别为“中文”,但在定义常量“评定级别”时字段类型采用的为“Integer”,所以我们看到的中文其实为标题字段,实际存储值为数字,所以此规则实现就变得非常简单,采用“向导式决策集”实现即可,实现步骤如下。
1.创建决策集文件,在项目列表树中,右键点击“决策集”节点,然后点击“添加向导式决策集”,输入文件名称“cholesterolResultLevel”并点击下方“保存”按钮
2.导入客户变量库
3.编写规则条件,点击“添加规则”按钮,这时页面下方会添加一个规则模板,然后点击如果下方“并且”,然后点击“添加条件”,再点击旁边“请选择类型”,然后点击“选择变量”,再点击“请选择变量”,然后点击“客户”,点击选择“高胆固醇总胆固醇评点级别”字段,然后点击“请选择比较操作符”,点击选择为“大于或等于”,然后点击“请选择变量”,再点击“选择变量”,同样方法设置此变量为“客户的高胆固醇低密度脂蛋白评点级别”字段
4.编写规则动作,点击那么右侧“添加动作”,然后点击“请选择动作类型”,然后点击“变量赋值”,再点击“请选择值类型”,然后点击“选择变量”,再点击“请选择变量”,设置值为“客户的高胆固醇血症评点级别”,然后点击“=”右侧的“选择值类型”,再点击“选择变量”,同样操作方法设置为“客户的高胆固醇血症总胆固醇评点级别”,然后点击否则右侧“添加动作”,按照同样操作方法添加新的变量赋值动作,左侧同样为变量“客户的高胆固醇血症评点级别”,右侧为“客户的高胆固醇血症低密度脂蛋白评点级别”,最后点击页面上方“保存”按钮,这样就完成了此决策集编写,主要操作步骤截图如下
根据高胆固醇血症评点规则表6可知,高胆固醇血症不同级别,在不同年龄范围,结果不同,此类规则条件部分具有相同的部分,并且相同部分只涉及一个属性,这类规则适合采用决策树实现,具体实现步骤如下。
1.首先右键点击项目列表中“决策树”节点,然后点击“添加决策树”,输入文件名“cholesterolResult”,然后点击“保存”按钮,这样就实现了添加一个决策树文件,添加结果如图
2.为决策树导入变量库和常量库,操作方法步骤和决策表、决策集相同,这里不再赘述
3.配置决策树根节点属性,先点击“请选择类型”,然后点击“选择变量”,再点击“请选择变量”,点击选择“客户”下“高胆固醇血症评点级别”字段,配置结果如图
4.配置决策树相同条件部分,如图点击“对号“图标,然后点击“添加条件”,再点击“请选择比较操作符”,点击选择“等于”,然后点击“选择值类型”,再点击选择“选择常量”,然后点击选择常量“评定级别”中“低血脂”,关键操作步骤截图如下
5.重复上面步骤,根据高胆固醇血症评点规则表6,将相同条件部分配置完整,配置结果如图
6.配置低血脂级别时其它条件和规则结果,根据高胆固醇血症评点规则表6可知,评点级别为低血脂时,可以确定结果为0,点击低血脂右侧“对号图标”,然后点击“添加动作”,再点击“请选择动作类型”,然后点击“变量赋值”,再点击“请选择值类型”,然后点击“选择变量”,再点击“请选择变量”,然后点击“客户”,再点击“高胆固醇血症评点结果”,然后点击“选择值类型”,再点击“输入值”,然后点击“请输入值”,输入值数值0,操作结果如下图。
7.根据高胆固醇血症评点规则表6可知,级别为低血脂、正常、接近正常时,评点结果相同,重复上面配置低血脂步骤,配置正常和接近正常时结果,配置结果如下图
8.配置边缘高值时评点情况,根据高胆固醇血症评点规则表6可知,级别为边缘高值时存在多种情况,当年龄为18-39时评点结果为15,当年龄大于40时评点结果为0;配置步骤为,先点击“等于边缘高值”右侧“对号图标”,再点击2次“添加条件”,添加2个条件,点击第一个条件上“请选择比较操作符”,再点击选择“大于或等于”,然后点击“请选择值类型”,点击选择“输入值”,输入18,然后继续点击18后面“对号图标”,点击添加“添加条件”,继续点击后面“请选择比较操作符”,点击选择“小于或等于”,然后点击后面“选择值类型”,再点击“输入值”,输入39,然后点击39后面“对号图标”,点击“添加动作”,然后点击“请选择动作类型”,再点击“变量赋值”,然后点击“请选择值类型”,点击“选择变量”,然后点击“请选择变量”,再点击“客户”,再点击字段“高胆固醇血症评点结果”,然后点击“选择值类型”,再点击“输入值”,然后输入数值15,至此完成第一种情况配置;然后点击下方第二个条件上“请选择比较操作符”,点击选择“大于”,然后点击“选择值类型”,点击选择“输入值”,然后输入数值40,再点击40后对号图标,点击“添加动作”,然后选择“变量赋值”,然后点击“请选择值类型”,再点击“选择变量”,然后点击“请选择变量”,再点击“客户”,再点击字段“高胆固醇血症评点结果”,然后点击“选择值类型”,再点击“输入值”,然后输入数值0,至此完成第二种情况配置。配置结果如下图
9.其它级别配置和边缘高值配置步骤类似,重复上面操作即可完成其它级别配置,最后点击页面上方“保存”按钮进行保存,最终配置结果如下图
4.2.5) 计算高胆固醇血症评点结果(决策流)
添加一个规则流,对以上4个基本规则进行编排,编排为按照计算总胆固醇评定级别(决策表)、计算低密度脂蛋白评定级别(决策表)、计算高胆固醇血症评定级别(决策集)、计算高胆固醇血症评点结果(决策树)顺序执行,定义方法如下。
1.点击项目列表树上“决策树”节点,再点击“添加决策流”,然后在对话框中输入文件名“cholesterolResultFlow”,再点击“保存”按钮,这样就创建了一个决策流文件,如下图
2.决策流需要定义一个ID,在决策流页面右侧属性面板中输入一个决策流ID,并按回车键,然后点击属性面板中“添加”按钮,将规则使用到的所有库文件添加进来,这些文件只会在仿真测试中会用到,不会影响发布后规则调用,如果规则较简单不需要仿真测试则可以不用添加
3.点击页面上方开始图标,进行选中(点击一下图标便会自动选中该图标),然后点击下方空白处,这时就会在流程中自动添加一个开始节点,点击添加的开始节点,页面右侧属性面板则会显示该节点允许配置的一些属性,可以根据需求进行修改,如下图
4.点击选中规则图标,然后在空白处点击鼠标添加一个规则节点,然后点击新添加的规则节点,再在其属性面板中修改名称为“计算总胆固醇评定级别”,然后点击目标规则文件输入框旁边“查找”图标,选中已经定义好的对应规则文件“cholesterolResultLevel1Total”,然后点击上方“连线图标”,再点击下方“开始1”节点,然后点击“计算总胆固醇评定级别”节点,这样就实现了决策流中第一个规则添加,如图
5.重复上面操作,将其它3个规则也添加配置进来,最后点击页面左上角“保存”图标按钮,这时就完成高胆固醇血症评点规则配置,最后配置结果如下图
决策流支持较完整的与流程相关的操作,包含开始、规则、知识包、动作、脚本、决策、分支、聚合等节点,这里主要用到开始和规则节点,开始是定义一个决策流文件时必须要添加的,支持添加事件Bean监听规则流开始,规则节点用于绑定一个具体的规则,如决策集、决策表、决策树等,当规则流流程到该节点时就会触发所绑定的具体规则。