要调整 MVEL 引擎配置,请按照以下步骤操作:

  1. 在 Spring MVC 项目中添加 Drools 依赖项。这可以通过在 pom.xml 文件中添加以下代码来完成:
<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-core</artifactId>
    <version>${drools.version}</version>
</dependency>
  1. 创建一个 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 对象,该对象负责设置和获取全局变量。

  1. 创建一个规则文件,并使用 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 岁时,就会触发该规则并输出一条消息。

  1. 在 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 引擎了。

Spring MVC 项目中使用 Drools 规则引擎调整 MVEL 引擎配置

原文地址: https://www.cveoy.top/t/topic/oM5q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录