4. 如何调用规则引擎
将规则引擎作为子模块加入的主业务系统后,主业务系统只需在程序里调用规则引擎的com.git.easyrule.service.RuleService类的runRule()和runModel()方法即可,规则引擎启动之后便根据自身的规则配置项对数据进行校验处理,处理结果将存入规则文件配置的指定表当中。
在调用RuleService类的runRule()和runModel()方法时需传入几个参数,以下表格是参数说明: 参数名 RuleID/ModelID paramMap Map
源方法代码:
参数对象 后台所有规则需要用到的变量集合 类型 中文说明 备注 数据校验规则文件 String 规则ID/规则模型ID
RuleService rs = new RuleService();
Map
paramMap.put(\, \);
List
5 / 10
5. 配置使用说明
规则引擎的配置由三大部分组成:
1. 数据库配置:配置被检测的数据源。
2. 公式函数配置:系统所有的公式函数类由该配置文件管理。 3. 校验规则配置:系统所有的规则由该配置文件管理。
4. 校验规则模型配置:系统所有的规则校验模型由该配置文件管理。 5.1 数据库配置文件env.properties
规则引擎的数据配置既可以共用主业务系统的配置文件,也可以独立采用该文件对其
进行灵活配置,以下是具体的配置说明:
配置项 easyDriver easyUrl easyUsername easyPassword 中文说明 JDBC访问数据库的驱动 数据库路径 用户名 密码 备注 5.2 公式、函数配置文件ruleEngine_beans.xml
具体详细请参考本配置文件里的内容,本文件是标准的Spring配置文件。
5.3 数据校验规则文件ruleEngine_rules.xml
1. rule节点:对表数据的纵向校验以及逻辑校验。
节点 rule 属性 id name checktype 含义 规则ID 规则名称 检测的公式 备注 1.该ID应与 ruleEngine_beans.xml 配置的ID保持一致。 2.公式可以有多个,以“-”符号分隔。 startValue endValue checkedFieldName errCode errMsg targetDataList checkLevel sql
范围顶值 范围底值 被检测的值 错误码 错误信息 比对值 检查级别 可以有多个,以”;”符分隔 1:info;2:warn;3:err 通过该SQL语句获取结果集,SQL可以有变量以@开头
6 / 10
示例:
示例说明:规则引擎执行“R0002”规则的顺序如下:
1. 规则引擎获取SQL节点的语句,如果该SQL语句有变量,规则引擎根据将预
设的变量值赋给SQL语句组成一个可以执行的字符串,并通过该字符串到数据库查出符合条件的结果集。如果结果集没有数据将不执行本节点的所有规则。
2. 如果结果集有数据,规则引擎先执行R0001规则:获取结果集中的v1,v2,v3
字段对应的值,并将这三个变量值作为参数执行checkedFieldName设置的函数,计算出的结果作为此规则的被检测值传入checktype节点定义的所有公式中,greater公式将该值和startValue配置的值进行是否大于运算,如果返回true继续执行下一个公式,如果返回false,该规则直接不通过。
5.4 数据校验规则模型文件ruleEngine_models.xml
本文件的配置节点由两部分组成,规则引擎根据不同节点进行相应的规则校验:
1、model节点:提供负责的逻辑模型校验。 节点 model 属性 id name isIgnore 含义 规则模型ID 备注 规则模型名称 是否忽略错误 1. true:忽略规则模型中的规则错误 2. false:不忽略规则模型中的规则错误 当模型配置为true(忽略错误)时,模型中的所有规则都会执行,最后将返回所有错误规则的检查结果集合; 当模型配置为false(不忽略错误)时,模型中只要有一条规则不符合规则,就会停止检查,返回该条规则的错误信息。 rule 配置模型中包含的规则ID
2、rule节点:对表数据的纵向校验以及逻辑校验。
7 / 10
节点 rule 属性 id name checktype 含义 规则ID 规则名称 检测的公式 备注 1.该ID应与 ruleEngine_beans.xml 配置的ID保持一致。 2.公式可以有多个,以“-”符号分隔。 startValue 范围顶值 如果是sql查询的结果以$开头,如果是外部传入则以@开头。 endValue 范围底值 如果是sql查询的结果以$开头,如果是外部传入则以@开头。 checkedFieldName 被检测的值 如果是sql查询的结果以$开头,如果是外部传入则以@开头。 errCode errMsg targetDataList checkLevel sql 错误码 错误信息 比对值 检查级别 可以包含规则参数,参数名与规则内的参数名一致即可。 可以有多个,以”;”符分隔 1:info;2:warn;3:err 通过该SQL语句获取的结果可以作为规则的参数,以$开头,SQL可以有变量以@开头,通过外部传入。
6. 引擎现有的公式、函数
1. 公式
公式名 eqs ineqs eqn ineqn greater less ge le isnum notnum isint idvalid
说明 判断字符串是否相等 判断字符串是否不相等 判断数字是否相等 判断数字是否不相等 大于 小于 大于等于 小于等于 判断是数字 判断不是数字 判断是整数 判断身份证合法
是否已经支持 是 是 是 是 是 是 是 是 是 是 是 是 8 / 10

