整合規則引擎urule


最近在做urle的規則引擎的整合,記錄一下遇到的坑

客戶端:

RuleConfig:

@Configuration
@ImportResource({"classpath:urule-core-context.xml"})
public class RuleConfig {
@Bean
public PropertySourcesPlaceholderConfigurer propertySourceLoader() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setIgnoreUnresolvablePlaceholders(true);
configurer.setOrder(1);
return configurer;
}
}

RuleController:

@RestController
public class RuleController {
@RequestMapping("rule")
public String rule(@RequestParam String data) throws IOException {
//創建一個KnowledgeSession對象
KnowledgeService knowledgeService = (KnowledgeService) Utils.getApplicationContext().getBean(KnowledgeService.BEAN_ID);
KnowledgePackage knowledgePackage = knowledgeService.getKnowledge("aaa/bag");
KnowledgeSession session = KnowledgeSessionFactory.newKnowledgeSession(knowledgePackage);

Integer integer = Integer.valueOf(data);
Map<String, Object> param = new HashMap();
param.put("var", integer);
session.fireRules(param);

Integer result = (Integer) session.getParameter("var");
return String.valueOf(result);
}
}

yml:

urule:
resporityServerUrl: http://localhost:9502
#0 -> 每次都從服務端拉取
#1 -> 緩存在本地
    knowledgeUpdateCycle: 1

pom:

<dependency>
<groupId>com.bstek.urule</groupId>
<artifactId>urule-console</artifactId>
<version>2.1.7</version>
</dependency>

注:客戶端一般沒什么問題,但是我在配置的時候遇到jar包沖突的問題,是日志的jar包沖突,解決一下就好了

服務端:

dataSourceConfig:

@Configuration
@ImportResource({"classpath:urule-console-context.xml"})
@PropertySource(value = {"classpath:urule-console-context.properties"})
public class dataSourceConfig {
@Bean
public PropertySourcesPlaceholderConfigurer propertySourceLoader() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setIgnoreUnresolvablePlaceholders(true);
configurer.setOrder(1);
return configurer;
}

@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource datasource() {
return DataSourceBuilder.create().build();
}

}

URuleServletRegistration:

@Component
public class URuleServletRegistration {
@Bean
public ServletRegistrationBean<HttpServlet> registerURuleServlet() {
return new ServletRegistrationBean<>(new URuleServlet(), "/urule/*");
}
}

yml:

urule:
repository:
# dir: d://測試
databasetype: mysql
datasourcename: datasource

這里要注意:spring的datasource屬性的url要改成jdbc-url,不然會報錯,感覺是因為datasource屬性被引用后項目把他當作一個數據源了。

pom:

<dependency>
<groupId>com.bstek.urule</groupId>
<artifactId>urule-console</artifactId>
<version>2.1.7</version>
<exclusions>
<exclusion>
<artifactId>slf4j-jdk14</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>

導入dbcp的jar包是因為配置類中需要dbcp的配置,導入io包的原因是在項目啟動后,添加變量庫保存文件時會報一個NoClassDefFoundError的錯誤,視情況而定

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM