快速业务通道

Java规则引擎与其API(JSR-94) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
们。

Java规则引擎与其API(JSR-94)(5)

时间:2011-11-02 IBM 李国乐

4.2.2 运行时API

运行时API定义在javax.rules包中,为规则引擎用户运行规则获得结果提供了类和方法。运行时客户只 能访问那些使用规则管理API注册过的规则,运行时API帮助用户获得规则对话并且在这个对话中执行规则 。

运行时API提供了对厂商规则引擎API实现的类似于JDBC的访问方法.规则引擎厂商通过类 RuleServiceProvider(类 RuleServiceProvider提供了对具体规则引擎实现的运行时和管理API的访问)将 其规则引擎实现提供给客户,并获得 RuleServiceProvider唯一标识规则引擎的URL.

URL推荐标准用法是使用类似"com.mycompany.myrulesengine.rules.RuleServiceProvider"这样的 Internet域名空间, 这将有助于访问URL的唯一性.类RuleServiceProvider内部实现了规则管理和运行时 访问所需的接口.所有的 RuleServiceProvider要想被客户所访问都必须用RuleServiceProviderManager 进行注册。注册方式类似于 JDBC API的DriverManager和Driver。

运行时接口是运行时API的关键部分.运行时接口提供了用于创建规则会话(RuleSession)的方法,规则 会话如前所述是用来运行规则的.运行时API同时也提供了访问在service provider注册过的所有规则执行 集(RuleExecutionSets).规则会话接口定义了客户使用的会话的类型,客户根据自己运行规则的方式可以 选择使用有状态会话或者无状态会话。

无状态会话的工作方式就像一个无状态会话bean.客户可以发送单个输入对象或一列对象来获得输出对 象.当客户需要一个与规则引擎间的专用会话时, 有状态会话就很有用.输入的对象通过addObject() 方法 可以加入到会话当中.同一个会话当中可以加入多个对象.对话中已有对象可以通过使用updateObject()方 法得到更新.只要客户与规则引擎间的会话依然存在,会话中的对象就不会丢失。

RuleExecutionSetMetaData接口提供给客户让其查找规则执行集的元数据(metadata).元数据通过规则 会话接口(RuleSession Interface)提供给用户。

使用运行时Runtime API的代码片断如下所示:

RuleServiceProvider ruleProvider = RuleServiceProviderManager.getRuleServiceProvider ("com.mycompany.myrulesengine.rules. RuleServiceProvider"); RuleRuntime ruleRuntime = ruleProvider.getRuleRuntime(); StatelessRuleSession ruleSession = (StatelessRuleSession) ruleRuntime.createRuleSession(ruleURL, null, RuleRuntime.STTELESS_SESSION_TYPE); List inputRules = new ArrayList(); inputRules.add(new String("Rule 1")); inputRules.add(new Integer(1)); List resultRules = ruleSession.executeRules(inputRules);

4.3 Java规则引擎API安全问题

规则引擎API将管理API和运行时API加以分开,从而为这些包提供了较好粒度的安全控制.规则引擎API 并没有提供明显的安全机制,它可以和 J2EE规范中定义的标准安全API联合使用.安全可以由以下机制提供 ,如Java authentication and authorization service (JAAS),the Java cryptography extension (JCE),Java secure Socket Extension (JSSE),或者其它定制的安全API.JAAS能被用来定义规则执行集的 许可权限,从而只有授权用户才能访问。

Java规则引擎与其API(JSR-94)(6)

时间:2011-11-02 IBM 李国乐

4.4 异常与日志

规则引擎API定义了javax.rules.RuleException作为规则引擎异常层次的根类.所有其它异常都继承于 这个根类.规则引擎中定义的异常都是受控制的异常(checked exceptions),所以捕获异常的任务就交给了 规则引擎。规则引擎API没有提供明确的日志机制,但是它建议将Java Log

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号