EasyRule规则引擎设计及使用说明.docx

上传人:b****2 文档编号:2865682 上传时间:2023-05-04 格式:DOCX 页数:11 大小:160.67KB
下载 相关 举报
EasyRule规则引擎设计及使用说明.docx_第1页
第1页 / 共11页
EasyRule规则引擎设计及使用说明.docx_第2页
第2页 / 共11页
EasyRule规则引擎设计及使用说明.docx_第3页
第3页 / 共11页
EasyRule规则引擎设计及使用说明.docx_第4页
第4页 / 共11页
EasyRule规则引擎设计及使用说明.docx_第5页
第5页 / 共11页
EasyRule规则引擎设计及使用说明.docx_第6页
第6页 / 共11页
EasyRule规则引擎设计及使用说明.docx_第7页
第7页 / 共11页
EasyRule规则引擎设计及使用说明.docx_第8页
第8页 / 共11页
EasyRule规则引擎设计及使用说明.docx_第9页
第9页 / 共11页
EasyRule规则引擎设计及使用说明.docx_第10页
第10页 / 共11页
EasyRule规则引擎设计及使用说明.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EasyRule规则引擎设计及使用说明.docx

《EasyRule规则引擎设计及使用说明.docx》由会员分享,可在线阅读,更多相关《EasyRule规则引擎设计及使用说明.docx(11页珍藏版)》请在冰点文库上搜索。

EasyRule规则引擎设计及使用说明.docx

EasyRule规则引擎设计及使用说明

规则引擎使用文档

 

2012年10月

 

1.设计背景

复杂企业级项目的开发以及其中随外部条件不断变化的业务规则(businesslogic),迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时(即商务时间)可以动态地管理和修改从而提供软件系统的柔性和适应性。

规则引擎正是应用于上述动态环境中的一种解决方法。

2.什么是规则引擎

为了进一步规范系统数据的有效性、完整性,加强对数据的校验在目前各个系统是必不可少的一部分,规则引擎实现对系统数据的纵向、横向校验以及表与表之间逻辑关系校验,它可以作为一个子模块添加到任意以JAVA为基础的系统当中去,同时制定相关接口规范,开发人员只需按照规范便可以对它进行二次扩展性的开发。

3.体系结构

规则引擎由以下六大部分组成:

1.函数:

负责对数据的格式化处理,比如数据统计。

2.公式:

负责对数据的逻辑处理,比如值之间比大小。

3.规则配置文件:

配置校验数据的规则。

4.规则模型配置文件:

配置校验数据规则的集合。

5.公式、函数配置文件:

配置系统所有相关的函数以及公式。

6.引擎主程序:

调用规则引擎的入口。

7.数据库配置文件:

与数据库相关的配置文件。

以上几大部分均可由开发人员灵活配置以便后续再次扩展,程序类包机构如下如下:

类图如下:

4.如何调用规则引擎

将规则引擎作为子模块加入的主业务系统后,主业务系统只需在程序里调用规则引擎的com.git.easyrule.service.RuleService类的runRule()和runModel()方法即可,规则引擎启动之后便根据自身的规则配置项对数据进行校验处理,处理结果将存入规则文件配置的指定表当中。

在调用RuleService类的runRule()和runModel()方法时需传入几个参数,以下表格是参数说明:

参数名

类型

中文说明

备注

RuleID/ModelID

String

规则ID/规则模型ID

数据校验规则文件

paramMap

Map

参数对象

后台所有规则需要用到的变量集合

源方法代码:

RuleServicers=newRuleService();

MapparamMap=newHashMap();

paramMap.put("num","1");

paramMap.put("cardNo","130********7125635");

ListmsgList=rs.runModel("M0002",paramMap);

ListmsgList=rs.runRule("R0001",paramMap);

5.配置使用说明

规则引擎的配置由三大部分组成:

1.数据库配置:

配置被检测的数据源。

2.公式函数配置:

系统所有的公式函数类由该配置文件管理。

3.校验规则配置:

系统所有的规则由该配置文件管理。

4.校验规则模型配置:

系统所有的规则校验模型由该配置文件管理。

5.1数据库配置文件env.properties

规则引擎的数据配置既可以共用主业务系统的配置文件,也可以独立采用该文件对其进行灵活配置,以下是具体的配置说明:

配置项

中文说明

备注

easyDriver

JDBC访问数据库的驱动

easyUrl

数据库路径

easyUsername

用户名

easyPassword

密码

5.2公式、函数配置文件ruleEngine_beans.xml

具体详细请参考本配置文件里的内容,本文件是标准的Spring配置文件。

5.3数据校验规则文件ruleEngine_rules.xml

1.rule节点:

对表数据的纵向校验以及逻辑校验。

节点

属性

含义

备注

 

rule

id

规则ID

name

规则名称

checktype

检测的公式

1.该ID应与

