2024年-JBossDrools教程学习课件_第1页
2024年-JBossDrools教程学习课件_第2页
2024年-JBossDrools教程学习课件_第3页
2024年-JBossDrools教程学习课件_第4页
2024年-JBossDrools教程学习课件_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JBossDrools刘俊豪1

议程JBossDrools介绍HelloDroolsDroolsRuleLanguageDomainSpecificLanguageFlowDroolsGuvnor22024/5/5Drools简介Drools是Redhat公司JBoss业务逻辑智能模块。/drools/Drools是处理规则的专家系统。32024/5/5

RuleEngine的优势声明式编程RuleEngine允许你说“做什么”,而不是“怎样去做”Rule系统能解决非常困难的难题逻辑和数据分离快捷和灵活Knowledge集中化工具集成良好的解释机制易于理解的Rule42024/5/5例子If(“Joe”.equal(people.getName())){

if(“Male”.equal(people.getSex())){System.out.priltln(“Thisisaman,nameisJoe.”);}}rule

"GoodBye"

whenPeople(name=”Joe”,sex=”Male”)thenSystem.out.println((“Thisisaman,nameisJoe.”);endJava语言表示,如果有一个人的名字是“Joe”,而且是个男性,就会输出他的名字跟性别。52024/5/5产生背景系统庞大,业务复杂;业务规则经常改变;24小时服务;业务统一管理;降低系统维护升级成本。62024/5/5知识背景生产式规则引擎Rete算法72024/5/5产生式规则引擎许多产品规则系统的大脑实际上就是一个推理引擎,用于匹配facts和rules当匹配被找到,ruleactions被fireActions经常会改变facts的状态,或者在应用上执行一些“外部”action82024/5/5RETE网络节点92024/5/5简单的RETE网络102024/5/5JoinNode112024/5/5更复杂的网络122024/5/5132024/5/5AgendaDrools是如何工作的?RuleRuleRuleRuleRuleFactFactFactFactFactWorkingMemory3.AssertFactsRuleBaseFactFactFactFactFactRuleRuleRuleRuleRule2.Create5.FireAllRules(5)activation

->consequence1.ParseDRLActivationRuleFactActivationRuleFactFact142024/5/5议程JBossDrools介绍HelloDroolsDroolsRuleLanguageDomainSpecificLanguageFlowDroolsGuvnor152024/5/5配置开发环境到JbossDrools官网的下载频道下载一下资料:DroolsBinaries(Required)DroolsEclipseWorkbench(Required)DocumentationJavadocsSourceCode……162024/5/5配置开发环境解压DroolsBinaries,到路径{Drools_Home}。解压DroolsEclipseWorkbench,把features和plugins放到{Eclipse_Home}\dropins文件夹下。打开Eclipse,到Window>>Preference>>Drools>>InstallDroolsRuntimes,给Eclipse指定Drools的安装路径{Drools_Home}。172024/5/5新建HelloDrools项目打开Eclipse新建项目窗口,File>>New>>Other…选择Drools>>DroolsProject,打开新建Drools项目窗口。输入项目名称,点Next进入下一页面。勾上第1、2项,生成一个HelloWorld的例子。点Finish完成。182024/5/5192024/5/5执行结果202024/5/5Debug规则文件212024/5/5议程JBossDrools介绍HelloDroolsDroolsRuleLanguageDomainSpecificLanguageFlowDroolsGuvnor222024/5/5规则文件种类DRL–DroolsRulesLanguage高级别的表达式语言(适合高级用户)XML–Drools2.xFormatXML结构化规则DSL–DomainSpecificLanguage领域语义规则模板支持自然语言DecisionTables(决策表)对业务分析人员非常有用Excel,ImpressorCSV自定义UI界面挑选关键元素适合最终用户操作232024/5/5DRLimportcom.sample.Stock;rule"IdentifyHotBuys"no-looptruesalience10 when stock:Stock( indexName=="DJIA", currentPrice<=100.0, technicalScore>=10.1, fundamentals>=62.5, attractiveness>=87.2) then log("BUY:"+stock); stock.setFlag(true); stock.setAction("BUY"); modify(stock);endpackagecom.sample;publicclassStock{enumAction{BUY,HOLD,SELL};publicStringgetIndexName();publicBigDecimalgetCurrentPrice();publicvoidsetCurrentPrice(BigDecimalp);…publicvoidsetFlag(booleanflag);publicvoidsetAction(Stock.Actionaction);}FactStock.javaRuleStockPicker.drl术语:RuleConditionConsequenceFact242024/5/5XML252024/5/5DSL–DomainSpecificLanguagesrule"PlatinumPriority" #wedon'twanttomakethehighrollerswait! when Thereisa"Platinum"customerwithaticketstatusof"New" then Escalatetheticketend

rule"Escalate" when Thereisacustomerticketwithstatusof"Escalate" then Sendescalationemailend262024/5/5DecisionTables解析ExcelXLS和CSV(OpenOffice)272024/5/5一个DRL范例282024/5/5剖析DRL文件Package不必匹配目录结构ExpanderDsl文件列表ImportsFact类型/领域对象的列表Facts被插入workingmemory(通过insertAPI)Globals被命名的“变量”值能在workingmemory中设置(通过setGlobalAPI)大多用于返回结果,或者作为引用数据在LHS中使用要注意(应该为常量结果,且是幂等的)Functions即一段语义代码(java)能够在LHS中的eval或者predicate谓词表达式中使用,或者在RHS中。Rules292024/5/5

Globals是一个命名变量可传递常量或者工具(服务)可作为结果返回,尤其是返回集合结果的途径当Global变量是数字、字符或字符串类型时,在规则中是不能被改变的。不应该当做facts的替换使用RHS中的修改不会影响到LHS中的conditions如果在LHS中使用,必须在facts插入前设置302024/5/5函数(Functions)可在规则LHS或者RHS中添加各种逻辑对字段的控制或者转换,小计算公式特别有用312024/5/5剖析Rule322024/5/5

剖析Rule一个rule由conditions,和actions组成。当所有的conditions匹配,rule可能“fire”Conditions即LHS(lefthandside)Actions即RHS(righthandside或者consequence)Rule操纵应用程序中的fact(数据)332024/5/5Facts(事实)POJOs(PlainOldJavaObjects)插入workingmemory.Hibernateand/orEJB3整合POJOs和DatabaseCommunication修改POJO’s状态/属性变化被告知rulesengine或者使用propertychangelistenerLong-livedworkingmemory持久的statefulsessionbeanShort-livedworkingmemory插入,计算,处理statelesssessionbeanpublicclassStock{ privateStringsymbol; privateStringindexName; privatefloatcurrentPrice;

publicStringgetSymbol(){ returnthis.symbol; } publicvoidsetSymbol(Stringsymbol){ this.symbol=symbol; } publicStringgetIndexName(){ returnthis.indexName; } publicvoidsetIndexName(StringindexName){ this.indexName=indexName; } publicfloatgetCurrentPrice(){ returnthis.currentPrice; } publicvoidsetCurrentPrice(floatcurrentPrice){ this.currentPrice=currentPrice; }342024/5/5Conditions/LHSRule的LHS由模式(Patterns)和条件元素(ConditionalElements—CE)组成Patterns被用来指示出fact的字段约束每个约束必须为true才能让RHS的actionsfire352024/5/5模式(Patterns)没有字段约束的PatternPerson()有文本字段约束的PatternPerson(name==“bob”)字段绑定的PatternPerson($name:name==“bob”)变量名称可以是任何合法的java变量,$是可选的,可由于区分字段和变量Fact绑定的Pattern$bob:Person(name==“bob”)变量约束的PatternPerson(name==$name)362024/5/5条件元素(ConditionalElements)应用在Pattern上and对于顶级(非嵌套)patterns是隐式成立的可以显式and使用关键字’and’(不推荐使用&&)or列能被显式or使用关键字’or’(不推荐使用||)重要:’or’内部会为LHS中的每个逻辑分支生成一个rule,如果逻辑分支之间不互斥,rule可能会被多次fire372024/5/5条件元素的例子382024/5/5其他的条件元素(ConditionalElements)ExistsNotAccumulateCollectFromForall392024/5/5Consequence/RHS即一段代码JavaMVEL典型actions:插入新的fact修改已经存在的fact撤销fact为fact的字段赋值为global赋值进行GC警告:使用java的时候。不要使用if/else,for/whileloops或者其他类似的java逻辑402024/5/5Consequence/RHS特有关键字update(fact)insert(newfact())retract(fact)访问KnowledgeHelper——drools.XXXgetRule比如:System.out.println(drools.getRule().getName());将打印出正在执行rule的名称halt——停止rule的firings,把控制权交给应用setFocus——针对agendagroups412024/5/5执行时控制——Rule属性SalienceAgendaGroupsActivationGroupsNoLoopRuleFlow422024/5/5议程JBossDrools介绍HelloDroolsDroolsRuleLanguageDomainSpecificLanguageFlowDroolsGuvnor432024/5/5DomainSpecificLanguage

领域特定语言自然语言与规则代码翻译器。适合非技术人员使用(业务分析员)。规则更加容易理解只要告诉规则做什么就好,不许关注怎么做。442024/5/5议程JBossDrools介绍HelloDroolsDroolsRuleLanguageDomainSpecificLanguageFlowDroolsGuvnor452024/5/5RuleflowDrools已经提供了定义执行顺序的功能,比如salience,activationgroups等等当处理大量rule集的时候,管理规则的执行顺序可能会变得复杂Ruleflow允许使用图形化的流程图来指定rule集的顺序允许你指定rule集顺序或者并行执行要使用ruleflow,你需要:使用rule属性来给每个rule指定一个所属的ruleflowgroup定义一个ruleflow图来描述这些ruleflowgroups在执行中的顺序46

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论