要调整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引擎了

springMVC项目使用drools规则引擎如何调整MVEL引擎配置

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

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