语言表达式:改进的数据获取方法 <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(投影)整个对象图,同样当fact在working memory期间,需要保证约束属性不被改变。<o:p></o:p>
** 注: 在4.0中,我们调整了一个术语,在3.0.X中被称为predicate(断言)的术语,现在在4.0中被称为"inline-eval(内嵌求值)" 。改变的原因是,我们不久将支持另一个被称为predicate(断言)的解释。
Drools 开发组<o:p></o:p>
分享到:
相关推荐
Drools 4.0是一个重要的更新版本,它在语言表达式、引擎性能和工具实用性方面都有显著提升。以下是对手册中提及的关键知识点的详细解析: 1. **语言表达式增强**: - **from**: 新增条件元素,用于从不同的源获取...
例如,API更改可能涉及到类名、方法签名的变化,而规则语言变化则可能影响到规则表达式的语法和行为。 总之,Drools不仅是一个强大的业务规则引擎,还是一套完整的BRMS解决方案,涵盖了规则定义、管理、执行和优化...
Drools 7.0是其一个重要的版本,提供了丰富的功能和改进,尤其对于初学者和经验丰富的开发人员来说,官方中文文档的出现无疑降低了学习和应用的门槛。 首先,Drools的基础概念包括规则(Rule)、工作内存(Working ...
ListView上下翻页效果
Android项目之——漂亮的平台书架
TestBrightness2
gee python 教程(西班牙语)
# 基于Linux和GTK的系统监控与图形化显示 ## 项目简介 本项目旨在通过分析Linux系统中的proc目录,提取并展示系统的关键信息,包括系统概况、进程信息和内存使用情况。通过使用GTK库,项目提供了一个图形化的用户界面,使用户能够直观地查看和监控系统的实时状态。 ## 项目的主要特性和功能 1. 系统信息展示 显示内核版本、系统启动时间等基本信息。 提供系统的主机名、CPU详细参数等信息。 2. 进程信息展示 显示所有进程的摘要信息,包括PID、CPU和内存使用率。 支持根据CPU使用率、内存使用率等参数对进程进行排序。 3. 内存信息展示 展示系统的内存使用情况,包括总内存、可用内存等详细参数。 4. 动态刷新 系统信息、进程信息和内存信息能够实时动态刷新,确保用户获取最新的系统状态。 5. 图形化界面 使用GTK库创建直观的图形界面,方便用户查看和操作。
纯c语言迷宫源码
c语言通讯录管理系统源码
功能列表 支持多种唤醒方式:语音唤醒,局域网消息唤醒,外设模块唤醒,远程唤醒 语音端点检测:自动检测语音截止点 语音识别:支持在线与离线双模式 文字转语音:舒适的人声 接续对话:完成交互对话全程只需唤醒一次 支持对话中断:可在任意时刻打断对话,重新提问 双引擎可选交互:接入GPT/星火大模型,支持聊天上下文,具有互联网搜索能力,并适时总结对话 聊天记忆:在程序结束后保存聊天内容,重新运行时自动加载 通知播报:手机上接收的消息(熄屏时)以自定义格式播报 音乐播放:获取QQ音乐个性推荐,支持调整音量,切换,暂停 音频闪避:在聊天交互/通知播报时自动减小音乐音量 日程设定:支持设定闹钟/倒计时,以及提醒事项 WebUI调参:可通过电脑和手机登录网页调参 外设控制:支持接入自定义设备(MQTT协议),配置相关文件可实现自动化 自动化智能家居:传入自定义状态,支持自定义场景触发自定义动作 远程控制:支持广域网MQTT设备控制 HomeAssistant:支持通过API控制HA下的设备
c语言实现类似弹力球效果
c语言实现的汉诺塔演示程序
c语言连连看游戏源码
# 基于Arduino框架的自动称重系统 ## 项目简介 本项目是一个基于Arduino框架的自动称重系统。它利用Arduino硬件和Adafruit的ADS1115 ADC(模数转换器)库,实现了从负载单元读取重量数据并通过串行通信将数据传输到PC或其他设备的功能。项目还包含了LCD屏幕显示和LED指示灯的控制,以及对数据库的操作和Web交互的支持。 ## 项目的主要特性和功能 1. 硬件连接与通信: 项目使用了Arduino和ADS1115 ADC之间的串行通信,实现了从负载单元读取重量数据的功能。 2. 数据处理: 通过ADC读取的重量数据被处理并转换为可读的数值,然后通过串行端口发送到PC或其他设备。 3. 用户界面: 包含了LCD屏幕显示和LED指示灯的控制,用于实时显示重量数据或指示重量状态。 4. 数据库操作: 项目支持通过串行通信与数据库交互,实现数据的存储和查询。
双鱼林jsp版超市信息管理系统
C语言课程设计(成绩管理系统)源程序
# 基于深度学习的投资策略优化系统 ## 项目简介 本项目是一个基于深度学习的投资策略优化系统,旨在通过分析和优化金融数据来提升投资决策的准确性和效率。项目涵盖了从数据获取、预处理、模型训练到结果评估的全流程,为投资者提供了一套完整的工具链。 ## 项目的主要特性和功能 1. 数据获取与处理 通过phase0.py获取金融数据。 使用phase1.py进行数据预处理和特征生成。 利用labelbasedgraph.py和labelbasedreturn.py进行数据标签计算。 2. 模型训练与评估 使用phase2.py进行模型训练和评估。 支持多种深度学习模型,如GraphCNN.py和MLP.py。 通过process.py管理模型训练和验证流程。 3. 结果可视化与分析 使用vision.py进行模型性能的可视化和评估。