普通决策表

打开一个项目,在决策表节点中点击右键,在弹出的菜单中选择创建决策表,输入文件名后就可以创建一个普通决策表文件,如下图所示:

可以看到,在决策表当中,同样需要我们导入需要使用的变量库、参数库、常量库及动作库。

和规则集中的规则一样,可以为决策表添加若干属性,但不同的是决策表中可添加的属性只有五个,其含义和作用与决策集中的规则相同,这里不再赘述。

一旦为决策表定义了属性,那么这些属性将会被应用到决策表中定义的每个规则上。

实际使用当中,我们可能会将若干个决策表或若干个决策表与若干个决策集放在一个知识包中使用,这个时候如果没有使用决策流来对它们的执行顺序进行编排的话,那么优先级属性的作用就显现出来,通过定义优先级属性,可以实现若干个决策表文件与若干个决策集文件放在一个知识包中执行顺序的编排,也就是优先级的值越大,执行越靠前。

URule Pro中的决策表,整体可分为左右两个部分,分别是条件列部分与动作列部分,它们之间以一较粗的灰黑色线分隔,该线左边为条件列,右边则为动作列。在导入好相关的变量库或参数库后,那就可以在条件列的列头上右键,通过右键菜单选择当前条件要绑定的变量或参数,如下图所示:

在URule Pro当中,对于所有的菜单项,通过点击菜单项上的配置按钮,可以设置菜单项个数大于多少个时出现过滤框,默认是菜单项大于15个时就会出现,使用时,可以根据自己的喜好对出现过滤框的时机进行定义。

要设置决策表的条件,我们必须先为条件列设置好与之绑定的变量或参数,否则是无法设置当前条件列下单元格中的条件的。URule Pro中的决策表提供了三种类型的动作列,分别是:赋值动作列、执行方法动作列以及控制台输出动作列。

所谓的赋值动作列,就是指在条件列相关对应条件满足后对某个目标变量或参数进行赋值,同样在设置赋值动作列时,必须先插入一个赋值动作列,然后选择与当前绑定的参数或变量名称,最后才能在当前列对应的单元格中输入具体值,在对应的条件满足时为目标变量或参数赋值,如下图所示:

执行方法动作列就是在这个列当中,在相关条件满足时执行指定的方法。执行方法动作列与赋值动作列不同,我们需要做的就是添加一个执行方法动作列,而不用将该列与任何变量、参数或方法绑定,添加好执行方法动作列后,就可以在该列对应的单元格中添加具体的要执行的方法即可,如图所示:

控制台输出动作列,就是将该列对应的单元格里设置的内容直接输出日志当中,其效果与决策集文件中定义的打印内容到控制台效果完全一致。

添加好条件列并配置好与之绑定的参数和变量后,接下来就可以在该列对应的单元格添加具体的条件,添加条件方法比较简单,在目标单元格右键,在弹出的菜单中选择“配置条件”项即可。

在弹出的配置条件窗口中,可以看到,这个配置条件的窗口采用的是向导式条件配置方式,与决策集中条件配置方式基本一致,不同的地方是决策表中向导式条件配置不能添加“联合条件”,同时对于单个条件不用指定条件左值(这是因为当前条件列的列头已与具体的参数或变量绑定,这个绑定的参数或变量就是其下所有条件单元格条件的左值),如下图所示:

对于赋值动作列,在绑定好要赋值的参数或变量后,就可以在该列对应的单元格中选择输入具体的值,可以看到在对赋值动作列对应的单元格设置值时,其可选值的范围与操作方式与“向导式规则”中条件右值的设置方式完全相同。

对于执行方法动作列,在设置其下具体单元格中要执行的方法时,我们需要先导入包含已定义好方法的动作库文件,否则是无法操作的,一旦导入动作库文件,我们就可以设置执行方法动作列下对应的单元格中需要执行的方法:

在设置具体要执行的方法时,与决策集中动作设置中执行方法部分的设置完全相同。

对于控制台输出动作列,其设置方式与赋值动作列基本一致,唯一不同的地方是它不需要设置与该列绑定的参数或变量,因为它作用就是将当前列单元格中定义的内容直接输出到日志中,所以一般用于调试。

