常量库文件
在业务系统开发过程中,常常会用到一个枚举数据,比如用户的性别、学历等,在URule Pro当中,通过定义常量库文件,可以将系统中使用的这些枚举数据映射到规则中使用,这样就可以避免规则定义过程中枚举数据手工输入存在错误的可能性。
在“库”节点上右键,创建一个常量库文件,如下图所示:
与变量库文件类似,常量也是由分类和具体的常量值构成,比如性别有男女之分,那么这里的“性别”就属性分类,“男”、“女”就属性具体的常量值。在常量的分类中,“名称”一般定义具体的分类名,“标题”是一段描述(比如“性别”是标题,“gender”是名称),同样这个标题也会出现在规则引用当中;加好分类后就可以添加这个分类下具体的常量值,常量值也有名称和标题之分,名称是具体的常量值,标题则是描述,比如“男”是标题,"true"是名称,同样“女”是标题,“false”是名称。
同样,在一个常量库文件中可以根据需要添加多个常量分类。
常量定义时,其名称值可使用Spring中加载的properties文件值,具体使用方法是将要引用的properties的key值用${...}包裹,这样在具体规则运行时会动态查找这个包裹的属性值作为具体的常量,如:${app.title}表示取spring中properties文件的名为app.title的属性值。利用这一功能,可实现测试环境与生产环境的动态切换。
常量类型 | 说明 |
---|---|
String | 字符串 |
Char | 单个字符,如果值设置的是字符串,只会返回字符串的第一个字符 |
Integer | 整型 |
Long | 长整型 |
Float | 单精度浮点型,超出位数将被截取 |
Double | 双精度浮点型,超出位数将被截取 |
BigDecimal | 高精度类型 |
Boolean | 布尔型,值设置参考Boolean.valueOf |
Date | 时间类型,输入时间格式有:yyyy-MM-dd HH:mm:ss、yyyy-MM-dd HH:mm、yyyy-MM-dd |
List | ArrayList集合,值的设置方式为: 基础类型集合:s4,s1,s2,s3 复杂类型集合:[{"id":"4","name":"user4"},{"id":"1","name":"user1"}] |
Set | TreeSet集合,值的设置方式为: 基础类型集合:s8,s5,s6,s7 复杂类型集合:[{"a1":"s8"},{"a1":"s5"},{"a1":"s6"},{"a1":"s7"}] |
Map | HashMap集合,值的设置方式为:JSON格式,比如:{"a":"1","b":"2","c":"3"} |
Enum | 任意值 |
Object | 任意值 |
常量库维护的3种方式
手工添加
如上述的操作过程。
从Java枚举类中直接导入
(1)常量库文件在定义时支持从一个具体的Java枚举类中直接导入,方法是在常量分类上右键【根据类路径生成常量】,在弹出的窗口中输入完整的枚举类路径,如下图所示:
(2)在点击【确定】按钮后,即可实现将枚举类里的枚举值导入到当前常量分类之下,如下图所示:
(3)枚举类代码
在通过枚举类导入具体常量时,如果枚举类中未定义getLabel方法,那么导入的枚举信息则只采用其name属性,如果定义了getLabel方法,那么导入后的枚举信息则包含name和label,包含getLabel方法的枚举类示例如下所示:
package
public enum TestEnum {
aaa("张三"),bbb("李四");
private String label;
private TestEnum(String label) {
this.label=label;
}
public String getLabel() {
return label;
}
}
excel导入
(1)在excel中作如下定义,注意sheet页名称是常量的分类名,表格列依次是名称、标题、数据类型
(2)点击“导入Excel”按钮,选择上述模板文件,最后上传即可