Drools:语言表达式:改进的数据获取方法

 

语言表达式:改进的数据获取方法 <o:p></o:p>

作者: Edson Tirelli <o:p></o:p>

大多数人都知道,Drools4.0的一个主要目标是增强表达式的能力,并简化规则语言。<o:p></o:p>

对于大家所期待的常用语言表达方式,我们高兴得说,在4.0MR3版本中这个特性已经完成了,新的改变允许嵌套访问,映射和数组的标准访问语法,以及复杂的表达式评估。换句话说,用户现在可以编写约束如下:

rule "Complex expressions"
when
$country : Contry( name == "Brazil" )
Person( address['business'].phone[0].contryCode == $country.phone.countryCode )
then
// do something
end<o:p></o:p>

在上面的规则中‘address’是一个对象映射,关键字'business'与一个Address对象(POJO)相连,它包含了一个Phone对象(POJO)数组,我们要访问的是这个数组的第一个Phone对象的CountryCode属性。

<o:p></o:p>

这意味着用户不再需要担心扁平对象模型的建模了吗?<o:p></o:p>

Does that mean that users are not required to worry about modeling flatter object models anymore?
实际情况不是这样。为了能够发挥规则引擎的最大能力,我们仍然建议用户必须使用一个关系对象模型。虽然我们提供上面的功能以允许在关系模型无法与整个应用设计相适应时,有另一种好的选择。<o:p></o:p>


要特别理解的是,对于上面的表达式来说被转换到inline-evals()**,因此他们必须要保持数据不变以避免不可预期的行为。同样也要注意的是它不能shadow(投影)整个对象图,同样当factworking memory期间,需要保证约束属性不被改变。<o:p></o:p>


**
: 4.0,我们调整了一个术语,在3.0.X中被称为predicate(断言)的术语,现在在4.0中被称为"inline-eval(内嵌求值)" 。改变的原因是,我们不久将支持另一个被称为predicate(断言)的解释。


Drools
开发组<o:p></o:p>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值