收藏 分享(赏)

谢谢 - DevOps、微服务、大数据原创文章、视频、活动 - 最.ppt

上传人:杨桃文库 文档编号:4700361 上传时间:2019-01-07 格式:PPT 页数:21 大小:1.58MB
下载 相关 举报
谢谢 - DevOps、微服务、大数据原创文章、视频、活动 - 最.ppt_第1页
第1页 / 共21页
谢谢 - DevOps、微服务、大数据原创文章、视频、活动 - 最.ppt_第2页
第2页 / 共21页
谢谢 - DevOps、微服务、大数据原创文章、视频、活动 - 最.ppt_第3页
第3页 / 共21页
谢谢 - DevOps、微服务、大数据原创文章、视频、活动 - 最.ppt_第4页
第4页 / 共21页
谢谢 - DevOps、微服务、大数据原创文章、视频、活动 - 最.ppt_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、传统的ifelse使程序逻辑混乱,可调试性和可维护性非常差。业务规则与程序代码分离,可维护性非常好。高效的规则匹配算法,提高了代码执行效率。,为什么要使用规则引擎,Jboss的开源项目全Java开发的,可以很好的java项目结合采用了Rete规则匹配算法,规则匹配效率高拥有简单易用的规则语法有强大的社区支持,Drools简介,过生日,积分加10分,并且将当月交易翻倍后再计算积分package com.drools.demo.point import com.drools.demo.point.PointDomain; rule birthdayPoint/ 过生日,则加10分,并且将当月交易翻

2、倍后再计算积分salience 100lock-on-active truewhen$pointDomain : PointDomain(birthDay = true)then$pointDomain.setPoint($pointDomain.getPoint()+10);$pointDomain.setBuyNums($pointDomain.getBuyNums()*2);$pointDomain.setBuyMoney($pointDomain.getBuyMoney()*2);$pointDomain.setBillThisMonth($pointDomain.getBillThi

3、sMonth()*2); end,Drools规则实例,package:对一个规则文件而言,package是必须定义的,必须放在规则文件第一行。特别的是,package的名字是随意的,不必必须对应物理路径,跟java的package的概念不同,这里只是逻辑上的一种区分。同样的package下定义的function和query等可以直接使用。import:导入规则文件需要使用到的外部变量,这里的使用方法跟java相同,但是不同于java的是,这里的import导入的不仅仅可以是一个类,也可以是这个类中的某一个可访问的静态方法。rule:定义一个规则。rule “ruleName“。一个规则可以包

4、含三个部分:属性部分:定义当前规则执行的一些属性等,比如是否可被重复执行、过期时间、生效时间等。条件部分,即LHS,定义当前规则的条件,如when Message(); 判断当前workingMemory中是否存在Message对象。结果部分,即RHS,这里可以写普通java代码,即当前规则条件满足后执行的操作,可以直接调用Fact对象的方法来操作应用。,Drools语法,no-loop : 定义当前的规则是否不允许多次循环执行,默认是false,也就是当前的规则只要满足条件,可以无限次执行。lock-on-active true:通过这个标签,可以控制当前的规则只会被执行一次,因为一个规则的

5、重复执行不一定是本身触发的,也可能是其他规则触发的,所以这个是no-loop的加强版。当然该标签正规的用法会有其他的标签的配合,后续提及。date-expires:设置规则的过期时间,默认的时间格式:“日-月-年”,中英文格式相同,但是写法要用各自对应的语言,比如中文:“29-七月-2010“,但是还是推荐使用更为精确和习惯的格式,这需要手动在java代码中设置当前系统的时间格式,后续提及。属性用法举例:date-expires “2011-01-31 23:59:59“ / 这里我们使用了更为习惯的时间格式date-effective:设置规则的生效时间,时间格式同上。duration:规则

