URULE决策表分为普通决策表、交叉决策表,它们以表格形式实现业务规则。
普通决策表
urule页面创建决策表
urule页面创建决策表
打开一个urule项目,在决策表节点中点击右键,在弹出的菜单中选择创建决策表,输入文件名后就可以创建一个普通决策表文件,如下图所示:
导入库文件
在决策表中,也需要我们导入库文件, 和规则集中的规则一样,可以为决策表添加若干属性,但不同的是决策表中可添加的属性只有五个,其含义和作用与决策集中的规则相同;URule Pro中的决策表,整体可分为左右两个部分,分别是条件列部分与动作列部分,它们之间以一较粗的灰黑色线分隔,该线左边为条件列,右边则为动作列。在导入好相关的变量库或参数库后,那就可以在条件列的列头上右键,通过右键菜单选择当前条件要绑定的变量或参数
在URule Pro当中,对于所有的菜单项,通过点击菜单项上的配置按钮,可以设置菜单项个数大于多少个时出现过滤框,默认是菜单项大于10个时就会出现,使用时,可以根据自己的喜好对出现过滤框的时机进行定义。
决策表的规则
要设置决策表的条件,我们必须先为条件列设置好与之绑定的变量或参数,否则是无法设置当前条件列下单元格中的条件的。URule Pro中的决策表提供了三种类型的动作列,分别是:赋值动作列、执行方法动作列以及控制台输出动作列。
赋值动作列,就是指在条件列相关对应条件满足后对某个目标变量或参数进行赋值,同样在设置赋值动作列时,必须先插入一个赋值动作列,然后选择与当前绑定的参数或变量名称,最后才能在当前列对应的单元格中输入具体值,在对应的条件满足时为目标变量或参数赋值,如下图所示:
执行方法动作列就是在这个列当中,在相关条件满足时执行指定的方法。执行方法动作列与赋值动作列不同,我们需要做的就是添加一个执行方法动作列,而不用将该列与任何变量、参数或方法绑定,添加好执行方法动作列后,就可以在该列对应的单元格中添加具体的要执行的方法即可,如图所示:
控制台输出动作列,就是将该列对应的单元格里设置的内容直接输出日志当中,其效果与决策集文件中定义的打印内容到控制台效果完全一致。
添加好条件列并配置好与之绑定的参数和变量后,接下来就可以在该列对应的单元格添加具体的条件,添加条件方法比较简单,在目标单元格右键,在弹出的菜单中选择“配置条件”项即可。
在弹出的配置条件窗口中,可以看到,这个配置条件的窗口采用的是向导式条件配置方式,与决策集中条件配置方式基本一致,不同的地方是决策表中向导式条件配置不能添加“联合条件”,同时对于单个条件不用指定条件左值(这是因为当前条件列的列头已与具体的参数或变量绑定,这个绑定的参数或变量就是其下所有条件单元格条件的左值),如下图所示:
设计好规则后,如下图
决策表测试
操作小技巧:
在决策表的单元格中,无论是条件部分单元格还是动作部分单元格,如果某些单元格内容相同或类似,那么可以在源单元格中右键,从菜单里选择复制,到目标单元格粘贴即可,这样就可以实现决策表内容的快速编辑。 后面要介绍的复杂决策表、评分卡之类都可以采用这种复制粘贴机制。
复制粘贴时有一点需要注意,那就是复制的条件部分只能粘贴到条件单元格中,动作单元格也是这样。
从Excel中导入决策表
URule Pro中的决策表支持从外部的Excel中导入,在Excel中按要求定义好决策表,然后导入即可使用。打开决策表编辑器,可以看到工具栏上有“导入Excel”按钮,点击该按钮在弹出的窗口中选择要导入的Excel文件即可,如下图所示:
Excel定义规则
在Excel中设计规则(Excel表格用后缀为.xlsx,后缀为.xls的不行)
下面讲解一下如何定义Excel表格:
Excel中定义决策表,与URule Pro中实际的决策表区别不大,也分为条件列和动作列,我们先来看看条件列如何定义。
对于条件列的列头支持变量及参数两种类型的值,如上图中的“参数.经理奖金/(人)”、“参数.开发人员奖金/(人)”两个条件列采用的都是参数,在定义的时候要求我们在要导入的项目中已定义好对应的参数,如果Excel里定义里某个变量或参数,但在项目中不存在这么个变量或参数,则在导入时会失败。
列头在定义时要放在第一行,这是必须的,否则在导入时会产生错误。列头定义好后,接下来就可以定义对应的具体条件了。条件在定义时只需要具体的比较操作符及条件右值即可
多条件连接时与、或可使用 || 及&&表示,如果是等于(==),则等于号可省略不写
动作列支持两种类型:一种是用于赋值的动作列(如上图中的参数.老板盈利是用于赋值操作的);另一种就是输出到控制台的动作列。在URule Pro当中通过为列头添加备注来区分当前动作列是赋值列还是输入到控制台的列。如果是赋值列,则需要为列头添加“赋值”或“assign”的字符串备注,如果是输出到控制台的列,则列表添加“控制台输出”或"out"的字符串备注
定义好动作列表后,在下面的行中就可以定义具体的内容,需要指出的是,目前内容只支持字符数字之类的简单值,不支持内容里采用别的参数或变量或调用方法等。同时在Excel中定义决策表时,决策表需要放在第一个Sheet页中,对于定义的决策表外观上的修饰不影响决策表的导入
到这里Excel也就定义好了,接下来只需要打开我们的决策表文件,选择工具栏上的“导入Excel”按钮,将这个Excel文件导入即可使用。
在赋值项加入批注
Excel表格上传到urule规则引擎
测试Excel表格导入的规则
总结:
决策表和决策集可以互相使用,但是根据业务需求的不同,可以选择不同的方式去设计规则,如果我们的业务给出的是零散的逻辑规则,那么可以使用规则集来实现;如果给出的是表格形式的业务规则,那么可以直接使用对应的决策表或交叉决策表(决策矩阵)来实现,主要是灵活运用urule规则引擎,简洁方便的实现复杂业务规则定义。