多平台统一管理软件接口,如何实现多平台统一管理软件接口
363
2023-03-28
Spring Boot+Drools规则引擎整合详解
目的
官方的Drools范例大都是基于纯java项目或Maven项目,而基于Spring Boot项目的很少。
本文介绍如何在Spring Boot项目上加上Drools规则引擎。
POM依赖
POM文件如下:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
其中比较需要注意的是使用了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.prhttp://intln( 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(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 OMKSTTurRk= KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
// go !
Message mehttp://ssage = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
kSession.insert(message);//插入
kSession.fireAllRules();//执行规则
kSession.dispose();
return message.getMessage();
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~