您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 规则引擎及J2EE平台
|JavaOne2003|Session1412规则引擎及J2EE™平台SteveDemuth,首席技术运营官,ArtemisAlliance公司.ColleenMcClintock,业务规则产品经理,ILOG公司灵活的企业应用平台ColleenMcClintockDirector,BusinessRulesProductManagementILOG,Inc.|JavaOne2003|Session14122总体演示目标学习如何将n层应用业务规则技术嵌入J2EE™应用结构,使得无须二次编程即可实现业务可变性|JavaOne2003|Session14123演讲者资历•ColleenMcClintock在业务规则技术及业务规则管理实践方面的演讲及著述颇丰,曾是JSR-94专家组成员•SteveDemuth经常就J2EE™结构进行演讲,并有为财富1000强公司提供基于业务规则结构的J2EE™项目的顾问经验|JavaOne2003|Session14124问题所在对于许多应用来说,业务逻辑,即实际实现业务策略、进程或步骤自动化的那部分应用,其可变性大,无法非常有效地用应用源代码处理。|JavaOne2003|Session14125解决办法:规则引擎及J2EE™技术业务规则技术可帮助开发更灵活的企业应用。|JavaOne2003|Session14126主要标题•规则引擎•分析业务逻辑•应用层的业务规则•业务规则变化•表现层的业务规则•JSR-94Java™规则引擎API|JavaOne2003|Session14127规则引擎何为规则引擎?•规则引擎评判并执行规则•规则用如果/那么的句式陈述•业务规则的作用–独立于实现逻辑的知识–业务规则可在源代码不改变的情况下改变规则引擎J2SE/J2EE应用如果飞行英里数50000则授予金牌会员如果证书类型为一等舱升级版本且可提供座位0则升级为一等舱|JavaOne2003|Session14128规则引擎•输入规则引擎的有:–规则执行设置–数据对象•输出的是数据对象评判规则的结果:–输入数据对象(经过修改)–新数据对象–副作用何为规则引擎?客户应用规则引擎规则对象|JavaOne2003|Session14129规则引擎•应用具有很强可变性业务逻辑–通过域概念:•地区性的或司法管辖的•帐户•产品–根据时间不同•应用允许非开发者创建业务规则何时嵌入规则?|JavaOne2003|Session141210规则及J2EE™结构•应用层–处理可变业务逻辑–直接任务流•表现层–自定义页面流及工作流J2EE™应用中规则嵌入在何处?|JavaOne2003|Session141211应用逻辑类型•结构逻辑•固定业务逻辑•可变业务逻辑|JavaOne2003|Session141212结构逻辑•OO和E/R模型的范围•多数稳定持续类型的应用逻辑•详细说明:–对象关系–标准源代码|JavaOne2003|Session141213例子保险估价PersonalPropertyCoverage(fromdomain)Premium(fromdomain)Policy(fromdomain)Building(fromdomain)Location(fromdomain)10..n10..n10..n10..nGeneralLiabilityCoverage(fromdomain)Premium(fromdomain)Ratable(fromdomain)Interface|JavaOne2003|Session141214固定业务逻辑•业务进程逻辑•工作流•交易•集成|JavaOne2003|Session141215例子•固定业务逻辑–得出可估价对象是估价服务主体的概念–实现不可变保险费的计算—例如不满一年的保费预估价–将保险费累加得出保单保险费保险估价|JavaOne2003|Session141216可变业务逻辑•激活业务进程逻辑中所选的点:–必须检查大的可变性强的业务对象组–基于某些域参数(时间,帐户,司法管辖等)变化较大的规则–结果可用业务对象状态变化表示|JavaOne2003|Session141217例子•可变业务逻辑–实现具体的每种险别的估价逻辑–变化的条件:•状态•生效日期保险估价|JavaOne2003|Session141218•将J2EE™模式与规则中心分析模型匹配–复合实体–值对象–会话面–集中的(规则)服务•使用规则库来容纳及服务业务规则可变业务逻辑的结构规则引擎及J2EE™技术|JavaOne2003|Session141219规则引擎及J2EE™技术•复合实体–BMP实体beans–封装结构逻辑–数据以值对象活模型对象图表表示可变业务逻辑的结构|JavaOne2003|Session141220规则引擎与J2EE™技术•会话面–无状态会话bean–实现固定业务逻辑–激活:•模型对象实现和持续的实体•在限定进程点基于规则的服务可变业务逻辑的结构|JavaOne2003|Session141221规则引擎及J2EE™技术•集中的规则服务–无状态会话bean–装载基于库的规则逻辑–实现基于规则的值对象原因分析–实现一个集中的服务模式–还可用JCA集中资源来完成可变业务逻辑的结构|JavaOne2003|Session141222规则引擎及J2EE™技术•规则的两种观点–规则编写者的设计时观—经处理的业务逻辑库•软件包—根据业务用户的weltanschauung组织规则•模板—指导和限制编写者•属性—摘录运行时观的组织规则–应用的运行时观•根据需求(昂贵但灵活)•通过导出业务规则库|JavaOne2003|Session141223表现层状态会话创作者规则库值对象加操作实体Beans无状态会话规则服务值对象图表基于规则的状态变化操作规则组可变业务逻辑的J2EE™结构|JavaOne2003|Session141224规则库例子|JavaOne2003|Session141225规则库例子|JavaOne2003|Session141226:JSP:User:PolicyRater:PolicyEntity:RatingServicePool:RulesetEntity:RatingService2:ratepolicy1:requestrate3:getpolicyobjects10:savepremiums()7:assertpolicyobjects8:firerules()9:retrieveresults()4:getserviceinstance5:create6:loadrules可变业务逻辑的J2EE™结构|JavaOne2003|Session141227激活规则服务//定位嵌入对象的实体PolicyEntityRemotepolicy=policyHome.findByPrimaryKey(policyID);//获取值对象policyObjects=policy.getPolicyObjects();//获得服务实例RatingServiceratingService=ratingServicePool.getRatingService();//传输规则集ID和值对象到规则服务ratingService.invokeRules(RatingRules,policyObjects);|JavaOne2003|Session141228规则服务内情publicvoidinvokeRules(Stringkey,Object[]data)//建立一个从规则集或规则集实体实体中//获取的引擎…//声明对象和触发规则for(inti=0;idata.length;i++){engine.assert(data[i]);}engine.fireAllRules();|JavaOne2003|Session141229直接任务流•与业务规则例子相似–驱动无状态会话面活动,而不是直接激活域状态–必须通过状态演化操作—不直接从规则里激活操作–或是规则可以直接创建日程|JavaOne2003|Session141230表现层状态会话Choreographer规则库值对象加运算规则集J2EE™任务流架构(1)|JavaOne2003|Session141231表现层状态会话Choreographer规则库值对象加运算规则集无状态会话规则服务任务流议程J2EE™任务流架构(2)|JavaOne2003|Session141232表现层•规则能使用在:–直接页面流–构建基于会话状态的自定义页面•类似应用层任务流实例|JavaOne2003|Session141233JSR-94Java™规则引擎API•从J2SE™或J2EE™Java客户端访问规则引擎的简易API–解析规则–检查规则元数据–配置和废止规则–执行规则(状态或无状态模式)–取回结果–过滤结果|JavaOne2003|Session141234JSR-94—它并不是…•JSR-94未规范:–规则引擎本身–规则执行流–用以描述规则的语言–J2EE™技术的配置机制•正是由于JCA未将连接器的语义规范化,JSR-94也未规范规则执行的语义|JavaOne2003|Session141235JSR-94—结构•规则运行时(javax.rules)–由要求访问规则引擎并配置规则执行系统的运行时客户调用•规则管理器(javax.rules.admin)–由管理配置及发布规则执行系统的管理客户调用•查找机制–J2SE:•调用规则服务提供者管理器并要求执行(如JDBC™DriverManager)–J2EE:•通过JNDI查找(如EJB™或JCA连接器)|JavaOne2003|Session141236JSR-94—结构createRuleSession()getRegistrations()«interface»javax::rules::RuleRuntimederegisterRuleExecutionSet()getLocalRuleExecutionSetProvider()getRuleExecutionSetProvider()registerRuleExecutionSet()«interface»javax::rules::admin::RuleAdministratorgetRuleExecutionSetMetadata()getType()release()«interface»javax::rules::RuleSessionexecuteRules()executeRules()«interface»javax::rules::StatelessRuleSessionaddObject()addObjects()containsObject()executeRules()getHandles()getObject()getObjects()getObjects()removeObject()reset()updateObject()«interface»javax::rules::StatefulRuleSession|JavaOne2003|Session141237//载入提供者的RuleServiceProviderClass.forName(“org.jcp.jsr94.ri.RuleServiceProvider”);RuleServiceProviderserviceProvider=RuleServiceProviderManager.getRuleServiceProvider(RULE_SERVICE_PROVIDER);//获取RuleAdministratorRuleAdministratorruleAdministrator=serviceProvider.getRuleAdministrator();//获取XML规则集的输入流InputStreaminStre
本文标题:规则引擎及J2EE平台
链接地址:https://www.777doc.com/doc-6493599 .html