规则引擎drools

Drools用来做什么

在这里插入图片描述

Drools环境搭建

pom.xml

        <dependency>
            <groupId>com.github.hongwen1993</groupId>
            <artifactId>fast-drools-spring-boot-starter</artifactId>
            <version>7.37.0.Final</version>
        </dependency>
spring:
  drools:
    path: classpath:drools/*
    #path: D:\\workspace\\zhaolaobao-saas\\zhaolaobao-drools\\src\\main\\resources\\drools\\
    # 以流模式运行,还有云模式cloud
    mode: stream
    # 刷新配置时间
    update: 10

Drools模式

1.云模式(Cloud Mode)

云(Cloud)处理模式是默认的处理方式。
在云模式下,不会区分事实和事件,都看成是事实。
(1)没有时间的概念。尽管事件在插入引擎被赋予了时间戳,也不能判断该事件“多大了”,因为没有“现在”的概念。滑动窗(sliding windows)基于“现在”的概念,所以在云模式下无法使用。
(2)无序的事件云。由于事件无序,没有自动的生命周期管理,需要像正常的事实一样显示的删除事件。

2.流模式(Stream Mode)

当处理事件流的时候需要选择流处理模式。
在流模式下:
(1) 插入到引擎里的事件必须是时间顺序的。
(2) 引擎强制性的和使用的会话时钟session clock同步。

Drools语法

基本语法

//包名可以随便取
package 包名
//选择语言
dialect "java";
//同java语法import
import 引入的java类

//定义规则名称,该命名空间唯一
rule 规则名
    when
        (条件)左手定则(LHS(Left Hand Side))
    then
        (动作/结果)右手定则(RHS(Right Hand Side))
end

决策表

关键字说明是否必须
RuleSet相当于drl文件中的package必须,只能有一个。如果没有设置RuleSet对应的值则使用默认值rule_table
Sequential取值为Boolean类型。true表示规则按照表格自上到下的顺序执行,false表示乱序可选
Import相当于drl文件中的import,如果引入多个类则类之间用逗号分隔可选
Variables相当于drl文件中的global,用于定义全局变量,如果有多个全局变量则中间用逗号分隔可选
RuleTable它指示了后面将会有一批rule,RuleTable的名称将会作为以后生成rule的前缀必须
CONDITION规则条件关键字,相当于drl文件中的when。下面两行则表示 LHS 部分,第三行则为注释行,不计为规则部分,从第四行开始,每一行表示一条规则每个规则表至少有一个
ACTION规则结果关键字,相当于drl文件中的then每个规则表至少有一个
NO-LOOP相当于drl文件中的no-loop可选
AGENDA-GROUP相当于drl文件中的agenda-group可选
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值