交叉决策表

​ 交叉决策表又叫决策矩阵,是URule Pro中提供的一种特殊类型的决策表。

​ 与普通决策表相比,交叉决策表的条件由纵向和横向两个维度决定,而普通决策表的条件只是由纵向维度决定;但在普通决策表的动作部分可以是三种类型,分别是赋值、输出和执行方式,而在交叉决策表中动作部分就是纵向和横向两个维度交叉后的单元格的值,一般来说,这种交叉后单元格的值都是赋给某个变量或参数,所以交叉决策表的动作基本就一个,那就是赋值。

下面的这张图中展示了交叉决策表的整体结构。

​ 在上图中,紫色单元格中5的值由横向和纵向两个维度的上箭头对应的条件决定,只有这两个维度上的条件都满足了,才会执行将这个单元格里的值赋给“客户.等级”这个变量。

​ 相比普通的决策表,交叉决策表是从横向和纵向两个维度来唯一确定一个值,所以它更加简单,也更为直观,相同类型的交叉决策表实现的交叉业务规则,如果换成普通决策表来定义,那将大大增加定义的复杂度。

使用交叉决策表

​ 在项目的决策表节点下点击右键菜单,选择添加交叉决策表项,输入正确的名称,即可创建一个新的交叉决策表文件,如下图所示:

​ 接下来,我们需要导入要使用到的在项目中已定义好的变量、参数、常量或动作库文件,这点和前面介绍的决策集、普通决策表的用法一致,然后就可以来编辑我们的交叉决策表文件。

​ 首先,对于横向和纵向的条件部分,在定义时需要首先选择横向一行以及纵向一列条件所对应的对应属性,如下图所示:

​ 属性选择完成后,就可以为条件在单元格上点击右键菜单,为条件单元格配置具体的条件,如果需要增加行列,也是通过在条件单元格里点击右键菜单,添加对应的条件行列即可。如下图所示:

​ 横向和纵向的条件配置完成后,接下来就可以配置交叉单元格的值了。交叉单元格的值配置方式比较简单,点击单元格中“无”在弹出的菜单里选择对应的配置项,完成配置即可,这点与之前介绍的向导式规则完全一致。

​ 如果某个条件或交叉单元格的值不再需要了,那么可以在单元格里点击右键,选择清空即可。

​ 交叉决策表的属性与普通决策表的属性完全一样,所起到的作用也一致,这里不再赘述。

​ 最后,还有一个重要的属性需要配置,那就是左上方的“选择交叉单元格值要赋予的对象”,其作用就是将横向和纵向两个维度的条件满足后的交叉单元格的值赋予的具体对象,这里我们可以选择具体的变量或参数,如下图所示:

​ 在交叉决策有编辑器上方的工具栏里,同样有“导入Excel”按钮,说明交叉决策表和普通决策表一样支持将外部Excel里的数据导入到当前交叉决策表中,下面我们就来看看如何导入。

导入Excel中定义的交叉决策表

​ 交叉决策表支持从外部Excel中导入。Excel可以按照URule Pro中的要求定义好交叉决策表,然后就可以直接导入,这样可以大大减轻交叉决策表定义的工作量,大幅提高工作效率。比如下面的Excel文件(点击此处下载此Excel文件):

导入后的效果如下:

​ 可以看到,Excel在定义交叉决策表时同样支持横向和纵向两个维度多层条件配置,这与交叉决策表功能一致。在Excel中定义要导入到URule Pro中的交叉决策表时需要注意以下几点:

  • 交叉表左上角单元格一定要合并起来,否则将出现错误,如下图所示:

​ 左上角单元格合并后,可以输入具体内容,这些内容在导入到后就变成交叉表的表头,在导入时,URule Pro就是根据这里的单元格合并情况来区分横纵向条件的,所以正确的合并左上角的交叉单元格是定义合法交叉决策表的先决条件。

  • 对于横纵向条件的第一个单元格里,要为这个单元格添加批注,用以说明该条件行或列所绑定的变量或参数对象,如下图所示:

    ​ 需要注意的是,在定义要绑定的参数或具体变量时,一定要保证该参数或具体变量能在当前项目中找到,否则将导入失败。比如上图中的“会员.是否有房”就是一个变量,这个变量就需要在项目中定义好。

  • 在定义横向或纵向条件单元格里具体内容时,可不写等于号;比如上图中的横向列条件都没有比较符,所以就表示等于。需要特别指出的是,多条件不支持括号,不能用括号把多个条件连接。

  • 对于横向及纵向条件交叉后单元格的值只支持字符串、数字之类简单值,不支持引用别的参数、变量或调用方法等复杂类型的值。

    ​ 如果我们是用决策表来进行赋值操作,同时这个决策表的限制条件又比较多,这时就比较适合采用URule Pro中提供的交叉决策表来实现,因为其从横向和纵向两个维度来进行条件限制,所以可以大大简化决策表的配置,同时配合外部的Excel导入功能,可显著提高交叉决策表的配置效率。

交叉决策表支持预定义功能

预定义值功能是 v4.3.0+ 版本新增的功能,主要为了简化规则编写,支持局部参数的定义与使用,提升用户编写规则体验。

image-20240304185555066

更多用法请参考决策集的5.8对预定义值的支持

results matching ""

    No results matching ""