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

2019-01-30  本文已影响0人  浪漫茶

需求

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

实现

技术栈

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

整体框架

业务实现

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

    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----

上一篇 下一篇

猜你喜欢

热点阅读