业务规则引擎 java 两个xml比较

什么是业务规则?在需求里面我们往往把约束,完整性,校验,分支流等都可以算到业务规则里面。在规则引擎里面谈的业务规则重点是谈当满足什么样的条件的时候,需要执行什么样的操作。因此一个完整的业务规则包括了条件和触发操作两部分内容。而引擎是事物内部的重要的运行机制,规则引擎即重点是解决规则如何描述,如何执行,如何监控等一系列问题。

对于快速软件开发平台往往会包括两个方面的内容,一个是可重用性,一个是可配置性。对于公用组件,公用基础类库,公用算法等往往是增加了可重用性;而对于对象模型,权限模型,工作流模型,规则引擎则是解决平台的高可配置性。


在有了元数据模型,对象模型,工作流,权限,界面模型后。剩余的两个重点就是事件和规则,如果事件和规则能够灵活配置和修改,规则本身又能够很好的复用,则可实现一个较为完整的快速开发平台。


规则的定义和访问

过去大部分的规则引擎开发并没有规范化,有其自有的API,这使得其与外部程序交互集成不够灵活。转而使用另外一种产品时往往意味需要重写应用程序逻辑和API调用,代价较大。规则引擎工业中标准的缺乏成为令人关注的重要方面。2003年11月定稿并于2004年8月最终发布的JSR94(Java规则引擎API)使得Java规则引擎的实现得以标准化。

JSR94中没有涉及用来创建规则和动作的语言.规则语言是规则引擎应用程序的重要组成部分,所有的业务规则都必须用某种语言定义并且存储于规则执行集中,从而规则引擎可以装载和处理他们。规则语言的详情这里不作详细介绍,名称及其网址列出如下:


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

规则的执行

在规则的定义阶段,会根据业务情况定义相应的规则,规则用规则语言描述。多个规则可以形成一组规则集合。而规则引擎的执行首先就是装载一个规则集,对规则进行解析。同时根据规则推理引擎,将这些解析完成的规则执行到具体输入的数据对象上。

当引擎执行时,会根据规则执行队列中的优先顺序逐条执行规则执行实例,由于规则的执行部分可能会改变工作区的数据对象,从而会使队列中的某些规则执行实例因为条件改变而失效,必须从队列中撤销,也可能会激活原来不满足条件的规则,生成新的规则执行实例进入队列。于是就产生了一种“动态”的规则执行链,形成规则的推理机制。这种规则的“链式”反应完全是由工作区中的数据驱动的。

规则条件匹配的效率决定了引擎的性能,引擎需要迅速测试工作区中的数据对象,从加载的规则集中发现符合条件的规则,生成规则执行实例。1982年美国卡耐基•梅隆大学的CharlesL.Forgy发明了一种叫Rete的算法,很好地解决了这方面的问题。目前世界顶尖的商用业务规则引擎产品基本上都使用Rete算法。

规则引擎产品

Java规则引擎商业产品主要有(Jess不是开源项目,它可以免费用于学术研究,但用于商业用途则要收费)


业务规则引擎 java 两个xml比较

开源项目的实现主要包括:

  

爱华网本文地址 » http://www.aihuau.com/a/25101017/354929.html

更多阅读

一个猫,怎么连接两个路由器 光猫连接两个路由器

现代办公生活中,网络环境都比较复杂,一般都会有好几个网络设接在网络,如路由器、交换机等,如果是增加一台交换机,那么是相当简单的,几乎只要接上就可以用了,但是想要增加一台路由器那就比较麻烦了,如果没有设置好,会造成很大的麻烦,本篇就以两

声明:《业务规则引擎 java 两个xml比较》为网友水流云在分享!如侵犯到您的合法权益请联系我们删除