精华内容
下载资源
问答
  • URule是一款纯Java规则引擎,它以RETE算法为基础,提供了向导式规则集、脚本式规则集、决策表、交叉决策表(PRO版提供)、决策树、评分卡及决策流共六种类型的规则定义方式,配合基于WEB的设计器,可快速实现规则的...
  • urule2教学视频

    2021-02-22 23:23:33
    urule2教学视频
  • urule1234567890.zip

    2019-05-20 14:53:01
    Spring cloud和规则引擎urule整合代码,全部源码,包含规则配置。
  • Springboot集成urule

    千次阅读 2018-01-04 11:01:52
    Springboot集成urule

    Springboot集成urule

    最近公司准备启动一个风险系统,架构中用到urule与flowable,捣鼓了好几天,踩了很多坑,算是初步写出一个demo,顺手记录一下


    Urule2

    URule是一款基于RETE算法纯Java的开源规则引擎产品,提供了向导式规则集、脚本式规则集、决策表、决策树、评分卡及决策流共六种类型的规则定义方式,配合基于WEB的设计器,可快速实现规则的定义、维护与发布。
    用来替换原有的drools规则引擎,有一部分原因是因为URule自带了配置规则的UI界面
    本例中采用urule客户端与服务端分离的设计

    Urule Server

    urule的Server端,用来配置规则(知识包),并暴露给客户端,本例中知识库存储在mysql数据库中
    springboot的配置可以详见URule官方文档

    1.配置Urule Servlet

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

    2.配置urule知识库数据源、导入配置文件

    application.yml
    spring:
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/world?useUnicode=true&characterEncoding=utf-8
        driver-class-name: com.mysql.jdbc.Driver
        username: root
        password: 1234
      jackson:
        default-property-inclusion: non_null
    
    urule:
      repository:
        databasetype: mysql
        datasourcename: datasource
    
    server:
      port: 8787
    Config.java
    @Configuration
    @ImportResource({"classpath:urule-console-context.xml"})
    @PropertySource(value = {"classpath:urule-console-context.properties"})
    public class Config {
        @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();
        }
    }

    3.启动Application类

    Application.java
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }

    访问地址:http://localhost:8787/urule/frame 即可看到urule的规则配置页面

    Urule Client

    Urule的客户端,即调用规则的一方

    1.配置urule知识库地址

    application.yml
    urule:
      resporityServerUrl: http://localhost:8787
      knowledgeUpdateCycle: 1
    
    server:
      port: 7878

    2.引入urule配置文件

    RuleConfig.java
    @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;
        }
    }

    3.配置KnowledgePackageReceiverServlet

    此Servlet用于接收Urule服务端发布的知识包(不想用这个功能可以不配)

    URuleServletRegistration.java
    @Component
    public class URuleServletRegistration {
        @Bean
        public ServletRegistrationBean registerURuleServlet(){
            return new ServletRegistrationBean(new KnowledgePackageReceiverServlet(),"/knowledgepackagereceiver");
        }
    }

    4.启动Application类

    RuleApplication.java
    @SpringBootApplication
    public class RuleApplication {
        public static void main(String[] args) {
            SpringApplication.run(RuleApplication.class, args);
        }
    }

    到这里Urule的服务端和客户端就都配置完了。

    测试规则

    由于嫌官方文档的sample太麻烦,这里我自己写了个简单的规则作为测试用途

    1.添加规则&发布

    配置参数

    配置规则

    大于50的数会乘以10,小于50的数会除以2

    配置推送客户端

    发布知识包

    2.编写Controller测试

    RuleController.java
    @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);
        }
    }

    访问 http://localhost:7878/rule?data=50http://localhost:7878/rule?data=40
    可以看到页面上分别打印500和20,执行规则成功


    源码地址

    https://github.com/worstEzreal/urule_springboot

    展开全文
  • URule决策引擎学习文档 自己上班期间学习笔记!
  • 主要介绍了Springboot整合Urule的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 基于URule-2.1.5开源版本集成SpringBoot-2.0,基于内置源码的集成,方便直接二次开发。 #### 1,本的springboot模块只是进行了最基本的集成,文件仓库还是还是存储在磁盘,现在希望基于最新版本的SpringBoot-2.0和...
  • urule所需jar包

    2018-08-29 09:30:03
    压缩包内为配置urule规则引擎所需jar包,把jar包下载下来放入项目中lib目录下即可,相同名称jar包,保留高版本,低版本删除
  • URule是一款由Bstek自主研发基于RETE算法的规则引擎产品,提供了向导式决策集、脚本式决策集、决策表、决策树、评分卡及决策流六种类型的规则表现方式,采用基于WEB的可视化设计器,当前就是URule控制台的JS源码项目...
  • URule是一种纯Java规则引擎,它以RETE算法为基础,提供向导式规则集,脚本式规则集,决策表,交叉决策表(PRO版提供),决策树,评分卡及决策流共六种类型的规则定义方式,配合基于WEB的设计器,可快速实现规则的...
  • 相比其他规则引擎,urule有如下特点: 响应毫秒级 支持规则在client的缓存,并自动比对更新时间,减少网络IO,但客户端需要引入jar 原生支持动态规则和两种规则持久化方式(文件,数据库) 支持决策树,决策表等 集成了可视化...

    相比其他规则引擎,urule有如下特点:
    响应毫秒级
    支持规则在client的缓存,并自动比对更新时间,减少网络IO,但客户端需要引入jar
    原生支持动态规则和两种规则持久化方式(文件,数据库)
    支持决策树,决策表等
    集成了可视化规则管理界面,管理规则方便
    社区活跃度低,技术支持需要付费
    功能强大,但开源版功能有限
    这里介绍一下如何将URule整合到springBoot项目中

    官方文档:http://www.bstek.com/resources/doc/ 

     先来瞅瞅他的管理界面长啥样!

     按层级从上往下是 项目(就是图中的UCTest)--知识包--决策表/决策树等--库

    1.库是最低的层级: 在这里创建需要校验的基本数据或者POJO, 如图上我就是想对UserParam进行校验.将名称和全类名添加进去.

    2.决策集\决策树就是一个个具体的规则了.

    在这里以库为校验对象创建规则.

    3.知识包是多个决策树/决策集的集合,创建知识包之后再加入决策集

    4.项目下面包含多个知识包,可以将知识包暴露给多个客户端

    直接在树菜单上右键即可操作.

    服务端配置:
     pom.xml

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
     
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
                    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
                    
             <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
             <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
               </dependency>
            
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <scope>provided</scope>
            </dependency>
            
              <!-- urule规则引擎 -->
            <dependency>
                <groupId>com.bstek.urule</groupId>
                <artifactId>urule-console</artifactId>
                <version>2.1.6</version>
            </dependency>
            
            
        </dependencies>
    需要两个核心类:

    1.config.java

    @Configuration
    @ImportResource({"classpath:urule-console-context.xml"})
    @PropertySource(value = {"classpath:urule-console-context.properties"})
    public class Config {
        @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();
        }
    }
    这里其实就是引入jar包中的配置文件:

    classpath:urule-console-context.xml

    classpath:urule-console-context.properties

    非maven项目参考: https://blog.csdn.net/su1573/article/details/82178544

    2.URuleServletRegistration.java 

    package com.example.demo.ur;
     
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.stereotype.Component;
     
    import com.bstek.urule.console.servlet.URuleServlet;
     
    @Component
    public class URuleServletRegistration {
        @Bean
        public ServletRegistrationBean registerURuleServlet(){
            return new ServletRegistrationBean(new URuleServlet(),"/urule/*");
        }

    3. 配置文件:application.yml(当然,这些配置你想放到properties文件或者配置中心都可以), 主要配置持久化的数据库地址

    spring:
      datasource:
        jdbc-url: 这里写数据库地址
        driver-class-name: com.mysql.jdbc.Driver
        username: root
        password: 1234
      jackson:
        default-property-inclusion: non_null
     
    server:
      port: 8755
    然后直接用springBoot启动类启动就好了,再输入http://localhost:8755/urule/frame

    就可以看到管理界面了

    客户端配置
     pom.xml

    <!-- urule规则引擎 -->
            <dependency>
                <groupId>com.bstek.urule</groupId>
                <artifactId>urule-console</artifactId>
                <version>2.1.6</version>
            </dependency>
    application.yml配置服务端地址:

    urule:
      resporityServerUrl: http://localhost:8755
      knowledgeUpdateCycle: 1
    如果“urule.knowledgeUpdateCycle”属性值大于1,那么客户端会首先检查本地缓存中是否存在指定的知识包,如果存在,那么就拿当前时间与本地缓存中的知识包的时间戳进行比较,如果小于“urule.knowledgeUpdateCycle”属性值,那么就直接取这个知识包,如果大于它,那么就到URule Server上通过时间戳检查当前知识包有没有更新,如果有更新则取到客户端,同时更新客户端缓存里对应的知识包;如果没有更新,那么就直接采用当前客户端缓存里的知识包。

    客户端调用:

    package tt;
    import rete.test.Dept;
    import rete.test.Employee;
    import com.bstek.urule.Utils;
    import com.bstek.urule.runtime.KnowledgePackage;
    import com.bstek.urule.runtime.KnowledgeSession;
    import com.bstek.urule.runtime.KnowledgeSessionFactory;
    import com.bstek.urule.runtime.service.KnowledgeService;
     
    public class Invoke {
        public void doTest() throws Exception{
            //从Spring中获取KnowledgeService接口实例
            KnowledgeService service=(KnowledgeService)Utils.getApplicationContext().getBean(KnowledgeService.BEAN_ID);
            //通过KnowledgeService接口获取指定的资源包"项目名/知识包名"
            KnowledgePackage knowledgePackage=service.getKnowledge("UCTest/UCBag");
            //通过取到的KnowledgePackage对象创建KnowledgeSession对象
            KnowledgeSession session=KnowledgeSessionFactory.newKnowledgeSession(knowledgePackage);
     
            Employee employee=new Employee();
            Dept dept=new Dept();
            dept.setLevel(12);
            employee.setDept(dept);
            employee.setSalary(111000);
            //将业务数据对象Employee插入到KnowledgeSession中
            session.insert(employee);
            //执行所有满足条件的规则
            session.fireRules();
        }
    }
    可以直接把上面这段代码嵌入web项目的controller

    getKnowledge(..)方法必须传入的是"项目名/知识包名",我之前就没有创建知识包,写的是规则名所以获取服务失败了.

    新增修改知识包之后必须先发布知识包,再将其推送至客户端才可以使用

     

    展开全文
  • <div><p>URule 是 JSR94 的实现吗?</p><p>该提问来源于开源项目:youseries/urule</p></div>
  • 数据分析工具urule

    2018-03-16 14:01:00
    Python统计学书籍 ...id=564829040685 http://www.bstek.com/products/urule python入门/爬虫/人工智能/机器学习/自然语言/数据统计分析视...
    展开全文
  • 当前使用的URule的具体版本号: <p>2.1.5 </li><li> 遇到的问题详细描述: 编辑规则的时候,可以保存。但是再次打开就会报上述错误。 看了一下似乎使用“函数”功能就会报这个错误。阅读源码发现...
  • urule客户端和服务器配置

    千次阅读 2019-05-13 17:35:03
    urule服务端配置(包含数据库的配置): pom文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...

    urule服务端配置(包含数据库的配置):

    pom文件:

    <project xmlns="http://maven.apache.org/POM/4.0.0"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>com.bstek.urule</groupId>
    	<artifactId>urule-springboot</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<properties>
    		<java.version>1.7</java.version>
    		<tomcat.version>8.5.5</tomcat.version>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    	</properties>
    	<licenses>
    		<license>
    			<name>The Apache License, Version 2.0</name>
    			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    		</license>
    	</licenses>
    	<developers>
    		<developer>
    			<name>Gaojie</name>
    			<email>jacky.gao@bstek.com</email>
    			<organization>Bstek</organization>
    			<organizationUrl>http://www.bstek.com</organizationUrl>
    		</developer>
    	</developers>
    	<scm>
    		<connection>https://github.com/youseries/urule.git</connection>
    		<developerConnection>https://github.com/youseries/urule.git</developerConnection>
    		<url>https://github.com/youseries/urule</url>
    	</scm>
    	<organization>
    		<name>Bstek</name>
    		<url>http://www.bstek.com</url>
    	</organization>
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.0.3.RELEASE</version>
    		<relativePath />
    	</parent>
    	<dependencies>
    		<dependency>
    			<groupId>com.ecms</groupId>
    			<artifactId>cbc.account.urule</artifactId>
    			<version>1.0-SNAPSHOT</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.40</version>
            </dependency>
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid</artifactId>
    			<version>1.1.10</version>
    		</dependency>
    		<dependency>
    			<groupId>com.bstek.urule</groupId>
    			<artifactId>urule-console-pro</artifactId>
    			<version>2.1.3</version>
    			<exclusions>
    				<exclusion>
    					<groupId>org.slf4j</groupId>
    					<artifactId>slf4j-jdk14</artifactId>
    				</exclusion>
    				<exclusion>
    					<groupId>com.bstek.urule</groupId>
    					<artifactId>urule-core-pro</artifactId>
    				</exclusion>
    			</exclusions>
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>servlet-api</artifactId>
    			<version>2.5</version>
    			<scope>provided</scope>
    		</dependency>
    	</dependencies>
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    		</plugins>
    	</build>
    
    	<distributionManagement>
    		<snapshotRepository>
    			<id>ossrh</id>
    			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
    		</snapshotRepository>
    		<repository>
    			<id>ossrh</id>
    			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
    		</repository>
    	</distributionManagement>
    
    	<name>Urule Springboot Project</name>
    	<url>https://github.com/youseries/urule/tree/master/urule-springboot</url>
    	<issueManagement>
    		<url>https://github.com/youseries/urule/issues</url>
    	</issueManagement>
    	<description>Urule Springboot Project</description>
    </project>

    urule-console-datasource.properties:

    spring.datasource.name=mydatasource
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://192.168.103.11:3306/cbc?characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true
    spring.datasource.username=cbc
    spring.datasource.password=cbc@20180907
    
    spring.datasource.initialSize=5
    spring.datasource.minIdle=5
    spring.datasource.maxActive=20
    spring.datasource.maxWait=60000
    spring.datasource.timeBetweenEvictionRunsMillis=60000
    spring.datasource.minEvictableIdleTimeMillis=300000
    spring.datasource.validationQuery=SELECT 1 FROM DUAL
    spring.datasource.testWhileIdle=true
    spring.datasource.testOnBorrow=false
    spring.datasource.testOnReturn=false
    spring.datasource.poolPreparedStatements=true
    spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    spring.datasource.filters=stat,wall,slf4j

    application.properties:

    server.port=7888
    #urule.repository.dir=d:/repo
    urule.repository.datasourcename=mydatasource
    urule.repository.databasetype=mysql
    
    

     config文件:

    package com.bstek.urule.springboot;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.jdbc.DataSourceBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.ImportResource;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
    
    import javax.sql.DataSource;
    
    @Configuration
    @ImportResource({"classpath:urule-console-context.xml"})
    @PropertySource(value = {"classpath:urule-console-datasource.properties"})
    public class Config {
        /**
         * PropertySourcesPlaceholderConfigurer:外部属性配置文件,可以替换xml中的属性配置,实现部分私密配置外部化,类似数据库配置
         * @return
         */
        @Bean
        public PropertySourcesPlaceholderConfigurer propertySourceLoader(){
            PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
            //该属性为true,将会隐藏在占位符变量无法解析或者属性文件不存在是抛出的异常
            configurer.setIgnoreUnresolvablePlaceholders(true);
            configurer.setOrder(1);
            return configurer;
        }
    
        @Bean(name = "mydatasource")
        @ConfigurationProperties(prefix = "spring.datasource")
        public DataSource dataSource(){
            return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();
        }
    }
    

     对于urule需要用到的动作库,可以另外定义一个jar包,在服务端和客户端分别依赖该jar包,这样在客户端和服务端中都可以不在依赖urule的jar包。

    indexServlet:

    package com.bstek.urule.springboot;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * @author Jacky.gao
     * @since 2016年10月12日
     */
    public class IndexServlet extends HttpServlet {
    	private static final long serialVersionUID = 9155627652423910928L;
    
    	@Override
    	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		resp.sendRedirect(req.getContextPath()+"/urule/frame");
    	}
    }
    

    UruleServletRegistration:

    package com.bstek.urule.springboot;
    
    import javax.servlet.http.HttpServlet;
    
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.stereotype.Component;
    
    import com.bstek.urule.console.servlet.URuleServlet;
    
    /**
     * @author Jacky.gao
     * @since 2016年10月12日
     */
    @Component
    public class URuleServletRegistration {
    	/**
    	 * springboot自带的支持servlet的注册方法,接收两个参数,第一个是自定义的servlet,第二个是对符合路径的访问跳转到第一个配置的servlet上
    	 * @return
    	 */
    	@Bean
    	public ServletRegistrationBean<HttpServlet> registerURuleServlet(){
    		return new ServletRegistrationBean<HttpServlet>(new URuleServlet(),"/urule/*");
    	}
    	@Bean
    	public ServletRegistrationBean<HttpServlet> registerIndexServlet(){
    		return new ServletRegistrationBean<HttpServlet>(new IndexServlet(),"/");
    	}
    	
    }
    

     活动库项目(actionRepository):

    pom文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.ecms</groupId>
        <artifactId>cbc.account.urule</artifactId>
        <version>1.0-SNAPSHOT</version>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <org.springframework.version>5.0.8.RELEASE</org.springframework.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>com.ecms</groupId>
                <artifactId>cbc-api</artifactId>
                <version>1.0.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${org.springframework.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.44</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.7</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.22</version>
            </dependency>
            <dependency>
                <groupId>com.bstek.urule</groupId>
                <artifactId>urule-core-pro</artifactId>
                <version>2.1.3</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-jdk14</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.2</version>
            </dependency>
        </dependencies>
        <repositories>
            <repository>
                <id>sonatype</id>
                <url>https://oss.sonatype.org/content/groups/public/</url>
            </repository>
        </repositories>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>

    活动库项目为简单的java项目,只需要定义具体的方法即可,方法的写法可以参考官方网站的说明。另外urule中也可以定义通用的工具类。

    客户端:

    客户端pom文件: 

    <dependency>
                <groupId>com.ecms</groupId>
                <artifactId>cbc.account.urule</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
    <dependency>
                <groupId>com.bstek.urule</groupId>
                <artifactId>urule-core-pro</artifactId>
                <version>2.1.3</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-web</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-jdk14</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

    关于urule的包只需要引入core-pro和自己定义的活动库项目的jar包,core-pro中因为引入了日志和web模块,但是我的项目中自己定义了需要的相关模块,所有启动报错,同理,对不同的项目,如果产生了jar包冲突,可以自行排除。

    urule.properties:

    urule.knowledgeUpdateCycle=1
    urule.resporityServerUrl=http://localhost:7888

    里面只需要指定服务端的url和知识库的拉取策略。

    UruleConfig:

    package executor.config;
    
    import com.bstek.urule.KnowledgePackageReceiverServlet;
    import com.bstek.urule.URulePropertyPlaceholderConfigurer;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.ImportResource;
    import org.springframework.core.io.ClassPathResource;
    
    @Configuration
    @ImportResource(locations = {"classpath:urule-core-context.xml"})
    public class UruleConfig {
    
        @Bean
        public ServletRegistrationBean<KnowledgePackageReceiverServlet> servletRegistrationBean(){
            return new ServletRegistrationBean<KnowledgePackageReceiverServlet>(new KnowledgePackageReceiverServlet(),"/knowledgepackagereceiver");
        }
    
        @Bean
        public URulePropertyPlaceholderConfigurer uRuleConfig (){
            URulePropertyPlaceholderConfigurer config = new URulePropertyPlaceholderConfigurer();
            config.setLocation(new ClassPathResource("urule.properties"));
            return config;
        }
    
    }
    

    最后一步,在springboot的启动类中引入对自定义动作库的扫描即可。以上即为springboot整合urule的全部工作。

     

     

     

     

     

     

    展开全文
  • 可以基于开源框架urule进行二次开发 规则引擎:http://www.bstek.com/resources/doc/
  • 项目配置urule规则引擎教程详解(带视频资源)

    万次阅读 热门讨论 2018-08-29 09:55:31
    1.把urule的jar包导入项目中lib下 下载链接:https://download.csdn.net/download/su1573/10632801 2.applicationContext.xm加入urule配置文件 在项目spring配置文件applicationContext.xml中,引入urule-...
  • spring-mvc集成urule

    2018-08-27 16:04:41
    引用urule资料网址 http://wiki.bsdn.org/pages/viewpage.action?pageId=75071533 一、pom文件加载jar包 &amp;amp;amp;lt;dependencies&amp;amp;amp;gt; &amp;amp;amp;lt;dependency&amp;amp;...
  • 今天在银行准备将修改过的urule决策引擎bak文件部署到生产环境,结果就因为.bak(信用卡审批规则示例项目-urule-repo.bak)是全量打包部署方式,被行方领导给拒绝了。 给出的理由是: 1、不知道全量打包部署是否...
  • 最近同事在配置客户端服务器配置时,出现了推送客户端地址失败,那么先来逐步检查一下。 1、首先确保配置的客户端ip之间是否可通的。 urule.resporityServerUrl=...3、搭建URule S...
  • 牛X的规则引擎urule2

    千次阅读 2018-03-01 15:26:00
    牛X的规则引擎urule2 教程:http://wiki.bsdn.org/pages/viewpage.action?pageId=75071499  
  • Urule介绍由于工作需要,我参考了许多优秀JAVA实现的开源规则引擎框架,例如Drools等,但是在茫茫人海中我发现了一个可视化配置基于RETE算法的规则引擎,它的名字叫Urule,下面摘选自Urule官方Wiki:URule是一款基于...
  • Urule介绍 由于工作需要,我参考了许多优秀JAVA实现的开源规则引擎框架,例如Drools等,但是在茫茫人海中我发现了一个可视化配置基于RETE算法的规则引擎,它的名字叫Urule,下面摘选自Urule官方Wiki: URule是一款...
  • Spring cloud和规则引擎urule整合代码

    千次阅读 2019-05-20 14:50:22
    本章内容其实和spring cloud没大关系,需要...urule规则引擎是一套纯Java实现,运行时借鉴Rete了算法的优势,再结合中式规则引擎的特点,独创了一套自己的规则模式匹配算法的系统,参考文档: http://www.bstek....
  • 当前使用的URule的具体版本号: <p>urule-pro-2.03: 1,脚本节点当前只能是dsl编辑配置,希望能修改为让用户可鼠标配置方式 注释:客户易用性考虑,应该提供鼠标可配置方式&#...
  • idea项目中使用URule 规则引擎的简单例子 简介 URule是一款纯Java规则引擎,它以RETE算法为基础,提供了向导式规则集、脚本式规则集、决策表、交叉决策表(PRO版提供)、决策树、评分卡及决策流共...

空空如也

空空如也

1 2 3 4 5
收藏数 93
精华内容 37
关键字:

urule