package com.neo.drools.config;
import com.neo.drools.utils.KieUtils;
import org.kie.api.KieBase;
import org.kie.api.KieServices;
import org.kie.api.builder.*;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.internal.io.ResourceFactory;
import org.kie.spring.KModuleBeanFactoryPostProcessor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import java.io.IOException;
/**
* 你的支持是我努力的最大动力!社区的建立离不开你的支持。
* 此系列课程正在持续更新中,相关讨论QQ(593177274)已经建立,欢迎大家加入讨论。
* 本人博客地址:http://blog.csdn.net/wo541075754
*/
@Configuration
public class DroolsAutoConfiguration {
private static final String RULES_PATH = "rules/";
@Bean
@ConditionalOnMissingBean(KieFileSystem.class)
public KieFileSystem kieFileSystem() throws IOException {
KieFileSystem kieFileSystem = getKieServices().newKieFileSystem();
for (Resource file : getRuleFiles()) {
kieFileSystem.write(ResourceFactory.newClassPathResource(RULES_PATH + file.getFilename(), "UTF-8"));
}
return kieFileSystem;
}
private Resource[] getRuleFiles() throws IOException {
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
return resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "**/*.*");
}
@Bean
@ConditionalOnMissingBean(KieContainer.class)
public KieContainer kieContainer() throws IOException {
final KieRepository kieRepository = getKieServices().getRepository();
kieRepository.addKieModule(new KieModule() {
public ReleaseId getReleaseId() {
return kieRepository.getDefaultReleaseId();
}
});
KieBuilder kieBuilder = getKieServices().newKieBuilder(kieFileSystem());
kieBuilder.buildAll();
KieContainer kieContainer = getKieServices().newKieContainer(kieRepository.getDefaultReleaseId());
KieUtils.setKieContainer(kieContainer);
return getKieServices().newKieContainer(kieRepository.getDefaultReleaseId());
}
private KieServices getKieServices() {
return KieServices.Factory.get();
}
@Bean
@ConditionalOnMissingBean(KieBase.class)
public KieBase kieBase() throws IOException {
return kieContainer().getKieBase();
}
@Bean
@ConditionalOnMissingBean(KieSession.class)
public KieSession kieSession() throws IOException {
KieSession kieSession = kieContainer().newKieSession();
KieUtils.setKieSession(kieSession);
return kieSession;
}
@Bean
@ConditionalOnMissingBean(KModuleBeanFactoryPostProcessor.class)
public KModuleBeanFactoryPostProcessor kiePostProcessor() {
return new KModuleBeanFactoryPostProcessor();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
springboot集成drools实现重新加载规则
共18个文件
java:12个
drl:3个
ds_store:1个
5星 · 超过95%的资源 需积分: 40 202 下载量 13 浏览量
2017-08-02
07:18:49
上传
评论 2
收藏 18KB ZIP 举报
温馨提示
springboot集成drools实现重新加载规则
资源推荐
资源详情
资源评论
收起资源包目录
springboot-drools-reload-rules.zip (18个子文件)
springboot-drools-reload-rules
pom.xml 3KB
src
test
java
com
neo
drools
model
Message.java 495B
MainTest.java 3KB
rules
score.drl 396B
RuleRepositoryTests.java 771B
main
resources
application.properties 176B
templates
static
rules
address.drl 444B
temp.drl 0B
java
com
neo
drools
config
ReloadDroolsRules.java 2KB
DroolsAutoConfiguration.java 3KB
model
Order.java 729B
Address.java 800B
fact
AddressCheckResult.java 638B
Rule.java 1KB
.DS_Store 6KB
SpringBootDroolsApplication.java 590B
controller
TestController.java 2KB
utils
KieUtils.java 976B
共 18 条
- 1
程序新视界
- 粉丝: 2w+
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页