快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
ging API用于规则引擎API。

4.5 JSR 94 小结

JSR 94 为规则引擎提供了公用标准API,仅仅为实现规则管理API和运行时API提供了指导规范,并没有 提供规则和动作该如何定义以及该用什么语言定义规则,也没有为规则引擎如何读和评价规则提供技术性 指导.JSR 94规范将上述问题留给了规则引擎的厂商.在下一节我将简要介绍一下规则语言。

5、规则语言

JSR 94中没有涉及用来创建规则和动作的语言.规则语言是规则引擎应用程序的重要组成部分,所有的 业务规则都必须用某种语言定义并且存储于规则执行集中,从而规则引擎可以装载和处理他们。

由于没有关于规则如何定义的公用规范,市场上大多数流行的规则引擎都有其自己的规则语言,目前便 有许多种规则语言正在应用,因此,当需要将应用移植到其他的Java规则引擎实现时,可能需要变换规则 定义,如将Drools私有的DRL规则语言转换成标准的ruleML,Jess规则语言转换成 ruleML等。这个工作一 般由XSLT转换器来完成。

规则语言的详情这里不作详细介绍,名称及其网址列出如下:

Rule Markup language (RuleML)            http://www.ruleml.org/ Simple Rule Markup Language (SRML)           http://xml.coverpages.org/srml.html Business Rules Markup Language (BRML)           http://xml.coverpages.org/brml.html SWRL: A Semantic Web Rule Language Combining OWL and RuleML   http://www.daml.org/2003/11/swrl/

多种规则语言的使用使得不同规则引擎实现之间的兼容性成为问题.通用的规则引擎API或许可以减轻 不同厂家API之间的问题,但公用规则语言的缺乏将仍然阻碍不同规则引擎实现之间的互操作性.尽管业界 在提出公用规则语言上做出了一些努力, 比如说RuleML,SRML的出现,但距离获得绝大部分规则引擎厂商同 意的公用标准还有很长的路要走。

6、Java规则引擎API使用示例

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

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

6.1 设置规则引擎

Java规则引擎的管理活动阶段开始于查找一个合适的javax.rules.RuleServiceProvider对象,这个对 象是应用程序访问规则引擎的入口。在J2EE环境中,你可能可以通过JNDI获得RuleServiceProvider。否 则,你可以使用 javax.rules.RuleServiceProviderManager类:

javax.rules.RuleServiceProviderManager class:        String implName = "org.jcp.jsr94.ri.RuleServiceProvider";        Class.forName(implName);        RuleServiceProvider serviceProvider = RuleServiceProviderManager.getRuleServiceProvider (implName);

拥有了RuleServiceProvider对象,你就可以获得一个javax.rules.admin.RuleAdministrator类。从 RuleAdministrator类中,你可以得到一个RuleExecutionSetProvider,从类名可以知道,它用于创建 javax.rules.RuleExecutionSets对象。RuleExecutionSet基本上是一个装入内存的,准备好执行的规则 集合。

包 javax.rules.admin包括两个不同的RuleExecutionSetProvider类。 RuleExecutionSetProvider类 本身包括了从Serializable对象创建RuleExecutionSets的方法,因此在规则引擎位于远程服务器的情况 下,仍然可以使用RuleExecutionSetProvider类,构造器的参数可以通过RMI来传递。另一个类是 LocalRuleExecutionSetProvider,包含了其他方法,用于从非Serializable资源(如 java.io.Reader- 本地文件)创建RuleExectionSets。假设拥有了一个RuleServiceProvider对象,你可以从本地文件 rules.xml文件创建一个RuleExectionSet对象。如以下的代码所示:

RuleAdministrator admin = serviceProvider.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号