Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >Drools MVEL方言-分号要求

Drools MVEL方言-分号要求
EN

Stack Overflow用户
提问于 2017-09-25 11:15:27
回答 1查看 330关注 0票数 1

我只是好奇为什么我的Eclipse Drools编译器(6.5.0)在For循环中的语句末尾需要分号,如下所示:

代码语言:javascript
代码运行次数:0
复制
Map businessRulesRequest = $root.containsKey("BusinessRulesRequest") ? $root.get("BusinessRulesRequest") : null
Map quoteRequest = businessRulesRequest!=null && businessRulesRequest.containsKey("QuoteRequest") ? businessRulesRequest.get("QuoteRequest") : null
List resultsByKey = quoteRequest!=null && quoteRequest.containsKey("resultsByKey") ? quoteRequest.get("resultsByKey") : new ArrayList()

for (Map search : resultsByKey) {
    Map searchInfo = (search.containsKey("searchInfo") ? search.get("searchInfo") : null);
    String searchName = searchInfo!=null && searchInfo.containsKey("searchName") ? searchInfo.get("searchName").toString() : "";
    List results = (searchName=="quotesMotor" && search.containsKey("results") ? search.get("results") : new ArrayList());
}

如果我从For循环中的第一行或第二行中删除分号,我会得到一个“意外的token”错误,但如果我从循环中的最后一行中删除它,就不会出现这种错误。

是不是因为Drools将RHS行作为一条语句进行计算,所以它们必须在任何循环中分开?

注意:我知道假设不需要分号并不是编写代码的最佳实践,但是我在实验时遇到了这个问题,我只是想知道编译器错误的原因。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-09-25 13:33:19

我想答案是因为MVEL本身。Drools可能会将整个代码块委托给MVEL进行评估和执行。

根据this guide的说法,在MVEL中,如果你有一条语句,或者在脚本的最后一条语句中,分号的使用不是强制性的。

希望能有所帮助,

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46403885