ruleEngine_beans.xml

配置的ID保持一致。

2.公式可以有多个,以“-”符号分隔。

startValue

范围顶值

endValue

范围底值

checkedFieldName

被检测的值

errCode

错误码

errMsg

错误信息

targetDataList

比对值

可以有多个,以”;”符分隔

checkLevel

检查级别

1:

info;2:

warn;3:

err

sql

通过该SQL语句获取结果集,SQL可以有变量以@开头

示例:

selectcount(loan_id)v1,nvl(max(loan_length),0)v2fromTB_LON_LOANwhereCLOSE_FLAG='0'andLOAN_LEVEL_FIVE_CLASSin('3','4','5')andCUS_ID=@cusId

selectcount(loan_id)v3fromTB_LON_LOAN_APPLICATIONwhereCUS_ID=@cusId

示例说明:

规则引擎执行“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

规则模型ID

name

规则模型名称

isIgnore

是否忽略错误

1.true:

忽略规则模型中的规则错误

2.false:

不忽略规则模型中的规则错误

当模型配置为true(忽略错误)时,模型中的所有规则都会执行,最后将返回所有错误规则的检查结果集合;

当模型配置为false(不忽略错误)时,模型中只要有一条规则不符合规则,就会停止检查,返回该条规则的错误信息。

rule

配置模型中包含的规则ID

2、rule节点:

对表数据的纵向校验以及逻辑校验。

节点

属性

含义

备注

 

rule

id

规则ID

name

规则名称

checktype

检测的公式

1.该ID应与

ruleEngine_beans.xml

配置的ID保持一致。

2.公式可以有多个,以“-”符号分隔。

startValue

范围顶值

如果是sql查询的结果以$开头,如果是外部传入则以@开头。

endValue

范围底值

如果是sql查询的结果以$开头,如果是外部传入则以@开头。

checkedFieldName

被检测的值

如果是sql查询的结果以$开头,如果是外部传入则以@开头。

errCode

错误码

errMsg

错误信息

可以包含规则参数,参数名与规则内的参数名一致即可。

targetDataList

比对值

可以有多个,以”;”符分隔

checkLevel

检查级别

1:

info;2:

warn;3:

err

sql

通过该SQL语句获取的结果可以作为规则的参数,以$开头,SQL可以有变量以@开头,通过外部传入。

6.引擎现有的公式、函数

1.公式

公式名

说明

是否已经支持

eqs

判断字符串是否相等

ineqs

判断字符串是否不相等

eqn

判断数字是否相等

ineqn

判断数字是否不相等

greater

大于

less

小于

ge

大于等于

le

小于等于

isnum

判断是数字

notnum

判断不是数字

isint

判断是整数

idvalid

判断身份证合法

dateafter

在XX日期之后

datebegin

在XX日期之前

2.函数

函数名

说明

是否已经支持

Sum(p…..N)

汇总多个参数值得和,参数可以有多个,中间以逗号分隔

Len(p)

取参数的长度

注:

1.P:

代表参数,N代表可以有多个。

2.规则引擎的函数支持函数嵌套,嵌套之后的函数会预先执行最里面的函数再依次执行外面的函数,如:

checkedFieldName="#sum(#sum($v1,$V5),#sum($v2,$V6),$v3,$v4)"

执行顺序:

首先执行#sum($v1,$V5)函数,然后执行#sum($v2,$V6)函数,最后执行最外面的#sum函数。

7.扩展规则引擎

由于目前规则引擎提供的规则数量有限,为了使其更加符合主业务系统各方面的数据校验处理,规则引擎提供了相关接口供开发人员再次扩展。

规则引擎的扩展主要包括两部分:

一.函数扩展,二.公式扩展。

7.1.扩展函数

1.实现函数接口:

主要实现com.git.easyrule.func.Function接口的publicStringgetValue(Listlist)方法,同时实现类放在com.git.easyrule.func目录

2.添加配置项:

在ruleEngine_beans.xml文件中添加配置Bean,同时Bean的Name

以”function_”开头,如下:

7.2扩展公式

1.实现公式接口:

主要实现com.git.easyrule.formula.Formula接口的

publicbooleanexecute(Rulerule,Maprecord,MapsysVarMap)方法,同时实现类放在com.git.easyrule.formula.impl目录下,参数说明如下:

rule:

具体规则。

Record:

MAP结果集

sysVarMap:

系统变量MAP。

2.添加配置项:

在ruleEngine_beans.xml文件中添加配置Bean,同时Bean的Name

以”Formula_”开头,如下:

class="com.git.easyrule.formula.impl.FormulaForIneqString">

8结束语

规则引擎为管理多变的业务逻辑提供了一种解决方案。

规则引擎既能管理应用层的业务逻辑又能使表示层的页面流程可订制。

这就给软件架构师设计大型信息系统提供了一项新的选择。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2