收藏 分销(赏)

JBoss-Drools教程PPT学习课件.ppt

上传人:人****来 文档编号:10065366 上传时间:2025-04-20 格式:PPT 页数:61 大小:1.92MB
下载 相关 举报
JBoss-Drools教程PPT学习课件.ppt_第1页
第1页 / 共61页
JBoss-Drools教程PPT学习课件.ppt_第2页
第2页 / 共61页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,JBoss Drools,刘俊豪,1,议程,JBoss Drools,介绍,Hello Drools,Drools Rule Language,Domain Specific Language,Flow,Drools Guvnor,2,2025/4/20 周日,Drools,简介,Drools,是,Redhat,公司,JBoss,业务逻辑智能模块。,www.jboss.org/drools/,Drools,是处理规则的专家系统。,3,2025/4/20 周日,Rule Engine,的优势,声明式编程,Rule Engine,允许你说“做什么”,而不是“怎样去做”,Rule,系统能解决非常困难的难题,逻辑和数据分离,快捷和灵活,Knowledge,集中化,工具集成,良好的解释机制,易于理解的,Rule,4,2025/4/20 周日,例子,If,(“Joe”.equal(people.getName(),if,(“Male”.equal(people.getSex(),System.out.priltln(“This is a man,name is Joe.,”);,rule,GoodBye,when,People(name=”Joe”,sex,=”Male”,),then,System.out.println(,(“This is a man,name is Joe.,”,);,end,Java,语言表示,如果有一个人的名字是“,Joe,”,而且是个男性,就会输出他的名字跟性别。,5,2025/4/20 周日,产生背景,系统庞大,业务复杂;,业务规则经常改变;,24,小时服务;,业务统一管理;,降低系统维护升级成本。,6,2025/4/20 周日,知识背景,生产式规则引擎,Rete,算法,7,2025/4/20 周日,产生式规则引擎,许多产品规则系统的大脑实际上就是一个推理引擎,用于匹配,facts,和,rules,当匹配被找到,,rule actions,被,fire,Actions,经常会改变,facts,的状态,或者,在应用上执行一些“外部”,action,8,2025/4/20 周日,RETE,网络节点,9,2025/4/20 周日,简单的,RETE,网络,10,2025/4/20 周日,JoinNode,11,2025/4/20 周日,更复杂的网络,12,2025/4/20 周日,13,2025/4/20 周日,Agenda,Drools,是如何工作的?,Rule,Rule,Rule,Rule,Rule,Fact,Fact,Fact,Fact,Fact,WorkingMemory,3.Assert Facts,RuleBase,Fact,Fact,Fact,Fact,Fact,Rule,Rule,Rule,Rule,Rule,2.,Create,5.Fire All Rules,(5)activation-consequence,1.Parse DRL,Activation,Rule,Fact,Activation,Rule,Fact,Fact,14,2025/4/20 周日,议程,JBoss Drools,介绍,Hello Drools,Drools Rule Language,Domain Specific Language,Flow,Drools Guvnor,15,2025/4/20 周日,配置开发环境,到,Jboss Drools,官网的下载频道下载一下资料:,Drools Binaries,(,Required),Drools Eclipse Workbench,(,Required),Documentation,Java docs,Source Code,16,2025/4/20 周日,配置开发环境,解压,Drools Binaries,,到路径,Drools_Home,。,解压,Drools Eclipse Workbench,,把,features,和,plugins,放到,Eclipse_Homedropins,文件夹下。,打开,Eclipse,,到,Window Preference Drools Install Drools Runtimes,,给,Eclipse,指定,Drools,的安装路径,Drools_Home,。,17,2025/4/20 周日,新建,Hello Drools,项目,打开,Eclipse,新建项目窗口,,File New Other,选择,Drools Drools Project,,打开新建,Drools,项目窗口。,输入项目名称,点,Next,进入下一页面。,勾上第,1,、,2,项,生成一个,Hello World,的例子。,点,Finish,完成。,18,2025/4/20 周日,19,2025/4/20 周日,执行结果,20,2025/4/20 周日,Debug,规则文件,21,2025/4/20 周日,议程,JBoss Drools,介绍,Hello Drools,Drools Rule Language,Domain Specific Language,Flow,Drools Guvnor,22,2025/4/20 周日,规则文件种类,DRL Drools Rules Language,高级别的表达式语言(适合高级用户),XML Drools 2.x Format,XML,结构化规则,DSL Domain Specific Language,领域语义,规则模板支持自然语言,Decision Tables,(决策表),对业务分析人员非常有用,Excel,Impress or CSV,自定义,UI,界面,挑选关键元素,适合最终用户操作,23,2025/4/20 周日,DRL,import com.sample.Stock;,rule IdentifyHotBuys,no-loop true,salience 10,when,stock:Stock(,indexName=DJIA,currentPrice=10.1,fundamentals =62.5,attractiveness=87.2),then,log(BUY:+stock);,stock.setFlag(true);,stock.setAction(BUY);,modify(stock);,end,package com.sample;,public class Stock,enum Action BUY,HOLD,SELL;,public String getIndexName();,public BigDecimal getCurrentPrice();,public void setCurrentPrice(BigDecimal p);,public void setFlag(boolean flag);,public void setAction(Stock.Action action);,Fact,Stock.java,Rule,StockPicker.drl,术语,:,Rule,Condition,Consequence,Fact,24,2025/4/20 周日,XML,25,2025/4/20 周日,DSL Domain Specific Languages,rule Platinum Priority,#we dont want to make the high rollers wait!,when,There is a Platinum customer with a ticket status of New,then,Escalate the ticket,end,rule Escalate,when,There is a customer ticket with status of Escalate,then,Send escalation email,end,26,2025/4/20 周日,Decision Tables,解析,Excel XLS,和,CSV(Open Office),27,2025/4/20 周日,一个,DRL,范例,28,2025/4/20 周日,剖析,DRL,文件,Package,不必匹配目录结构,Expander,Dsl,文件列表,Imports,Fact,类型,/,领域对象的列表,Facts,被插入,working memory,(通过,insert API,),Globals,被命名的“变量”,值能在,working memory,中设置(通过,setGlobal API,),大多用于返回结果,或者作为引用数据,在,LHS,中使用要注意(应该为常量结果,且是幂等的),Functions,即一段语义代码(,java,),能够在,LHS,中的,eval,或者,predicate,谓词表达式中使用,或者在,RHS,中。,Rules,29,2025/4/20 周日,Globals,是一个命名变量,可传递常量或者工具(服务),可作为结果返回,尤其是返回集合结果的途径,当,Global,变量是数字、字符或字符串类型时,在规则中是不能被改变的。,不应该当做,facts,的替换使用,RHS,中的修改不会影响到,LHS,中的,conditions,如果在,LHS,中使用,必须在,facts,插入前设置,30,2025/4/20 周日,函数(,Functions,),可在规则,LHS,或者,RHS,中添加各种逻辑,对字段的控制或者转换,小计算公式特别有用,31,2025/4/20 周日,剖析,Rule,32,2025/4/20 周日,剖析,Rule,一个,rule,由,conditions,,和,actions,组成。当所有的,conditions,匹配,,rule,可能“,fire”,Conditions,即,LHS,(,left hand side,),Actions,即,RHS,(,right hand side,或者,consequence,),Rule,操纵应用程序中的,fact,(数据),33,2025/4/20 周日,Facts,(事实),POJOs(Plain Old Java Objects),插入,working memory.,Hibernate and/or EJB3,整合,POJOs,和,Database,Communication,修改,POJOs,状态,/,属性,变化被告知,rules engine,或者使用,property change listener,Long-lived working memory,持久的,stateful session bean,Short-lived working memory,插入,计算,处理,stateless session bean,public class Stock,private String symbol;,private String indexName;,private float currentPrice;,public String getSymbol(),return this.symbol;,public void setSymbol(String symbol),this.symbol=symbol;,public String getIndexName(),return this.indexName;,public void setIndexName(String indexName),this.indexName=indexName;,public float getCurrentPrice(),return this.currentPrice;,public void setCurrentPrice(float currentPrice),this.currentPrice=currentPrice;,34,2025/4/20 周日,Conditions/LHS,Rule,的,LHS,由模式(,Patterns,)和条件元素(,Conditional ElementsCE,)组成,Patterns,被用来指示出,fact,的字段约束,每个约束必须为,true,才能让,RHS,的,actions fire,35,2025/4/20 周日,模式(,Patterns,),没有字段约束的,Pattern,Person(),有文本字段约束的,Pattern,Person(name=“bob”),字段绑定的,Pattern,Person($name:name=“bob”),变量名称可以是任何合法的,java,变量,,$,是可选的,可由于区分字段和变量,Fact,绑定的,Pattern,$bob:Person(name=“bob”),变量约束的,Pattern,Person(name=$name),36,2025/4/20 周日,条件元素(,Conditional Elements,),应用在,Pattern,上,and,对于顶级(非嵌套),patterns,是隐式成立的,可以显式,and,使用关键字,and,(不推荐使用,&,),or,列能被显式,or,使用关键字,or,(不推荐使用,|,),重要:,or,内部会为,LHS,中的每个逻辑分支生成一个,rule,,如果逻辑分支之间不互斥,,rule,可能会被多次,fire,37,2025/4/20 周日,条件元素的例子,38,2025/4/20 周日,其他的条件元素(,Conditional Elements,),Exists,Not,Accumulate,Collect,From,Forall,39,2025/4/20 周日,Consequence/RHS,即一段代码,Java,MVEL,典型,actions,:,插入新的,fact,修改已经存在的,fact,撤销,fact,为,fact,的字段赋值,为,global,赋值,进行,GC,警告:使用,java,的时候。不要使用,if/else,,,for/while loops,或者其他类似的,java,逻辑,40,2025/4/20 周日,Consequence/RHS,特有关键字,update(fact),insert(new fact(),retract(fact),访问,KnowledgeHelperdrools.XXX,getRule,比如:,System.out.println(drools.getRule().getName();,将打印出正在执行,rule,的名称,halt,停止,rule,的,firings,,把控制权交给应用,setFocus,针对,agenda groups,41,2025/4/20 周日,执行时控制,Rule,属性,Salience,Agenda Groups,Activation Groups,No Loop,RuleFlow,42,2025/4/20 周日,议程,JBoss Drools,介绍,Hello Drools,Drools Rule Language,Domain Specific Language,Flow,Drools Guvnor,43,2025/4/20 周日,Domain Specific Language,领域特定语言,自然语言与规则代码翻译器。,适合非技术人员使用(业务分析员)。,规则更加容易理解,只要告诉规则做什么就好,不许关注怎么做。,44,2025/4/20 周日,议程,JBoss Drools,介绍,Hello Drools,Drools Rule Language,Domain Specific Language,Flow,Drools Guvnor,45,2025/4/20 周日,Ruleflow,Drools,已经提供了定义执行顺序的功能,比如,salience,,,activation groups,等等,当处理大量,rule,集的时候,管理规则的执行顺序可能会变得复杂,Ruleflow,允许使用图形化的流程图来指定,rule,集的顺序,允许你指定,rule,集顺序或者并行执行,要使用,ruleflow,,你需要:,使用,rule,属性来给每个,rule,指定一个所属的,ruleflow group,定义一个,ruleflow,图来描述这些,ruleflow groups,在执行中的顺序,46,2025/4/20 周日,构建一个,ruleflow,使用,New-Other-Drools-Flow File,,将创建一个新的,.rf,文件,47,2025/4/20 周日,Drools,透视图,打开“,Drools,透视图”,“,properties,”面板在,eclispe,窗口底部,48,2025/4/20 周日,49,2025/4/20 周日,议程,JBoss Drools,介绍,Hello Drools,Drools Rule Language,Domain Specific Language,Flow,Drools Guvnor,50,2025/4/20 周日,什么是,Guvnor,业务规则编辑器,基于,web,,基于电子表格,开发工具,QA,工具,测试脚本,分析工具,,Rule,执行,知识仓储,版本控制和回滚,搜索,&,索引,不同用户和权限,部署管理,快照和,package,部署,运行时,引擎可以使用仓储中的知识做出推论,51,2025/4/20 周日,搜索资产,52,2025/4/20 周日,Rule,编辑器,53,2025/4/20 周日,综合测试,54,2025/4/20 周日,定义自己的测试,55,2025/4/20 周日,逻辑分析,56,2025/4/20 周日,Eclipse,仓储同步,57,2025/4/20 周日,WebDAV,向文件系统一样访问仓储,存储任何,/,全部业务规则资产,58,2025/4/20 周日,使用,Guvnor,什么时候使用,Guvnor,管理规则(版本化,/,部署),允许不同技能的用户编辑规则,尚没有设施管理规则,大量的规则,什么时候可以不使用,Guvnor,已经存在的系统,规则已存在数据库,需要自己的用户交互界面,规则本身不允许和应用程序分开,59,2025/4/20 周日,Q&A,60,2025/4/20 周日,Home Work,工资计算器,实收工资,个人所得税,社保,公积金,61,2025/4/20 周日,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服