美文网首页
Drools CEP实现规则联动

Drools CEP实现规则联动

作者: 淡淡的小番茄 | 来源:发表于2021-07-13 15:08 被阅读0次

背景

我们想实现如下的场景:

if(orgId ==11111){

  System.out.println("触发器已触发");

    if(hasProductLabels('101,102,103',$msg.getProductLabels())>0){

          System.out.println("执行条件已匹配");

    }else{

        System.out.println("执行条件未匹配");

    }

}else{

    System.out.println("触发器未触发");

}

使用flink cep能很好的实现以上的逻辑,条件可以自由组合嵌套。了解了下,Drools嵌套只能通过中间状态来实现。

Drools CEP实现规则联动

我们先定义两个规则,第一个实现触发器的功能,执行优先级高。第二个规则是执行规则,当触发器规则匹配成功后才执行,执行优先级低于触发器规则。使用agenda-group将两个规则绑定到一起,其对应的互斥通过activation-group来实现, 使用salience定义规则执行优先级。

示例代码如下:

package drools.example;

import org.drools.example.api.namedkiesession.Message;

function int hasProductLabels(String deviceLabels,String labels){

  return deviceLabels.indexOf(labels)==-1?0:1;

}

rule "g1_mytest_trigger"

agenda-group "org"

salience 99

when

$msg : Message(orgId =='11111')

then

$msg.setTrigger(1);

update($msg);

end

rule "g1_mytest"

salience 0

when

$msg : Message(trigger==1)

&& eval(hasProductLabels('101,102,103',$msg.getProductLabels())>0)

then

System.out.println("===orgId:11111,orgKey:k11111,ruleName:g1_mytest===");

end

规则执行校验

核心代码如下:

...

FactHandle fact =  session.insert(msg);

session.getAgenda().getAgendaGroup("org").setFocus();

int i = session.fireAllRules();

session.delete(fact);

...

相关文章

  • Drools CEP实现规则联动

    背景 我们想实现如下的场景: if(orgId ==11111){ System.out.println("触发...

  • Flink 动态加载自定义Jar

    我们基于Flink CEP实现了规则引擎场景联动功能,总体运行流程如下: 1、管理平台启用job的时候,进行动态编...

  • Drools入门-实现评分专家系统

    1.什么是Drools Drools是一个规则引擎,可以通过自定义规则实现不同的专家语境,而不需要修改源代码,规则...

  • 2020-09-28 风控系统六-drools规则引擎动态加载规

    一、简介 在前面介绍了使用drools加载规则来作为风控实现。使用drools后可以使业务和规则独立出来。 风控系...

  • Drools

    一. Drools规则引擎 Drools就是为了解决业务代码和业务规则分离的引擎。Drools 规则是在 Java...

  • Drools7.x环境搭建与简单示例

    Drools是个规则引擎的开源实现。官方文档比较长。这里提供一个方法,搭建最基本的Drools运行环境,并提供一个...

  • Drools 规则文件语法概述

    概述(Overview) 以.drl为扩展名的文件,是Drools中的规则文件,规则文件的编写,遵循Drools规...

  • Drools介绍与使用

    Drools 是用 Java 语言编写的开放源码规则引擎,使用 Rete 算法对所编写的规则求值。Drools 允...

  • Drools详解

    Drools规则引擎的结构示意图 Drools相关概念 事实(Fact):对象之间及对象属性之间的关系 规则(ru...

  • drools的简单入门案例

    一、背景 最近在学习规则引擎drools,此处简单记录一下drools的入门案例。 二、为什么要学习drools ...

网友评论

      本文标题:Drools CEP实现规则联动

      本文链接:https://www.haomeiwen.com/subject/cqhspltx.html