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

本文介绍了如何在微服务架构中利用Drools规则引擎处理实时数据流。前端通过AngularJS和G6配置规则,后端Spring Boot/Cloud微服务解析规则生成DRL脚本。Drools结合Kafka处理集群数据流,Quartz或Akka用于分布式任务调度,确保规则引擎的有效执行。
摘要由CSDN通过智能技术生成

需求

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值