🔥 高性能、高并发、可视化的企业级规则引擎系统 🔥
基于 Java 21、Akka Actor 模型和 Aviator 表达式引擎构建的灵活、强大的规则引擎,专注于高并发场景下的复杂业务规则定义、组合和执行,为企业提供快速决策和弹性调度能力。
简体中文 | English
- 🚀 高性能调度:基于 Akka Actor 模型实现高并发、异步和容错的规则流程调度,支持大规模节点并行执行,Worker池动态伸缩
- 🎨 可视化设计:提供直观的规则定义和流程编排界面,支持流程模型可视化编辑,降低业务人员使用门槛
- ⚡ 灵活规则引擎:基于 Aviator 表达式引擎,支持复杂条件组合、多种操作符、Decimal高精度计算,提供丰富的自定义函数扩展
- 🔄 高可靠执行:完整的错误处理策略、自动重试机制、线程安全的 FlowContext 上下文管理,支持同步/异步执行模式
- 📦 丰富节点类型:提供 30+ 种节点类型,覆盖流程控制、数据处理、规则处理、消息队列、文件操作、AI能力等场景
- 🔌 多种触发方式:支持手动触发、定时触发(Quartz)、消息队列触发(RabbitMQ/Kafka/MQTT)
- 📊 完善监控体系:执行日志、追踪日志、调试模式、性能监控、异常监控、审计日志,全方位可观测
- 🔧 易于扩展:模块化设计,支持自定义节点、函数、凭据扩展,可嵌入或独立部署
- 🔐 安全可靠:JWT Token认证、API Key授权、规则流级别权限控制、凭据加密存储、敏感数据脱敏、SQL注入防护
系统提供 30+ 种节点类型,覆盖常见业务场景:
| 节点类型 | 功能描述 | 特性 |
|---|---|---|
| StartNode | 规则流入口点 | 支持多种触发模式(手动、定时、消息队列) |
| EndNode | 规则流终止点 | 标记流程分支结束 |
| SequenceConnNode | 顺序连接节点 | 支持条件判断 |
| ExclusiveGatewayNode | 排他网关 | 按优先级选择唯一分支执行 |
| ParallelGatewayNode | 并行网关 | 同时触发所有后续分支 |
| InclusiveGatewayNode | 包容网关 | 支持多分支汇聚 |
| LoopNode | 循环节点 | 遍历集合执行子流程 |
| DelayWaitNode | 延时等待节点 | 支持延时执行 |
| 节点类型 | 功能描述 | 技术实现 |
|---|---|---|
| AssignmentNode | 变量赋值操作 | Aviator表达式 |
| DBNode | 数据库操作 | Nutz DAO框架 |
| RedisNode | Redis缓存操作 | Jedis客户端,支持25+操作类型 |
| CSVNode | CSV文件读写 | Hutool工具 |
| ExcelReadNode | Excel读取 | Apache POI |
| ExcelWriteNode | Excel写入 | Apache POI |
| 节点类型 | 功能描述 | 特性 |
|---|---|---|
| RuleSetNode | 规则集判断 | 支持循环、条件分支、动作执行 |
| ScoringCardNode | 评分卡计算 | 支持权重计算、分数汇总 |
| DecisionTablesNode | 决策表匹配 | 表格化规则匹配 |
| DmnDecisionTableNode | DMN决策表 | 支持DMN规范 |
| 节点类型 | 功能描述 | 特性 |
|---|---|---|
| HttpNode | HTTP请求 | 支持多种超时配置、响应条件判断 |
| FunctionNode | 自定义表达式 | Aviator脚本执行 |
| 节点类型 | 功能描述 | 特性 |
|---|---|---|
| RabbitMQNode | RabbitMQ消息发送 | 支持多种交换机类型 |
| KafkaNode | Kafka消息发送 | 支持分区、消息确认模式 |
| MQTTNode | MQTT消息发布 | 支持QoS配置 |
| 节点类型 | 功能描述 | 技术实现 |
|---|---|---|
| FTPNode | FTP文件传输 | Apache Commons Net |
| DownloadFileNode | HTTP文件下载 | - |
| SshNode | SSH远程命令执行 | JSch |
| ShellNode | Shell命令执行 | - |
| 节点类型 | 功能描述 | 特性 |
|---|---|---|
| EmailNode | 邮件发送 | 支持HTML/纯文本、附件、SSL |
| 节点类型 | 功能描述 | 支持平台 |
|---|---|---|
| AITextNode | AI文本生成 | Deepseek、火山引擎 |
| AIImageNode | AI图像生成 | Gemini、火山引擎 |
| AITTSNode | AI语音合成 | Gemini |
| 技术 | 版本 | 用途 |
|---|---|---|
| Java | 21 | 主要开发语言 (LTS版本) |
| Spring Boot | 3.5.7 | 服务框架 |
| Akka | 2.6.20 | Actor模型,用于高并发流程调度 |
| Aviator | 5.4.3 | 高性能表达式解析和执行引擎 |
| Quartz | - | 定时任务框架 |
| Spring Data JPA | 3.5.7 | 持久化框架 |
| MySQL | 8.0 | 主数据库 |
| Redis | - | 缓存支持 |
| RabbitMQ | 5.20.0 | 消息队列 |
| Kafka | 3.7.0 | 消息队列 |
| MQTT | 1.2.5 | 物联网消息协议 |
| Hutool | 5.7.18 | Java工具库 |
| Lombok | 1.18.42 | 简化Java代码 |
- 独立部署:作为独立服务部署,提供 REST API 接口,供其他系统调用
- 嵌入部署:可嵌入到其他 Java 应用中使用,作为应用的一部分运行
- 集群部署:支持多实例部署,通过负载均衡实现高可用性和横向扩展
- 代码风格:遵循阿里巴巴 Java 开发规范
- 命名规范:采用驼峰命名法,清晰表达变量和方法的含义
- 注释规范:关键代码添加详细注释,便于理解和维护
- 测试规范:编写单元测试和集成测试,确保代码质量
✅ 适用场景(高并发、快速决策、复杂条件)
| 场景 | 核心特点 | 示例 |
|---|---|---|
| 实时风险评估 | 毫秒级多维度并行判断 | 信贷审批:同时检查信用分数、工作年限、负债率等规则 |
| 复杂费用核算 | 多条件分支、复杂计算 | 订单折扣:同时计算会员折扣、地区运费、满减活动 |
| 动态营销推荐 | 短时间触发个性化动作 | App推送:判断登录时间、购物车状态,推送相应消息 |
| 业务规则管理 | 规则与代码分离 | 保险理赔:根据类型、金额、等级自动计算 |
| 合规性检查 | 多维度合规检查 | 金融交易:反洗钱、反欺诈、合规性检查 |
❌ 不适用场景(事务性、人工干预)
| 场景 | 核心特点 | 示例 |
|---|---|---|
| 人工审批流 | 需要长时间等待人工输入 | 员工报销:等待财务审核、领导签字 |
- JDK 21+
- Maven 3.6+
- MySQL 8.0+
-
克隆项目
git clone https://github.com/threefish/rule-engine.git cd rule-engine -
配置数据库
修改
service/src/main/resources/application.yml文件中的数据库配置:spring: datasource: url: jdbc:mysql://127.0.0.1:3306/rule username: root password: 123456
-
构建项目
mvn clean package -DskipTests
-
启动服务
java -jar service/target/service-0.0.1-SNAPSHOT.jar
-
访问前端页面
控制台会输出前端访问地址,点击访问即可
rule:
akkaSystemName: xj-rule # Akka系统名称
akkaDefaultExecuteTimeoutSeconds: 600 # 默认执行超时(秒)
akkaGlobalWorkerPoolInitSize: 100 # Worker池初始大小
akkaGlobalWorkerPoolMaxSize: 2000 # Worker池最大大小
attachmentPath: /path/to/attachment # 附件存储路径嵌入式方式:执行规则流程
RuleFlowExcuteService ruleFlowExcuteService = ...; // 获取服务实例
Map<String, Object> variables = new HashMap<>(); // 设置输入变量
variables.put("age", 18);
variables.put("score", 85);
ExcuteRuleFlow request = new ExcuteRuleFlow();
request.setKey("myRuleKey"); // 规则流程的唯一标识
request.setVariables(variables); // 输入变量
request.setAsyncExcute(false); // 同步执行
ExcuteRuleFlowResult result = ruleFlowExcuteService.startFlow(request);
// 处理执行结果
if (result.isSuccess()) {
System.out.println("规则执行成功!");
System.out.println("执行结果:" + result.getResponse());
} else {
System.out.println("规则执行失败:" + result.getErrorMessage());
}独立部署方式:执行规则流程
curl -X POST \
-H "Authorization: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"key": "myRuleKey", "requestId": "1111111", "variables": {"key1": "value1", "key2": "value2"}}' \
http://host:port/openapi/v1/ruleflow/excute欢迎大家参与贡献,共同完善规则引擎项目!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
本项目采用 Apache 2.0 许可证,详见 LICENSE 文件。
- 支持更多节点类型
- 支持分布式部署和水平扩展
- 增强规则执行的实时监控和告警功能
- 提供规则执行的可视化分析工具
作者:黄川 (huchuc@vip.qq.com)
GitHub:https://github.com/threefish/rule-engine
前端项目:https://github.com/threefish/rule-engine-web
如果您觉得这个项目有帮助,请给个 Star ⭐ 支持一下!
持续更新中...










