当前位置: 首页>編程日記>正文

Spring cloud和规则引擎urule整合代码

Spring cloud和规则引擎urule整合代码

本章内容其实和spring cloud没大关系,需要注册中心代码的参考前面的文章:https://blog.csdn.net/rishengcsdn/article/details/89956473

 

 

urule规则引擎是一套纯Java实现,运行时借鉴Rete了算法的优势,再结合中式规则引擎的特点,独创了一套自己的规则模式匹配算法的系统,参考文档:

http://www.bstek.com/resources/doc/

下面讲项目代码结构:

 

项目基于Spring Cloud的框架,整合了Urule2.1.2版本的控制中心。源码下载链接:

https://download.csdn.net/download/rishengcsdn/11189599

=======================================================================

pom.xml内容:

<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.ecctest</groupId>
    <artifactId>urule</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>urule</name>


    <dependencies>
        <dependency>
            <groupId>com.bstek.urule</groupId>
            <artifactId>urule-console</artifactId>
            <version>2.1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-jdk14</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.3.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>

            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.3.5.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
            <version>1.3.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <version>1.5.3.RELEASE</version>

        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
            <version>1.5.3.RELEASE</version>

        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
            <version>1.5.3.RELEASE</version>

        </dependency>

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-sts</artifactId>
            <version>1.11.125</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-autoscaling</artifactId>
            <version>1.11.125</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-ec2</artifactId>
            <version>1.11.125</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-route53</artifactId>
            <version>1.11.125</version>
        </dependency>
        <dependency>
            <groupId>org.hdrhistogram</groupId>
            <artifactId>HdrHistogram</artifactId>
            <version>2.1.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-cbor</artifactId>
            <version>2.8.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.8.8</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>1.5.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.hystrix</groupId>
            <artifactId>hystrix-core</artifactId>
            <version>1.5.12</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.archaius</groupId>
            <artifactId>archaius-core</artifactId>
            <version>0.7.4</version>

        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-crypto</artifactId>
            <version>4.2.2.RELEASE</version>
        </dependency>

    </dependencies>

</project>

=======================================================================

application.properties的内容,注意本地仓库文件地址配置urule.repository.dir=D:/urule,请按照实现环境修改:

#spring-cloud
spring.profiles.active=production
spring.application.name=urule

server.port=8087

feign.hystrix.enabled=true

eureka.instance.preferIpAddress=true
eureka.client.serviceUrl.defaultZone=http://localhost:1112/eureka

########################################################
###FREEMARKER (FreeMarkerAutoConfiguration)
########################################################
spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
#spring.freemarker.prefix=
#spring.freemarker.request-context-attribute=
#spring.freemarker.settings.*=
spring.freemarker.suffix=.ftl
spring.freemarker.template-loader-path=classpath:/pages/
#comma-separated list
#spring.freemarker.view-names= # whitelist of view names that can be resolved


#app
#urule setting --http://wiki.bsdn.org/pages/viewpage.action?pageId=75071588
urule.repository.dir=D:/urule
#urule.repository.dir=
#urule.repository.datasourcename=dataSource
#urule.repository.databasetype=mysql
# urule.repository.databasetype=oracle
urule.console.title=URule Console
urule.welcomePage=/ur/welcomePage

#locale
locale.default=zh_CN

=======================================================================

UruleApplication.java部分内容:


@ComponentScan(basePackages = "net.ecctest")
@EnableFeignClients("net.ecctest")
@EnableDiscoveryClient
@SpringBootApplication
@ImportResource({"classpath:/spring/applicationContext-urule.xml"})
public class UruleApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(UruleApplication.class, args);
    }

    @Bean
    public ServletRegistrationBean registerURuleServlet(){
        return new ServletRegistrationBean(new URuleServlet(), "/urule/*");
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        builder.sources(this.getClass());
        return super.configure(builder);
    }

}

=======================================================================

UruleController.java内容:

@Controller
public class UruleController {
    @Autowired
    private Invoke invoke;
    @RequestMapping(value = { "/", "/index" }, method = RequestMethod.GET)
    public String index() {
        return "redirect:/urule/frame";
    }

    @RequestMapping(value = "/ur/welcomePage", method = RequestMethod.GET)
    public String welcomePage() {
        return "welcomePage22";
    }
    
    @RequestMapping(value = "/test/testRule", method = RequestMethod.GET)
    public String testRule(ModelMap map,String bb1,String bb2) throws Exception {
        String retMsg=invoke.doTest(bb1,bb2);
        map.put("retMsg", retMsg);
        return "retPage";
    }

    @RequestMapping(value = "/test/testRuleRest", method = RequestMethod.GET)
    @ResponseBody
    public String testRuleRest(@RequestBody Bbb bbb) throws Exception {
        String retMsg=invoke.doTest(bbb.getBbb1(),bbb.getBbb2());
        
        return retMsg;
    }
}

=======================================================================

 

项目启动成功后访问:http://localhost:8087/

就可以看到规则引擎首页了

 

具体配置规则就是拖拖拽拽,修改一些参数,这里就不详细说明了,为了避免麻烦我建议导入我的备份文件测试项目例子-urule-repo-20190520105757.bak,导入和导出可以用在测试环境到生产环境的部署上。

导入成功后应该可以看到已经编辑好的知识包,变量库,向导式决策等等文件。

 

这个是变量库,对应于java代码的Bbb.java,代表一个业务实体。

 

然后是一个简单规则:

 

规则导入后,还是需要在知识包的界面上重新发布一下,刷新规则到内存。最好,在界面上仿真测试一下规则。

 

 

最后,通过浏览器访问ctrl类,http://localhost:8087/test/testRule?bb1=15&bb2=15,

获得结果如下:

规则引擎
高性能、便捷
图形化建模、仿真测试
结果为正确

 

修改业务参数:http://localhost:8087/test/testRule?bb1=3&bb2=15

获得结果如下:

规则引擎

高性能、便捷

图形化建模、仿真测试

结果不对啊

 

相对于drools引擎,urule显得轻便很多,rest接口实现可以参考我的UruleController.java的testRuleRest()方法。

 


https://www.fengoutiyan.com/post/15280.html

相关文章:

  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機