我正在尝试drools与Spring Boot的集成,如果模型的属性不满足,我想抛出一个异常。
对于这种情况,我有一个客户机模型,希望检查它的lastName字段是否为NULL-如果是,则抛出一个异常。
然而,我在编译时遇到了一个“无法使用严格模式解析方法:org.drools.core.spi.KnowledgeHelper.throw()”。正确的方法是什么?
我已经尝试使用global来更新字段,它正在工作,但是为了方便起见,我只想抛出一个带有消息的异常。
下面是我的配置html" target="_blank">文件:
@Configuration
public class CreateClientRuleEngineConfig {
public static final String bhfCreateClientRule = "CreateClientRule.drl";
@Bean
public KieContainer kieContainer() {
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
kieFileSystem.write(ResourceFactory.newClassPathResource(bhfCreateClientRule));
KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
kieBuilder.buildAll();
KieModule kieModule = kieBuilder.getKieModule();
return kieServices.newKieContainer(kieModule.getReleaseId());
}
}
========================================= 下面是我的DRL文件:
import com.test.rulengine.entity.Client;
import com.test.rulengine.exception.CreateClientException;
dialect "mvel"
rule "Required fields"
when
clientInstance: Client( lastName == null);
then
throw new CreateClientException("LastName is required");
end
=========================================
下面是我的Maven依赖项(注意:我没有包括其他与Drools/Kie无关的依赖项):
<properties>
<java.version>1.8</java.version>
<drools-version>7.0.0.Final</drools-version>
<kie-version>7.0.0.Final</kie-version>
</properties>
<dependencies>
<!-- Drools/Kie dependencies -->
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>${drools-version}</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-spring</artifactId>
<version>${kie-version}</version>
</dependency>
=========================================
这是编译过程中的错误:
无法分析表达式抛出新的CreateClientException(“需要姓氏”);:[错误:无法使用严格模式解析方法:org.drools.core.spi.KnowledgeHelper.throw()][附近:{…throw new CreateClientExceptio….}]^[第6行,第0列]:[规则名称='必填字段']
我已经检查了这个链接,我真的不知道我错过了什么。提前谢谢你
您必须删除drl文件中的“方言”mvel“关键字。
这似乎是mvel的限制。在那么块中使用java方法,下面只是一个例子。用静态方法专用一个类,并在相应的那么块中执行它们。用java代码编写java代码...
import org.droolsassert.Client;
import org.droolsassert.CreateClientException;
import com.google.common.base.Preconditions;
dialect "mvel"
rule "Required fields"
when
clientInstance: Client( lastName == null)
then
Preconditions.checkArgument(false, "LastName is required");
end
我是java和drools的新手,我必须构建一个java RESTful Web Services/规则引擎。我们已经有运行drools版本5.2的Genesys规则创作(GRAT)和Genesys规则引擎(GRE)(版本8.1.2)。我们需要获取GRAT包的源代码并在我们的开发环境的“lite规则引擎”中使用它们。对于我的POC,我安装了drools 5.2并创建了一个项目,它可以像我想要的那样
我是drools的新手,我无法访问包中的DRL文件。我也是这么想的。我的项目规则的层次结构是这样的 我尝试使用以下代码访问DRL文件: 导致错误:
本文向大家介绍JS严格模式知识点总结,包括了JS严格模式知识点总结的使用技巧和注意事项,需要的朋友参考一下 所谓严格模式其实就是一个不会赋值给任何变量的字符串 “use strict” 如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可以只在函数中打开严格模式 1.严格模式下没有全局变量 a="test" 严格模式下会报错,非严格模式下正常 2.删除变量 var 有三种声明的情形 v
我创建了一个基本的.NET framework MVC web应用程序,并添加了使用Cloud Watch logs SDK向AWS Cloud Watch logs发送日志的逻辑,它在LocalSystem/LocalHost中运行良好,但当我对映像进行对接时,就开始出现异常。请指导我解决这个问题。 Amazon.Runtime.AmazonServiceException:“引发了状态为Nam
假设我有一个抽象类,它有一个具体的方法和三个抽象方法、和... ...并且被一个具体的类 现在,假设我有第二个子类,它可以在和中抛出一个选中的异常 我想使用以下这些类: 显然,这不起作用,因为中的方法没有声明任何异常。 如何在实现类中抛出任意异常?有没有一种方法不需要使用声明并且总是必须使用try-catch来实现它?我还想避免将中的通用逻辑复制到它的子类中。这里最好的解决方案是什么?对此有更好的
我有一个包含OClass对象的列表。我想创建这个对象的JSON。下面是我的代码: com.fasterxml.jackson.databind.jsonMappingException:未发现用于com.ontotext.trree.owlim_ext.r类的序列化程序,也未发现用于创建BeanSerializer的属性(为了避免异常,禁用serializationconfig.serializa