本篇文章主要介绍了Spring Boot+Drools规则引擎整合,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
目的
官方的Drools范例大都是基于纯Java项目或Maven项目,而基于Spring Boot项目的很少。
本文介绍如何在Spring Boot项目上加上Drools规则引擎。
POM依赖
POM文件如下:
4.0.0com.galaxyyaospringbootdroolstest11.0.0jarspringbootdroolstest1http://maven.apache.org UTF-81.8 org.springframework.bootspring-boot-starter-parent1.5.2.RELEASE org.springframework.bootspring-boot-starter-web org.droolsdrools-core7.0.0.Final org.droolsdrools-compiler7.0.0.Final org.droolsdrools-decisiontables7.0.0.Final org.droolsdrools-templates7.0.0.Final org.kiekie-api7.0.0.Final maven-compiler-plugin org.springframework.bootspring-boot-maven-plugin org.codehaus.mojoexec-maven-plugin java com.galaxyyao.springbootdroolstest1.SpringBootDroolsTest1Application
其中比较需要注意的是使用了exec-maven-plugin插件,不然无法启动
引用的Drools包的版本可以自行调整。
Resources
在src/main/resources下添加两个目录:
META-INF和rules
META-INF下添加kmodule.xml,内容如下:
rules目录下添加一个简单的Hello World规则
package com.galaxyyao.springbootdroolstest1 import com.galaxyyao.springbootdroolstest1.domain.Message dialect "mvel" rule "Hello World" dialect "mvel" when m : Message(status.equals(Message.HELLO), message : message ) then System.out.println( message); modify ( m ) { message = "Goodbye cruel world",status = Message.GOODBYE }; end rule "Good Bye" dialect "java" when Message( status == Message.GOODBYE, message : message ) then System.out.println( message ); end
Domain层
Domain层定义一个Drools中需要使用到的Model:
package com.galaxyyao.springbootdroolstest1.domain; public class Message { public static final Integer HELLO = 0; public static final Integer GOODBYE = 1; private String message; private Integer status; public String getMessage() { return this.message; } public void setMessage<i style="color:transparent">来源gaodai$ma#com搞$代*码网</i>(String message) { this.message = message; } public Integer getStatus() { return this.status; } public void setStatus(Integer status) { this.status = status; } }
Service层
Service层负责实际运行规则:
package com.galaxyyao.springbootdroolstest1.service; import org.kie.api.KieServices; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; import org.springframework.stereotype.Service; import com.galaxyyao.springbootdroolstest1.domain.Message; @Service public class DroolsService { public String fireRule() { // load up the knowledge base KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.getKieClasspathContainer(); KieSession kSession = kContainer.newKieSession("ksession-rules"); // go ! Message message = new Message(); message.setMessage("Hello World"); message.setStatus(Message.HELLO); kSession.insert(message);//插入 kSession.fireAllRules();//执行规则 kSession.dispose(); return message.getMessage(); } }
以上就是Spring Boot+Drools规则引擎整合详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!