复制
相关文章
《Drools7.0.0.Final规则引擎教程》第4章 4.2 activation-group& dialect& date-effective
本文讲解了Drools规则引擎的使用方式,包括如何编写规则文件、如何加载规则文件、如何执行规则等。同时,还介绍了Drools规则引擎的一些高级特性,如规则激活、优先级、语法等。
程序新视界
2018/01/08
8720
Java各种规则引擎
(2)新建配置文件/src/resources/META-INF/kmodule.xml
matinal
2020/11/27
5.1K1
Java各种规则引擎
jbpm5.1介绍(3)
在您好的应用程序中使用一个新的流程 流程处理  (1)你需要建立一个知识库,其中包含过程定义 KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource("MyProcess.bpmn2"), ResourceType.BPMN2 ); 加入你的进程生成器(可以添加多个进程)后,您可以创建
cloudskyme
2018/03/20
1.4K0
jbpm5.1介绍(3)
Drools规则引擎debug模式
对Drools规则引擎中的drl文件是否可以进行debug操作?如果不能改怎么办?
程序新视界
2020/03/18
1.6K0
Spring Boot + 规则引擎Drools,强!
现在有这么个需求,网上购物,需要根据不同的规则计算商品折扣,比如VIP客户增加5%的折扣,购买金额超过1000元的增加10%的折扣等,而且这些规则可能随时发生变化,甚至增加新的规则。面对这个需求,你该怎么实现呢?难道是计算规则一变,就要修改业务代码,重新测试,上线吗。
码猿技术专栏
2023/05/01
2.3K0
Spring Boot + 规则引擎Drools,强!
【Drools二】打工人学习Drools基础语法
学习语法之前先把项目结构搭建起来。使用IDE创建Maven项目,引入Drools依赖。上一篇文章中已经介绍一个实战,溪源在此篇文章再重复分享一下。 第一步:创建maven工程drools_quickstart并导入drools相关maven坐标
沁溪源
2020/11/24
2.1K0
MVEL 2.x语法指南
MVEL全称为:MVFLEX Expression Language,是用来计算Java语法所编写的表达式值的表达式语言。MVEL的语法很大程度上受到Java语法的启发,但为了使表达式语法更高效,还是有一些基本差异,例如可以像正则表达式一样直接支持集合、数组和字符串匹配的运算。
Abalone
2022/07/14
2.6K0
【Calcite源码学习】SqlNode方言转换
我们知道,Calcite一般会有四个阶段:parse、validate、optimize和execute。其中,在parse和validate阶段,会生成一个parse tree,树中的节点都是SqlNode的类型。在optimize节点,Calcite会将parse tree转换为RelNode,同时进行一些优化,这属于logical plan。最终在execute阶段,将logical plan转换为物理执行计划来执行。Calcite目前提供了一些方言转换的功能,可以将SqlNode和RelNode转成指定计算引擎的SQL方言,例如Mysql、Presto等,相关的方言转换类如下所示:
skyyws
2022/05/20
4.1K1
【Calcite源码学习】SqlNode方言转换
MVEL2.x模板指南
MVEL 2.0提供了一个新的,更强大的,统一的模板引擎,汇集了1.2中引入的许多模板概念。 不幸的是,1.2中的模板引擎的架构不足以用于常规维护,并且决定从头开始完全重写模板引擎。
Abalone
2022/07/14
2K0
JS魔法堂:ASI(自动分号插入机制)和前置分号
一、前言                                   今晚在知乎看到前端技术专家——贺师俊对《JavaScript 语句后应该加分号么?》的回答,让我又一次看到大牛的风采,实在佩服万分。但单纯的敬佩是不足以回报他如此优秀的文字,必须深入理解文字的含义和背后的原理才不愧呢!   在这之前我们需要先理解ASI(自动分号插入机制)。 二、 Automatic Semicolon Insertion (ASI, 自动分号插入机制)         主要参考:http://justjavac.
^_^肥仔John
2018/01/18
1.8K0
JS魔法堂:ASI(自动分号插入机制)和前置分号
Wikipedia的方言版本
闽东话版本: http://cdo.wikipedia.org/wiki/ 闽南话版本: http://zh-min-nan.wikipedia.org/wiki/ 客家话版本: http://hak.wikipedia.org/wiki/ 赣语版本: http://gan.wikipedia.org/wiki/ 吴语版本: http://wuu.wikipedia.org/wiki/ 文言版本: http://zh-classical.wikipedia.org/wiki/ 粤语版本: http://zh-yue.wikipedia.org/wiki/
ruanyf
2018/09/21
1.5K0
Java动态脚本运用
一般的需求可使用上述动态脚本实现,如果遇到业务规则更为复杂、规模更大、对功能和性能有更高要求的需求时,可考虑更为专业的规则引擎和计算/表达式引擎。
花落花相惜
2021/12/15
1.3K0
【Drools三】打工人学习Drools高级语法
global关键字用于在规则文件中定义全局变量,它可以让应用程序的对象在规则文件中能够被访问。可以用来为规则文件提供数据或服务。
沁溪源
2020/11/24
2.6K0
Java动态脚本
诸如此类的需求若采用硬编码实现,则迭代成本相当高,每次改动都需要进行开发、测试、部署。同时业务规则的频繁变更会导致代码的开发和维护成本大大提高。
ruochen
2021/11/22
1K0
【Drools】值得打工人学习的规则引擎Drools<一>
规则引擎:全称为业务规则管理系统,英文名为BRMS(即Business Rule Management System)。规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模块编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。 需要注意的是规则引擎并不是一个具体的技术框架,而是指的一类系统,即业务规则管理系统。 目前市面上具体的规则引擎产品有:drools、VisualRules、iLog等。 规则引擎实现了将业务决策从应用程序代码中分离出来,接收数据输入,解释业务规则,并根据业务规则做出业务决策。规则引擎其实就是一个输入输出平台。
沁溪源
2020/11/13
8.3K0
【Drools】值得打工人学习的规则引擎Drools<一>
开源规则引擎 Drools 学习笔记 之 -- 1 cannot be cast to org.drools.compiler.kie.builder.impl.InternalKieModule
此为初始化 drl 文件时的异常, 说明我们的 drl 文件不规范, Drools 不能解析成功.
凯哥Java
2022/12/16
7100
开源规则引擎 Drools 学习笔记 之 -- 1 cannot be cast to org.drools.compiler.kie.builder.impl.InternalKieModule
Drools集成CDI(一)
CDI(Contexts and Dependency Injection 上下文依赖注入),是JAVA官方提供的依赖注入实现。
程序新视界
2022/05/09
5030
Drools集成CDI(二)
首先使用drools7的话需要在正常使用CDI的基础上添加drools-cdi的依赖:
程序新视界
2022/05/09
3330
iBatis3基于方言(Dialect)
(注:以下代码是基于ibatis3 beta4的扩展,ibatis3正式版如果实现改变,将会继续跟进修改)
py3study
2020/01/15
7430
easy-rules 使用详解
现在我们就来 看一下easy-rules 的使用。官方github 链接 https://github.com/j-easy/easy-rules
分享干货的你
2021/04/06
5.2K0

相似问题

如何在Drools,Mvel方言中打破循环?

182

无法加载方言的org.drools.rule.builder.dialect.mvel.MVEL DialectConfiguration:mvel

10

Drools: mvel和java方言之间的差异

15

如何在drools - mvel方言中做空或空检查?

10

无法加载方言org.drools.compiler.rule.builder.dialect.mvel.MVELDialectConfiguration

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文