jboss drools教程

上传人:小** 文档编号:93278278 上传时间:2019-07-19 格式:PPT 页数:61 大小:1.94MB
返回 下载 相关 举报
jboss drools教程_第1页
第1页 / 共61页
jboss drools教程_第2页
第2页 / 共61页
jboss drools教程_第3页
第3页 / 共61页
jboss drools教程_第4页
第4页 / 共61页
jboss drools教程_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《jboss drools教程》由会员分享,可在线阅读,更多相关《jboss drools教程(61页珍藏版)》请在金锄头文库上搜索。

1、JBoss Drools,刘俊豪,议程,JBoss Drools介绍 Hello Drools Drools Rule Language Domain Specific Language Flow Drools Guvnor,Drools简介,Drools是Redhat公司JBoss业务逻辑智能模块。www.jboss.org/drools/ Drools是处理规则的专家系统。,4,Rule Engine的优势,声明式编程 Rule Engine允许你说“做什么”,而不是“怎样去做” Rule系统能解决非常困难的难题 逻辑和数据分离 快捷和灵活 Knowledge集中化 工具集成 良好的解释机

2、制 易于理解的Rule,例子,Java语言表示,如果有一个人的名字是“Joe”,而且是个男性,就会输出他的名字跟性别。,产生背景,系统庞大,业务复杂; 业务规则经常改变; 24小时服务; 业务统一管理; 降低系统维护升级成本。,知识背景,生产式规则引擎 Rete算法,产生式规则引擎,许多产品规则系统的大脑实际上就是一个推理引擎,用于匹配facts和rules 当匹配被找到,rule actions被fire Actions 经常会改变facts的状态,或者 在应用上执行一些“外部”action,RETE网络节点,简单的RETE网络,JoinNode,更复杂的网络,Agenda,Drools是如

3、何工作的?,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,议程,JBoss Drools介绍 Hello Drools Drools Rule Language Domain Specific Language Flow Droo

4、ls Guvnor,配置开发环境,到Jboss Drools官网的下载频道下载一下资料: Drools Binaries(Required) Drools Eclipse Workbench(Required) Documentation Java docs Source Code ,配置开发环境,解压Drools Binaries,到路径Drools_Home。 解压Drools Eclipse Workbench,把 features 和 plugins 放到 Eclipse_Homedropins文件夹下。 打开Eclipse,到Window Preference Drools Inst

5、all Drools Runtimes,给Eclipse指定Drools的安装路径Drools_Home。,新建Hello Drools项目,打开Eclipse新建项目窗口,File New Other 选择Drools Drools Project,打开新建Drools项目窗口。 输入项目名称,点Next进入下一页面。 勾上第1、2项,生成一个Hello World的例子。 点Finish 完成。,执行结果,Debug规则文件,议程,JBoss Drools介绍 Hello Drools Drools Rule Language Domain Specific Language Flow D

6、rools Guvnor,规则文件种类,DRL Drools Rules Language 高级别的表达式语言(适合高级用户) XML Drools 2.x Format XML结构化规则 DSL Domain Specific Language 领域语义 规则模板支持自然语言 Decision Tables(决策表) 对业务分析人员非常有用 Excel, Impress or CSV 自定义UI界面 挑选关键元素 适合最终用户操作,DRL,import com.sample.Stock; rule “IdentifyHotBuys“ no-loop true salience 10 when

7、 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 Big

8、Decimal 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,XML,DSL Domain Specific Languages,rule “Platinum Priority“ #we dont want to m

9、ake 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,Decision Tables,解析Excel XLS 和 CSV (Open Office),一个DRL范例,剖析DRL文件,Package

10、不必匹配目录结构 Expander Dsl文件列表 Imports Fact类型/领域对象的列表 Facts被插入working memory(通过insert API) Globals 被命名的“变量” 值能在working memory中设置(通过setGlobal API) 大多用于返回结果,或者作为引用数据 在LHS中使用要注意(应该为常量结果,且是幂等的) Functions 即一段语义代码(java) 能够在LHS中的eval或者predicate谓词表达式中使用,或者在RHS中。 Rules,30,Globals,是一个命名变量 可传递常量或者工具(服务) 可作为结果返回,尤其是

11、返回集合结果的途径 当Global变量是数字、字符或字符串类型时,在规则中是不能被改变的。 不应该当做facts的替换使用 RHS中的修改不会影响到LHS中的conditions 如果在LHS中使用,必须在facts插入前设置,函数(Functions),可在规则LHS或者RHS中添加各种逻辑 对字段的控制或者转换,小计算公式特别有用,剖析Rule,33,剖析Rule,一个rule由conditions,和actions组成。当所有的conditions匹配,rule可能“fire” Conditions即LHS(left hand side) Actions即RHS(right hand s

12、ide或者consequence) Rule操纵应用程序中的fact(数据),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 插入,计算,

13、处理 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 setIndexN

14、ame(String indexName) this.indexName = indexName; public float getCurrentPrice() return this.currentPrice; public void setCurrentPrice(float currentPrice) this.currentPrice = currentPrice; ,Conditions / LHS,Rule的LHS由模式(Patterns)和条件元素(Conditional ElementsCE)组成 Patterns被用来指示出fact的字段约束 每个约束必须为true才能让RH

15、S的actions fire,模式(Patterns),没有字段约束的Pattern Person() 有文本字段约束的Pattern Person( name = “bob” ) 字段绑定的Pattern Person( $name : name = “bob” ) 变量名称可以是任何合法的java变量,$是可选的,可由于区分字段和变量 Fact绑定的Pattern $bob : Person( name = “bob” ) 变量约束的Pattern Person( name = $name ),条件元素(Conditional Elements),应用在Pattern上 and 对于顶级(

16、非嵌套)patterns是隐式成立的 可以显式and 使用关键字and(不推荐使用 &) or 列能被显式or 使用关键字or(不推荐使用 |) 重要:or内部会为LHS中的每个逻辑分支生成一个rule,如果逻辑分支之间不互斥,rule可能会被多次fire,条件元素的例子,其他的条件元素(Conditional Elements),Exists Not Accumulate Collect From Forall,Consequence / RHS,即一段代码 Java MVEL 典型actions: 插入新的fact 修改已经存在的fact 撤销fact 为fact的字段赋值 为global赋值 进行GC 警告:使用java的时候。不要使用if/else,for/while loops或者其他类似的java逻辑,Consequence / RHS,特有关键字 update( fact ) insert( new fact() ) re

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号