如何在Springboot中使用Urule

如何在Springboot中使用Urule?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联公司长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为旬阳企业提供专业的做网站、网站制作旬阳网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

一、Urule-Server端:

1.1、 基于maven的SpringBoot基本环境搭建请参考SpringBoot教程

1.2、引入Urule相关依赖,urule-console-pro,开源版本可到https://search.maven.org

中心搜索,依赖如下:


  
   org.springframework.boot
   spring-boot-starter-web
  
  
   com.bstek.urule
   urule-console-pro
   2.1.0
   
    
     org.slf4j
     slf4j-jdk14
    
   
  
  
   javax.servlet
   servlet-api
   2.5
   provided
  
  
   org.mybatis.spring.boot
   mybatis-spring-boot-starter
   1.3.1
  
  
   com.alibaba
   druid
   1.0.9
  
  
   MySQL
   mysql-connector-java
  
 

1.3、配置文件:两个,appplication.yml   ,    application.properties

appplication.yml,配置数据库信息(我们把urule项目存到数据库中)

server:
 port: 8081
spring:
 application:
 name: UruleServer
 datasource:
 name: datasource
 jdbc-url: jdbc:mysql://127.0.0.1:3306/urule?useUnicode=true&characterEncoding=utf-8
 username: root
 password: 666666
 # 使用druid数据源
 type: com.alibaba.druid.pool.DruidDataSource
 driver-class-name: com.mysql.jdbc.Driver
 filters: stat
 maxActive: 20
 initialSize: 1
 maxWait: 60000
 minIdle: 1
 timeBetweenEvictionRunsMillis: 60000
 minEvictableIdleTimeMillis: 300000
 validationQuery: select 'x'
 testWhileIdle: true
 testOnBorrow: false
 testOnReturn: false
 poolPreparedStatements: true
 maxOpenPreparedStatements: 20

注意,我这此刻DataSource下不jdbc-url而不是url。根据SpringBoot版本自行调整

application.properties,配置项目储存位置

#若为本地环境需配置此路径
#urule.repository.dir=F:/EclipsePractice/03_SpringCloud/repo4rule
#若为数据库,配置此项,两项均不配则系统指定默认地址
urule.repository.databasetype=mysql
urule.repository.datasourcename=datasource
ignore-unresolvable=true
order=1

1.4、初始化bean

datesource

@Configuration
public class configuration {
 @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();
  }
}

serverlet

@Component
public class URuleServletRegistration
{
 @Bean
 public ServletRegistrationBean registerURuleServlet()
 {
 return new ServletRegistrationBean(new URuleServlet(), new String[] { "/urule/*" });
 }
 }

1.5、启动类:

@SpringBootApplication
@ImportResource({"classpath:urule-console-context.xml"})
public class Application
{
 public static void main(String[] args)
 {
 SpringApplication.run(Application.class, args);
 }
}

二、客户端调用:

2.1、配置类

application.yml
server:
 port: 8090
spring:
 application:
 name: UruleClient
 datasource:
 name: datasource
 url: jdbc:mysql://127.0.0.1:3306/myland?useUnicode=true&characterEncoding=utf-8
 username: root
 password: 666666
 # 使用druid数据源
 type: com.alibaba.druid.pool.DruidDataSource
 driver-class-name: com.mysql.jdbc.Driver
 filters: stat
 maxActive: 20
 initialSize: 1
 maxWait: 60000
 minIdle: 1
 timeBetweenEvictionRunsMillis: 60000
 minEvictableIdleTimeMillis: 300000
 validationQuery: select 'x'
 testWhileIdle: true
 testOnBorrow: false
 testOnReturn: false
 poolPreparedStatements: true
 maxOpenPreparedStatements: 20
urule:
 ###服务端发现地址
 resporityServerUrl: http://localhost:8081
 ###knowledgeUpdateCycle为0时,不是检查缓存,每次都从服务端拉取,为1时,会先查找缓存
 knowledgeUpdateCycle: 1

2.2、初始化bean

@Configuration
public class RuleConfig {
 @Bean
 public PropertySourcesPlaceholderConfigurer propertySourceLoader() {
  PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
  configurer.setIgnoreUnresolvablePlaceholders(true);
  configurer.setOrder(1);
  return configurer;
 }
}

@Component
public class URuleServletRegistration {
 //此Servlet用于接收Urule服务端发布的知识包,使用开源版本时删除或者注释这个bean
 @Bean
 public ServletRegistrationBean registerURuleServlet(){
  return new ServletRegistrationBean(new KnowledgePackageReceiverServlet(),"/knowledgepackagereceiver");
 }
}

2.3、controller:

@RestController
public class TestController {
@RequestMapping("/rule")
 public String getRara(@RequestParam String data)throws IOException{
   KnowledgeService knowledgeService = (KnowledgeService) Utils.getApplicationContext().getBean(KnowledgeService.BEAN_ID);
//参数,Urule项目名/知识包名
   KnowledgePackage knowledgePackage = knowledgeService.getKnowledge("letasa/pare");
   KnowledgeSession session = KnowledgeSessionFactory.newKnowledgeSession(knowledgePackage);
   Integer integer = Integer.valueOf(data);
   Map param = new HashMap();
//参数,var,传入参数,和参数库中定义一致
   param.put("var", integer);
   session.fireRules(param);
//result,返回参数,和参数库中定义一致
   Integer result = (Integer) session.getParameter("result");
   return String.valueOf(result);
 }
}

2.4、启动类

@SpringBootApplication
@ImportResource({"classpath:urule-core-context.xml"})
public class Application {
 public static void main(String[] args) {
  SpringApplication.run(Application.class, args);
 }
}

Urule项目配置

如何在Springboot中使用Urule

参数库

如何在Springboot中使用Urule

规则

如何在Springboot中使用Urule

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

关于如何在Springboot中使用Urule问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


当前文章:如何在Springboot中使用Urule
浏览路径:http://pwwzsj.com/article/gdhcep.html