美文网首页
Drools规则引擎-在微服务中的应用

Drools规则引擎-在微服务中的应用

作者: 浪漫茶 | 来源:发表于2019-01-30 14:51 被阅读0次

需求

通过前端UI界面可以灵活配置规则

实现

技术栈

项目中使用到drools规则引擎来对大数据平台的实时数据流进行分析.
实现技术栈:

  • spring boot/cloud(微服务)
  • angularjs+g6(前端)
  • drools(规则引擎)
  • kafka相关
  • quartz或akka(实现分布式异步任务调度)
整体框架

业务实现

  • 前端通过蚂蚁G6组件实现规则编辑
  • 微服务解析前端UI json生成drl脚本.
  • 使用quartz或akka任务调度,里面包含了规则引擎的执行过程,处理来着kafka的消息
  • 使用spring kafka组件接收来自集群的数据流.

规则引擎相关代码示例如下:

    public KieSession newKieSession(RuleModel rule) {
        StringBuffer rulebuffer = new StringBuffer();
        rulebuffer.append(rule.getDrl());
        if (!checkRule(rulebuffer.toString())) {
            return null;
        }
        KieHelper helper = new KieHelper();
        helper.addContent(rulebuffer.toString(), type);
        KnowledgeBaseImpl kieBase = (KnowledgeBaseImpl) helper.build();
        StatelessKieSession kieSession = kieBase.newStatelessKieSession();
        return  ((StatelessKnowledgeSessionImpl) kieSession).newWorkingMemory();
    }

   private boolean checkRule(String rule) {
        try {
            KnowledgeBuilder kb = KnowledgeBuilderFactory.newKnowledgeBuilder();
            kb.add(ResourceFactory.newByteArrayResource(rule.getBytes("utf-8")), ResourceType.DRL);
            if (kb.hasErrors()) {
                log.warn(kb.getErrors().toString());
                return false;
            }
            return true;
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return false;
        }
    }

有了session,就可以通过事实(fact)来触发规则.其他的不做多述.

Demo展示

源码链接:
----https://gitee.com/morphyguo/droolsdemo.git----

相关文章

  • Drools 规则动态编译运行

    背景 近期遇到一个规则引擎项目,甲方明确要求用Drools规则引擎,之前想象中Drools应该应用在风控、预警类场...

  • Drools

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

  • Drools规则引擎-在微服务中的应用

    需求 通过前端UI界面可以灵活配置规则 实现 技术栈 项目中使用到drools规则引擎来对大数据平台的实时数据流进...

  • drools执行指定的规则

    1、背景 在我们编写drools规则文件的过程中,可能会编写好多规则。drools引擎在模式匹配的时候,可能一下子...

  • Drools规则引擎介绍

    目录 1. 排班中遇到的烦恼 2. 规则引擎介绍 3. 解决排班中的烦恼 4. drools应用扩展 排班中遇到的...

  • Drools介绍(1)

    Drools简介 Drools是一款基于Java的开源规则引擎,将规则与业务代码解耦。规则以脚本的形式存储在一个文...

  • Drools介绍与使用

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

  • Drools集成SpringBootStarter

    1.说明 基于fast-drools-spring-boot-starter,能够方便的将规则引擎Drools集成...

  • Drools详解

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

  • drools的简单入门案例

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

网友评论

      本文标题:Drools规则引擎-在微服务中的应用

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