drools规则引擎设计

规则引擎原理:http://www.open-open.com/lib/view/open1417528754230.html

规则引擎有很多,创建规则引擎的目的,简单的来说,是为了实现智能化,在规则改变的时候,业务代码不需要改变,不需要根据规则来编写新的代码。
规则引擎的计算,和神经网络算法相似,将规则按照LHS 和LRH 执行。

drools语法就不说了,来说一下规则怎么可以不需要通过文件来编写,直接将规则保存到数据库中,通过将数据库中的规则来动态的修改规则。

drools使用

  • 1.有一个使用的场景,即:事件;
    2.有很多规则 规则
    3.每条规则有很多条件 条件
    4.每个条件是由一个元素组成
    组成部分: 事件 规则 条件 元素
    关系:元素是最小单元 ,其次是 ,条件,规则,事件 简单的描述: 一个事件是由多个规则组成 ,一个规则由多个条件组成 ,一个条件由多个元素组成

          元素:就是属性字段  eg。p_age  年龄  p_gender 性别
          条件:元素进行运算操作  eg。c_1: p_age > 10 年龄大于10 c_2: p_gender==男 
          规则:条件的组合集  eg, r_1: c_1&c_2 p_age>10&p_age<20  年龄大于10小于20   r_2:c_2  p_gender==男
          事件:规则的组合集  eg。 e_1:r_1||r_2  
    

比如:根据不同的积分、性别、开户时间 等 奖励不同的礼券

  • 积分小于100,奖励10块
  • 积分100到200,奖励20
  • 积分200-500,奖励30
  • 男 奖励10
  • 女奖励15
  • 开户一年 奖励10
  • 最近3个月开户 奖励5
  • 男,积分大于500 奖励 200

“根据不同的积分、性别、开户时间 等 奖励不同的礼券” ,就是一个事件;
“男,积分大于500 奖励 200”,就是一个规则,其中包含的条件可以是多个,比如这条规则,要是男的,积分还要大于500;
“积分小于100”,就是一个条件;
“积分”,“男” “女” “开户时间”,这些就是元素;

一个事件使用多条规则组成的,一条规则是用多个条件组成,一个条件又由元素组成的。
drools规则引擎设计_第1张图片

只需要维护元素,规则 ,条件,事件 就可以 维护一个规则模型。

具体操作:

  1. 维护元素 元素类型 数值,字符串等
  2. 维护条件 保存条件组成的元素,操作,eg,字符串包含,相等,不包含;
  3. 维护规则 根据drools语法,构建规则 ; eg ,
rule "rule_1"
    lock-on-active true
    salience 100
when
    factData : FactData( (paramMap.get("gender") == "男") )  
then
	factData.setResultScore(10);
	update(factData);
end
rule "rule_2"
    lock-on-active true
    salience 100
when
    factData : FactData( (paramMap.get("setUpTime") > 365000)& (paramMap.get("gender") =="女"))  
then
	factData.setResultScore(10);
	update(factData);
end
  1. 维护事件 事件包含多个规则

通过多模型的操作,将事件直接维护在数据库,当规则改动或者新加的时候,都不需要重新发布项目,加载drools 规则文件。

你可能感兴趣的:(drools规则引擎设计)