项目部署初始化:urule基于springboot的部署以及初始化页面
urule初始化注册登录后,创建自己的团队,创建自己的项目(此处创建省略,没什么可说的,根据指示就OK了)创建完成后如下:
点击项目名进入规则编辑页面
点击设计规则
在这里可以看到urule提供的规则集、决策表、交叉决策表(决策矩阵)、决策树、评分卡、复杂评分卡、规则流等八种类型的业务规则设计工具
设计前需要设计自己的库文件,像JAVA代码需要设计自己的对象和属性,注意库文件名称唯一性
变量库的设计
在业务系统开发过程中,会用到大量包含Getter和Setter方法的简单的Java对象,它们被称之为POJO(Plain Ordinary Java Object),或BOM\(Business Object Model\)对象,这些对象在开发中作为数据的载体,负责数据的传递。在URule Pro当中,变量库就是用来映射这些POJO对象,从而使得我们可以在具体的规则文件中使用它们,从而完成规则与业务数据的交互。
点击添加变量,变量添加后,要给变量添加相关的字段,“用途”一列有三个选项“in,out,inout”in表示变量只能用于输入、不能用于输出,out表示用于输出(跟in相反),设置为inout可以用于输入、输出,设置完变量后一定要保存!保存!保存!
如果需要JSON导入变量,右键选中根据JSON生成字段
把你的JSON格式的对象copy过来,然后点击下一步,可以看到结构为树形的对象,再次点击下一步,可以选择你要生成的字段,最后点击确定,图示如下
b.常量库设计
在业务系统开发过程中,常常会用到一个枚举数据,比如用户的性别、学历等,在URule Pro当中,通过定义常量库文件,可以将系统中使用的这些枚举数据映射到规则中使用,这样就可以避免规则定义过程中枚举数据手工输入存在错误的可能性
下面是常量各种类型的值的书写,可以做参考
常量类型 | 说明 |
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 | 任意值 |
c.参数库,参数库和在java开发中需要用的临时变量一样
在规则的条件判断与计算过程当中,可能会用到一些临时的变量来存储值,这些临时变量数量和类型都可能是不固定的,对于这种类型的临时变量,URule Pro以参数的形式提供,通过参数库就可以定义这些在规则中要使用到的临时变量
点击添加参数,设置相关的中间变量,设置完成后点击保存。
d.动作库
动作库文件的作用是对配置在spring中的bean方法进行映射,使得我们可以直接在规则当中调用这些方法。同样在项目的“库”节点下创建一个动作库文件,可以看到动作库文件内容有三列,分别是动作名称,bean的id定义列,方法名定义列,以及方法对应的参数定义列,如下图所示
添加成功后,为了在规则中更好的可读性,我们可以修改“动作名称”、“方法名称”以及“参数名称”。
java代码
@Component
public class BonusPoints {
@ExposeAction("奖金计算")
public Long sum(Long money,Integer mouth ){
if(mouth>6){
return money;
}else if (mouth>=10){
return money*2;
}else {
return 0L;
}
}
}
URULE提供了许多内置动作,也可以自定义内置动作,内置动作就相当于JAVA当中的公共方法,在所有都有可能用到的情况下可以考虑使用内置动作,动作库在某种情况下需要可以定义。
变量库、参数库、动作库、常量库这些库文件定义好后,就可以在各种类型的规则文件中导入并使用它们。
总结:
变量库、参数库、动作库、常量库这些库文件就像java代码中用到的实体类,临时变量,工具类,枚举数据,所以库文件实际就是规则设计前的准备,设计规则时需要导入到规则里。总体来看,设计简单实用,节约时间成本。