Spring MVC 项目中使用 Drools 规则引擎调整 MVEL 引擎配置
要调整 MVEL 引擎配置,请按照以下步骤操作:
- 在 Spring MVC 项目中添加 Drools 依赖项。这可以通过在 pom.xml 文件中添加以下代码来完成:
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>${drools.version}</version>
</dependency>
- 创建一个 Drools 配置类,并注入 MVEL 引擎。这可以通过以下代码完成:
@Configuration
public class DroolsConfig {
@Bean
public KieServices kieServices() {
return KieServices.Factory.get();
}
@Bean
public KieContainer kieContainer() {
return kieServices().getKieClasspathContainer();
}
@Bean
public KieBase kieBase() {
return kieContainer().getKieBase();
}
@Bean
public KieSession kieSession() {
KieSession kSession = kieContainer().newKieSession();
kSession.setGlobal('myGlobal', new MyGlobal());
((StatefulKnowledgeSessionImpl) kSession).session.setGlobalResolver(new MVELGlobalResolver());
return kSession;
}
public class MVELGlobalResolver implements GlobalResolver {
private Map<String, Object> globalMap = new HashMap<>();
@Override
public void setGlobal(String identifier, Object value) {
globalMap.put(identifier, value);
}
@Override
public Object getGlobal(String identifier) {
return globalMap.get(identifier);
}
@Override
public void clear() {
globalMap.clear();
}
@Override
public boolean has(String identifier) {
return globalMap.containsKey(identifier);
}
}
}
在上面的代码中,我们注入了一个 MVELGlobalResolver 对象,该对象负责设置和获取全局变量。
- 创建一个规则文件,并使用 MVEL 语言编写规则。例如:
package com.example.rules
import com.example.model.Person;
rule 'Hello World'
when
$person : Person( age < 18 )
then
System.out.println('Hello World! ' + $person.getName());
end
在上面的规则文件中,我们使用 MVEL 语言编写了一个简单的规则,当 Person 对象的年龄小于 18 岁时,就会触发该规则并输出一条消息。
- 在 Spring MVC 控制器中使用 Drools 引擎。例如:
@Controller
public class MyController {
@Autowired
private KieSession kieSession;
@GetMapping('/test')
public String test() {
Person person = new Person('John', 16);
kieSession.insert(person);
kieSession.fireAllRules();
return 'test';
}
}
在上面的控制器代码中,我们注入了一个 KieSession 对象,并在 /test 请求中使用它来执行规则。我们首先创建一个 Person 对象并将其插入到 KieSession 中,然后调用 kieSession.fireAllRules() 方法来触发规则。如果规则被触发,我们将会在控制台中看到 'Hello World!John' 这条消息。
这样,我们就可以使用 MVEL 引擎编写规则并在 Spring MVC 项目中使用 Drools 引擎了。
原文地址: https://www.cveoy.top/t/topic/oM5q 著作权归作者所有。请勿转载和采集!