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

需求

通过前端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;