普通规则
打开决策集编辑器,点击工具栏上“添加规则”按钮就可以在下面的工作区里添加了一个普通的规则,如下图所示:
一个普通规则主体是由如果、那么、否则构成,点击规则名可以对规则名进行修改,修改完成后鼠标点击页签处离开焦点就完成了规则名的修改确认;点击“添加属性”链接可以为当前规则定义相关属性。无论是普通规则还是循环规则都支持下面这些属性。
中文属性名 | 值类型 | 描述 |
---|---|---|
优先级 | 数字 | 当有多个规则满足条件时,这个值用来决定这些满足条件规则中动作的执行顺序,值越大,执行顺序越靠前。如不设置这个值,那按条件满足的顺序执行,也就是说如果不配置优先级属性规则的执行顺序是不确定的。 |
生效日期 | 字符串 | 当规则设置了生效日期,表示这个规则只有在当前系统日期为大于等于生效日期时才会生效,否则即使条件满足也不会触发当前规则,如不设置,则不会对规则执行产生影响。该属性的值要求是一个日期格式的字符串,格式为:yyyy-MM-dd HH:mm:ss |
失效日期 | 字符串 | 与生效日期对应,当规则设置失效日期时,一旦当前系统日期大于或等于失效日期,即使条件满足规则也不会触发执行,如不设置,则不会对规则执行产生影响。属性的值要求是一个日期格式的字符串,格式为:yyyy-MM-dd HH:mm:ss |
是否启用 | 布尔值 | 默认值为true,也就是启用当前规则;如设置为false,即使条件满足规则也不会触发执行,如不设置,则不会对规则执行产生影响。 |
允许调试信息输出 | 布尔值 | 默认为false,表示不输出调试信息,设置为true后,规则在执行时会在控制台输出规则条件的匹配信息、规则动作的执行信息;如果规则计算过程出现异常,还会在控制台输出计算出现异常的位置,以便于我们快速定义规则错误位置。需要注意的是,如果项目的urule.debug属性设置为false时,规则的这个属性会被覆盖,也就是说即使设置为true也不会输出任何信息。 |
互斥组 | 字符串 | 系统会自动将此属性相同的规则划为一组,且这个组中只有一个规则会执行,待执行的规则如设置了优先级,则优先级最高的规则执行,否则随机;需要注意的是,互斥组属性仅在当前规则集文件默认模式下有用,在顺序模式下互斥组属性将不起作用。 |
执行组 | 字符串 | 系统会自动将此属性相同的规则划为一组,默认情况下,引擎不会执行这个组里的规则,需要我们在定义规则动作时利用系统内置的函数显示的指定要激活执行的执行组名,这样系统才会尝试匹配并执行组里的规则。 |
在使用过程当中,如果一个规则配置了执行组,也配置了互斥组属性,那么这个规则对应的执行组属性被激活后,其中配置了互斥组属性的规则将按互斥组属性执行原则执行。
在决策集编辑器工具栏上名为配置的按钮菜单下有一个用于控制当前文件中所有向导式规则日志输出的开关按钮,它的默认为关闭状态,如果我们希望打开当前文件中所有规则的日志输出功能,那么只需要在这里将其打开即可;当然也可以通过规则中的“允许日志输出”属性来单独设置某个规则是否输出日志,它可以覆盖配置按钮下的日志输出选项。
规则名及属性定义完成后,接下来就可以开始配置规则的主体部分,首先是“如果”部分,在如果部分当中可以添加若干条件,添加完条件后,就可以通过鼠标点击以向导方式设置条件,如下图:
对于一个具体的条件来说,我们可以将其分为三个部分,分别是条件左边部分、比较操作符以及条件右边部分。条件左边部分,如上图所示我们可选择的有变量、参数或者方法或函数,当然这相应的需要我们导入相关的变量库、参数库以及方法库;对于操作符目前URule Pro当中提供了下面这些操作比较符,如下图所示:
这些操作比较符基本已涵盖我们业务当中所有类型的比较操作。选择完比较操作符后,我们就可以来设置条件右边部分。条件右边部分相比左边,可选择的值类型会更多一些,如下图:
一旦选择某种类型值之后,我们就可以进入下一步操作,同时在URule Pro当中无论条件左值还是条件右值都可以进行无限多级简单的加、减、乘、除等运算操作,如下图所示:
注意:上图中诸如 >、<、== 之类的运算操作返回值为一个布尔(true/false)类型的值,这点与+、-、x、÷、%之类运算符产生的结果不同。
在URule Pro当中,对于所有的菜单项,通过点击菜单项上的配置按钮,可以设置菜单项个数大于多少个时出现过滤框,默认是菜单项大于15个时就会出现,使用时,可以根据自己的喜好对出现过滤框的时机进行定义。
在配置条件时,需要我们把之前定义好的变量库文件、参数库文件、常量库文件、动作库文件导入进来。对于条件来说,可以是多个条件,也可以是多个复合条件组合,这样都是通过鼠标点击操作完成,这里就不再赘述。
条件配置完成后,可以为“那么”或“否则”部分添加动作,那么部分的动作只有条件满足时才会执行,如果未配置条件,那就意味着无条件执行,也就是说未配置条件会直接执行那么部分的动作;否则部分的动作在条件不满足时执行。不加动作意味着什么也不干,动作可以有多个,多个动作添加完成后可以通过拖曳改变顺序。
目前在URule Pro当中支持的动作类型有三种,分别是:打印内容到控制台、变量赋值以及执行方法或函数,如下图所示:
打印内容到控制台其实就是将我们需要的信息打印输出到日志中,我们可以在日志中看到具体的输出内容,输出内容可以是一个普通的输入值,也可以是一些复杂的值类型或它们的加、减、乘、除组合,及添加括号定义算术运行优先级。
变量赋值也就是给当前导入的变量库或参数库的值进行赋值,值类型可以是一个普通的输入值,也可以是一些复杂的值类型或它们的加、减、乘、除组合,及添加括号定义算术运行优先级。
最后一种类型的动作是执行方法或函数,要选择执行的方法或函数,前提是我们必须方法所在的动作库文件导入到当前规则文件当中,否则就看不到要执行的方法,一旦选择执行方法后,如果当前方法当中包含参数,那么我们也需要选择相应的值为参数赋值,同样参数的值可以是一个普通的输入值,也可以是一些复杂的值类型或它们的加、减、乘、除组合。动作的具体配置都是基于鼠标点击操作的,比较简单,这里不再赘述。
在向导式规则编辑器中,可以通过鼠标拖曳来改变那么或否则部分的动作顺序,同时,对于多个规则文件,也可以通过悬浮于右上方的规则导航以拖曳方式来改变它们的显示顺序。