Drools<st1:chmetcnv unitname="m" sourcevalue="3.1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">3.1M</st1:chmetcnv>1 ReleaseNotes<o:p></o:p>
|
<o:p> </o:p>
|
<o:p> </o:p>
|
语言增强<o:p></o:p>
新的条件元素: 'from', 'collect', 'accumulate', 'forall'<o:p></o:p>
'from'<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-341 <o:p></o:p>
'from'允许引擎对不在引擎之中的数据进行推论,这可以通过使用全局变量与数据提供服务进行交互,如Hibernate。MVEL为此提供脚本语言,任何之前绑定的变量可以用在MVEL表达式中。接下来的例子显示一个Hibernate命名的查询使用一些虚拟的属性,返回一个餐馆列表。Restaurant()是标准的模式,能够像其它模式一样拥有自己的字段约束和绑定。<o:p></o:p>
$r : Restaurant( $postCode ) from hbSession.getNamedQuery( "some query" ).setProperties( [ key1 : value2, key2 : value ] ).list()<o:p></o:p>
collect<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-486 <o:p></o:p>
'collect' 允许在数据集上进行推论a <o:p></o:p>
rule "Collect Test" salience 70<o:p></o:p>
when<o:p></o:p>
$person : Person( name == "Bob", $likes : likes )<o:p></o:p>
$cheeseList : ArrayList(size > 2) from collect( Cheese( type == $likes ) );<o:p></o:p>
then<o:p></o:p>
results.add($cheeseList);<o:p></o:p>
end<o:p></o:p>
accumulate<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-337 <o:p></o:p>
'accumulate' 是collect的更强大的版本,它能够用来承担集合操作,如sum或total<o:p></o:p>
<o:p> </o:p>
rule "Accumulate with Bindings" salience 90<o:p></o:p>
when<o:p></o:p>
$person : Person( name == "Bob", $likes : likes )<o:p></o:p>
$totalAmount : Integer() from accumulate( $cheese : Cheese( type == $likes ),<o:p></o:p>
init( int total = 0; ),<o:p></o:p>
action( total += $cheese.getPrice(); ),<o:p></o:p>
result( new Integer( total ) ) );<o:p></o:p>
then<o:p></o:p>
results.add($totalAmount);<o:p></o:p>
end <o:p></o:p>
forall<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-218 <o:p></o:p>
'forall' 允许规则在引擎中所有的值都是真时激活<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
rule "test nested CEs" <o:p></o:p>
when<o:p></o:p>
forall( State( $state : state ),<o:p></o:p>
Person( status == $state, $likes : likes ),<o:p></o:p>
Cheese( type == $likes ) )<o:p></o:p>
then <o:p></o:p>
results.add("OK"); <o:p></o:p>
end<o:p></o:p>
完全支持一阶逻辑: 元素的嵌套完成<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-218 <o:p></o:p>
You can now nest 'and' and 'or' inside 'not' and 'exists'. <o:p></o:p>
rule "test nested CEs" <o:p></o:p>
when<o:p></o:p>
not ( State( $state : state ) and<o:p></o:p>
not( Person( status == $state, $likes : likes ) and<o:p></o:p>
Cheese( type == $likes ) ) )<o:p></o:p>
then <o:p></o:p>
results.add("OK"); <o:p></o:p>
end<o:p></o:p>
支持多个约束条件的逻辑组合<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-216 <o:p></o:p>
“&”和“|”现在可以使用在模式中。它们的行为是不同的,因为它不会导致产生子规则。<o:p></o:p>
<o:p> </o:p>
rule "& operator with ! and strings"<o:p></o:p>
when <o:p></o:p>
$person : Person( hair != "blue" & != "purple", age > 30 & < 40 ) <o:p></o:p>
then<o:p></o:p>
list2.add( $person );<o:p></o:p>
end <o:p></o:p>
<o:p> </o:p>
rule "| operator with == and strings"<o:p></o:p>
when <o:p></o:p>
$person : Person( hair == "blue" | == "purple", age < 30 ) <o:p></o:p>
then<o:p></o:p>
list3.add( $person );<o:p></o:p>
end <o:p></o:p>
解析器增强:<o:p></o:p>
解决关键字冲突 <o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-214 <o:p></o:p>
对断行的更好支持 <o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-269 <o:p></o:p>
支持字符串中的Escaped字符 <o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-519 <o:p></o:p>
原型支持: 不再需要自动封箱/拆箱<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-527 <o:p></o:p>
原型现在可以直接使用,允许更容易的维护规则以及更好的执行性能<o:p></o:p>
<o:p> </o:p>
模板支持:<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-330 <o:p></o:p>
现在可以使用Fact模板,允许你在自己的DRL中定义Fact,并在规则中使用,而不需要一个POJO。<o:p></o:p>
<o:p> </o:p>
template Cheese<o:p></o:p>
String name<o:p></o:p>
Integer price<o:p></o:p>
end<o:p></o:p>
<o:p> </o:p>
rule "Match Stilton"<o:p></o:p>
when<o:p></o:p>
$stilton : Cheese( name == "stilton" )<o:p></o:p>
then<o:p></o:p>
$stilton.setFieldValue( "price", new Integer( 200 ) );<o:p></o:p>
list.add( $stilton );<o:p></o:p>
end <o:p></o:p>
支持额外的断言语义: <o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-556 <o:p></o:p>
在变量绑定之后,你不再需要使用“->”语法标记。现在断言只要在逗号后面简单的使用一个相等/不等判断表达式,引擎会自己找到它需要的变量,<o:p></o:p>
Pattern( $var1 : attr1, $var2 : attr2, ( $var1.blabla() != $var2.xyz() ) ) <o:p></o:p>
核心增强:<o:p></o:p>
阴影Fact:<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-44 <o:p></o:p>
现在阴影Fact允许系统在多线程环境下工作,并且在引擎外面对Fact进行改变。每一个值都被隐藏在引擎中,只有在一个“安全点”才更新。因此不用再危及引擎的完整性。<o:p></o:p>
支持在相同对象的字段之间进行约束判断<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-515 <o:p></o:p>
之前绑定的变量只能用在下一个范式中,现在它们可以在定义的范式中就使用。<o:p></o:p>
执行性能增强<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-484 <o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-498 <o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-526 <o:p></o:p>
JBoss Rules 比之前更快,使用更少的内存。<o:p></o:p>
为执行性能特殊化的“exists”节点<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-547 <o:p></o:p>
传统的Rete系统为exists实现两个Not节点,我们发现使用一个专门的Exists节点可以增强性能并使得Rete网络更简单。<o:p></o:p>
IDE 摘要<o:p></o:p>
IDE现在支持调试规则:断点可以加在Drl文件中规则的右手边(推论)以及函数中。无论何时在调试中遇到规则断点,相应的规则被显示,你可以单步调试。规则调试与Java调试完全集成,这样同时可以使用两者。<o:p></o:p>
一个新的规则视图允许你可以同时对所有在工作空间中的规则,函数,查询和全局变量做一个快速浏览。你也可以通过选择一个元素然后双击来快速浏览它们。<o:p></o:p>
支持新的语言特性(像from,collect,accumulate),并且IDE也已经更新以支持所有内核改变。并且不断改进和更好的调整其它的功能,如对大纲和规则视图提供过滤器,(可配置的)解析器结果缓存等等<o:p></o:p>
注意<o:p></o:p>
M1版本有一个遗留问题将在M2版本解决<o:p></o:p>
- http://jira.jboss.com/jira/browse/JBRULES-675 在BetaNode节点直接的节点共享问题 <o:p></o:p>
<o:p> </o:p>
分享到:
相关推荐
而在Drools 3.1M1及后续版本中,可能可以利用`from`和更高级的查询功能来解决这个问题。 在Drools中处理这类复杂对象关系时,最佳实践通常是保持规则尽可能简单,并尽量将复杂逻辑分解到业务对象或服务中。如果必须...
在这个项目中,“workBench + SSM + drools + 动态发布”是一个结合了多种技术的解决方案,旨在实现业务规则的动态管理和实时数据处理。下面将详细介绍这个组合中的每一个关键组成部分及其相互作用。 **kie-...
drools 是一个强大的规则引擎和业务规则管理系统,用于在Java应用程序中实现复杂的业务逻辑。它基于规则推理,允许用户以声明式的方式定义规则,并在运行时执行这些规则。drools 提供了一个高效的决策自动化框架,...
**基于Drools 7.9动态更新Rule详解** Drools是一款强大的、开源的Java规则引擎,它允许开发者在运行时动态地修改业务规则,从而实现灵活的业务逻辑管理。Drools 7.9版本是其稳定的一个版本,提供了更高效的执行效率...
Drools是一款强大的业务规则管理系统(BRMS),它基于Java平台,主要用于实现复杂业务规则的管理和执行。Drools7.25是该系统的一个重要版本,提供了许多新特性和性能改进,使得开发者能够更高效地处理和执行业务规则...
然后,需要向Tomcat的lib目录添加一些必需的jar包,这些可以从提供的链接或Drools的发布包中获取。 3. **创建配置文件**: - **btm-config.properties**:在Tomcat的conf目录下创建此文件,配置Bitronix ...
Drools是一款强大的Java规则引擎,它为业务规则管理提供了高效、灵活且可扩展的解决方案。作为基于模型的决策自动化工具,Drools允许开发者将复杂的业务逻辑编码为一系列易于理解和维护的规则,这些规则可以独立于...
##### 3.1 简介 Drools Server 是一个用于托管和管理 Drools 应用程序的平台,提供了一种便捷的方式来部署和配置规则引擎。 ##### 3.2 部署 这一部分介绍了如何将 Drools 应用程序部署到 Drools Server 上,包括...
**规则引擎Drools.NET移植版** Drools是一款强大的业务规则管理系统,源自Java社区,以其灵活、高效和可扩展的特性而广受赞誉。它允许开发者将业务逻辑以规则的形式编写,使得业务规则可以独立于应用程序代码进行...
3.1 导入drools依赖包 在使用Drools时,需要在项目中引入相应的Maven或Gradle依赖,以获取Drools的运行时库和API。 3.2 Hello Drools 创建一个简单的Drools项目通常包括定义规则文件(.drl),创建KieSession,加载...
Drools开发最全中文版技术指南。 Drools开发最全中文版技术指南,介绍了常见的drools如何进行开发,注意是:中文版中文版中文版! drools 中文文档 规则引擎 drools6 drools7 Java
Drools 规则引擎是基于 Java 的开源规则引擎,由 JBoss 发布。作为一个业务规则管理系统(BRMS),Drools 提供了一个基于规则的系统,用于定义、执行和管理业务规则。Drools 的主要功能是将业务规则与应用程序逻辑...
Drools工作台(Drools Workbench)是一款基于规则引擎Drools的集成开发环境,主要用于创建、测试和管理业务规则。它提供了一个图形化的用户界面,使得业务分析师和开发人员可以方便地进行规则的编写和管理。在这个...
《 Drools 深度探索:实例代码解析与实践指南》 Drools,作为一款强大的规则引擎,广泛应用于业务逻辑复杂、决策流程多变的IT系统中。它基于Java平台,采用领域特定语言(DSL)来编写业务规则,使得业务人员也能...
drools动态生成规则文件是基于Java的业务规则管理系统,它允许开发者在运行时创建、修改和执行业务规则。 Drools是Red Hat JBoss BRMS(Business Rules Management System)的一部分,它提供了一种强大的规则引擎,...
这个"5.6drools基础包"包含了Drools的核心组件——drools-distribution-5.6.0.Final.zip和Drools的开发工具集——droolsjbpm-tools-distribution-5.6.0.Final.zip。尽管由于文件大小限制,可能缺少了一些额外的包,...
Drools是一款强大的规则引擎,由Red Hat公司开发并维护,它主要用于实现业务规则的管理和执行。Drools提供了一种声明式的方式来定义业务规则,使得非技术人员也能理解和修改规则,从而降低了业务逻辑与代码的耦合度...
SpringBoot和Drools的整合应用为业务规则的管理和执行提供了强大的灵活性。SpringBoot作为一个轻量级的Java开发框架,简化了Spring应用的初始化和配置,使得开发过程更加高效。而Drools则是一个强大的规则引擎,它...
在本文中,我们将深入探讨如何将Drools 7与Spring Boot 2集成,实现动态更新规则的功能。Drools是一款强大的业务规则管理系统,而Spring Boot是Java领域广泛使用的微服务开发框架。通过结合这两者,我们可以构建一个...