6、定时,duration 3000 3秒后执行规则salience:优先级,数值越大越先执行,这个可以控制规则的执行顺序。,Drools语法,何时使用决策表如果规则能够被表达为模板+数据的格式,那你应该考虑使用决策表。决策表中的每一行就是对应模板的一行数据,将产生一个规则。 运行决策表Drools引擎所部署的系统中执行决策表。首先,决策表转换成的Drools规则语言(DRL),然后执行规则引擎需求。这意味着它是可能的业务规则的变更,无需停止和启动,或重新部署任何软件。,drools Decision Table(决策表),drools Decision Table(决策表),Drools组件,D

7、rools 是业务逻辑集成平台,被分为4个项目:Drools Guvnor (BRMS/BPMS):业务规则管理系统Drools Expert (rule engine):规则引擎,drools的核心部分Drools Flow (process/workflow):工作流引擎Drools Fusion (cep/temporal reasoning):事件处理,Drools规则流,JBoss规则引擎已经提供了一些功能来定义规则的执行顺序,例如salience、activation groups等等。当处理海量的规则时,管理规则激发的顺序会变得很复杂。规则流允许你指定一个规则评估的流程。这允许你

8、指定哪些规则应该按照先后顺序或并发的评估,指定规则评估的先决条件等等。,Drools规则流,Drools规则流,Drools事件,从drools视图来看,事件就是一个特殊的事实(fact)。我们说,所有的事件都是事实,但是所有的事实并不都是事件。 通常不可变:事件是在应用程序域中状态改变的记录。强时间约束:规则涉及的事件通常需要多个事件的相互关系,尤其某个事件相对其他事件发生的时间点的时间关系。可管理的生命周期:由于上两个事件特征的原因,事件通常在一个有限的时间窗(Time Window)匹配事件和事实。 滑动窗( sliding windows)的使用:由于所有的事件都有关联的时间戳,可以定

9、义并使用滑动窗,让事件在特定的一段时间有效。,Drools事件,$eventA : EventA( this before 3m30s, 4m $eventB ) 也就是: 3m30s = $eventB.startTimestamp - $eventA.endTimeStamp = 4m $eventA : EventA( this after 3m30s, 4m $eventB ) 也就是: 3m30s = $eventA.startTimestamp - $eventB.endTimeStamp = 4m $eventA : EventA( this meets $eventB ) 也就

10、是: abs( $eventB.startTimestamp - $eventA.endTimestamp ) = 0,Drools专家系统,RBES包括三部分: Rule Base(knowledge base) Working Memory(fact base) Inference Engine。引擎包括三部分: 模式匹配器(Pattern Matcher) 议程(Agenda) 执行引擎(Execution Engine),Drools专家系统,Java规则引擎的结构示意图,相关概念:(1)事实(Fact):对象之间及对象属性之间的关系(2)规则(rule):是由条件和结论构成的推理语句

11、,一般表示为if.Then。一个规则的if部分称为LHS,then部分称为RHS。(3)模式(module):就是指IF语句的条件。这里IF条件可能是有几个更小的条件组成的大条件。模式就是指的不能在继续分割下去的最小的原子条件。,RETE算法,RETE推理网络的生成过程: 简单点说,就是从规则集规则1,规则2中拿出一条来,根据一定算法,变成RETE推理网络的节点。不断循环将所有规则都处理完,RETE推理网络就生成了。 这里的一定算法具体过程如下: 1、创建root节点(根节点),推理网络的入口。 2、拿到规则1,从规则1中取出模式1(前面说了,模式就是最小的原子条件,所以规则模式的关系是1:n

12、)。a)检查模式1中的参数类型,如果是新类型,添加一个类型节点。b)检查模式1对应的Alpha节点是否存在,如果存在记录下节点的位置;如果没有,将模式1作为一个Alpha节点加入到网络中。同时根据Alpha节点建立Alpah内存表。c)重复b,直到处理完所有模式。d)组合Beta节点:Beta(2)左输入节点为Alpha(1),右输入节点为Alpha(2)Beta(i)左输入节点是Beta(i-1),右输入节点为Alpha(i)e)重复d,直到所有Beta节点处理完毕f)将动作Then部分封装成最后节点做为Beta(n) 3、重复2,直到所有规则处理完毕,RETE算法,RETE算法,RETE算法,谢谢,

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报