# ice
**Repository Path**: waitmoon/ice
## Basic Information
- **Project Name**: ice
- **Description**: Java规则引擎-ice(用全新的思想编排规则)
针对复杂/灵活变动业务,提供一个新的抽象编排解决方案,轻量级,高性能并提供可视化操作页面
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://waitmoon.com
- **GVP Project**: No
## Statistics
- **Stars**: 735
- **Forks**: 218
- **Created**: 2022-06-24
- **Last Updated**: 2025-12-08
## Categories & Tags
**Categories**: rule-engine
**Tags**: 规则引擎, 可视化规则引擎, 轻量级规则引擎
## README
Ice
轻量级可视化规则引擎,致力于解决灵活繁复的硬编码问题
文档 ·
在线体验 ·
快速开始
English
---
## 特性
- **可视化配置** — Web 树形编辑器进行规则编排
- **零依赖** — 无需数据库或中间件,基于文件存储
- **多语言 SDK** — Java、Go、Python 功能完全对等
- **热更新** — 配置变更秒级生效
- **高性能** — 纯内存执行,毫秒级响应
## 为什么选择 Ice?
| | Ice | 传统规则引擎 |
|---|---|---|
| **学习成本** | 5 分钟上手 | 需要学习 DSL 语法 |
| **部署方式** | Docker 一键部署 | 需要数据库/中间件 |
| **配置方式** | 可视化 Web 界面 | 文本/代码配置 |
| **执行性能** | 纯内存,毫秒级 | 存在编译开销 |
| **热更新** | 秒级生效,无需重启 | 通常需要重启 |
## 使用场景
| 场景 | 说明 |
|------|------|
| **营销活动** | 优惠券、折扣、促销、秒杀规则 |
| **风控系统** | 信用评估、反欺诈、实时决策 |
| **动态定价** | 价格策略、折扣规则、阶梯定价 |
| **权限控制** | 权限管理、功能开关、A/B 测试 |
| **流程编排** | 审批流程、订单处理、状态机 |
## 安装
### Server
```bash
docker run -d --name ice-server -p 8121:8121 \
-v ./ice-data:/app/ice-data waitmoon/ice-server:latest
```
### Client SDK
Java · 文档
**Spring Boot 3.x**
```xml
com.waitmoon.ice
ice-spring-boot-starter-3x
2.0.1
```
**Spring Boot 2.x**
```xml
com.waitmoon.ice
ice-spring-boot-starter-2x
2.0.1
```
**非 Spring 项目**
```xml
com.waitmoon.ice
ice-core
2.0.1
```
配置:
```yaml
ice:
app: 1
storage:
path: ./ice-data
scan: com.your.package
```
使用:
```java
IcePack pack = new IcePack();
pack.setIceId(1L);
pack.setRoam(new IceRoam().put("uid", 12345));
Ice.syncProcess(pack);
```
Go · 文档
```bash
go get github.com/zjn-zjn/ice/sdks/go
```
使用:
```go
import ice "github.com/zjn-zjn/ice/sdks/go"
func main() {
client, _ := ice.NewClient(1, "./ice-data")
client.Start()
defer client.Destroy()
pack := ice.NewPack().SetIceId(1)
pack.Roam.Put("uid", 12345)
ice.SyncProcess(context.Background(), pack)
}
```
Python · 文档
```bash
pip install ice-rules
```
使用:
```python
import ice
client = ice.FileClient(app=1, storage_path="./ice-data")
client.start()
pack = ice.Pack(ice_id=1)
pack.roam.put("uid", 12345)
ice.sync_process(pack)
```
## 架构
```
┌──────────────────────────────────────────────────────────┐
│ 共享存储 (ice-data/) │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────┐ │
│ │ apps/ │ │ bases/ │ │ confs/ │ │ versions/│ │
│ └────────┘ └────────┘ └────────┘ └──────────┘ │
└──────────────────────────────────────────────────────────┘
▲ ▲
│ 写入 │ 读取 (轮询)
│ │
┌────────┴────────┐ ┌──────────┴──────────┐
│ Ice Server │ │ Ice Client │
│ │ │ │
│ • Web 界面 │ │ • 版本轮询 │
│ • 规则编辑 │ │ • 热更新 │
│ • 配置发布 │ │ • 内存执行 │
└─────────────────┘ └─────────────────────┘
```
## 文档
- [快速开始](https://waitmoon.com/guide/getting-started.html)
- [架构设计](https://waitmoon.com/advanced/architecture.html)
- [配置说明](https://waitmoon.com/guide/detail.html)
- [常见问题](https://waitmoon.com/guide/qa.html)
- [视频教程](https://www.bilibili.com/video/BV1Q34y1R7KF)
## 社区
- [GitHub Issues](https://github.com/zjn-zjn/ice/issues) — Bug 反馈和功能建议
- [GitHub Discussions](https://github.com/zjn-zjn/ice/discussions) — 问题讨论
- [交流群](https://waitmoon.com/community/community.html) — 微信交流群
## 许可证
[Apache License 2.0](LICENSE)