在决策表的单元格中,无论是条件部分单元格还是动作部分单元格,如果某些单元格内容相同或类似,那么可以在源单元格中右键,从菜单里选择复制,到目标单元格粘贴即可,这样就可以实现决策表内容的快速编辑。 后面要介绍的复杂决策表、评分卡之类都可以采用这种复制粘贴机制。

复制粘贴时有一点需要注意,那就是复制的条件部分只能粘贴到条件单元格中,动作单元格也是这样。

互斥组的支持

v4.2.3+的版本普通决策表支持了互斥组的设置,设置了互斥组后,整个决策表从上到下计算时,遇到命中行后就结束,后续条件行的决策项将不会执行。

另外,结合互斥组可以实现决策表中否则的功能效果,如下图所示:

undefined

从Excel中导入决策表

URule Pro中的决策表支持从外部的Excel中导入,在Excel中按要求定义好决策表,然后导入即可使用。打开决策表编辑器,可以看到工具栏上有“导入Excel”按钮,点击该按钮在弹出的窗口中选择要导入的Excel文件即可。如下图所示Excel:

导入后决策表效果如下:

我 我们来看下Excel中如何定义决策表(下载这个Excel)。

Excel中定义决策表,与URule Pro中实际的决策表区别不大,也分为条件列和动作列,我们先来看看条件列如何定义。

条件

对于条件列的列头支持变量及参数两种类型的值,如上图中的“员工.年龄”、“员工.性别”两个条件列采用的都是变量,在定义的时候要求我们在要导入的项目中已定义好对应的变量,比如这里的“员工”,那当前要导入的项目中要有一个变量分类名为“员工”,这样导入时引擎会自动查找这个变量分类,如果Excel里定义里某个变量分类或具体分类,但在项目中不存在这么个变量分类或变量,则在导入时会失败。

列头在定义时要放在第一行,这是必须的,否则在导入时会产生错误。列头定义好后,接下来就可以定义对应的具体条件了。条件在定义时只需要具体的比较操作符及条件右值即可,如下图所示:

多条件连接时与、或可使用|| 及&&表示,如果是等于(==),则等于号可省略不写,如下图所示:

上图中,“员工.性别”属性只能为男和女两种,在定义条件时可不写等于号;“员工.年龄”最后一个条件中等于65或70或80也省略了等于号。需要特别指出的是,多条件不支持括号,不能用括号把多个条件连接。

动作列

动作列支持两种类型:一种是用于赋值的动作列(如上图中的员工.薪水以及员工.地址两列都是用于赋值操作的);另一种就是输出到控制台的动作列(如上图中的控制台输出列)。在URule Pro当中通过为列头添加备注来区分当前动作列是赋值列还是输入到控制台的列。如果是赋值列,则需要为列头添加“赋值”或“assign”的字符串备注,如果是输出到控制台的列,则列表添加“控制台输出”或"out"的字符串备注,如下图所示:

定义好动作列表后,在下面的行中就可以定义具体的内容,需要指出的是,目前内容只支持字符数字之类的简单值,不支持内容里采用别的参数或变量或调用方法等。同时在Excel中定义决策表时,决策表需要放在第一个Sheet页中,对于定义的决策表外观上的修饰不影响决策表的导入,如上图中决策表边线及背景色等有无皆可。

到这里Excel也就定义好了,接下来只需要打开我们的决策表文件,选择工具栏上的“导入Excel”按钮,将这个Excel文件导入即可使用。

在excel中支持的关键字和中文关键字

关键字 对应中文关键字
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于 或者 不填
!= 不等于
EndWith 结束于
NotEndWith 不结束于
StartWith 开始于
NotStartWith 不开始于
In 在集合中
NotIn 不集合中
Match 匹配
NotMatch 不匹配
EqualsIgnoreCase 忽略大小写等于
NotEqualsIgnoreCase 忽略大小写不等于
==null 为空
!=null 不为空
Contain 包含
NotContain 不包含

excel中正则表达式或者日期类型值等特殊符号字符串,需要用双引号包裹,比如:"2023-11-11 12:12:10" "^1[3456789]\d{9}$"

Excel中示例

undefined

results matching ""

    No results matching ""