# 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**: 740
- **Forks**: 219
- **Created**: 2022-06-24
- **Last Updated**: 2026-02-06
## Categories & Tags
**Categories**: rule-engine
**Tags**: 规则引擎, 可视化规则引擎, 轻量级规则引擎
## README
Ice
A lightweight visual rule engine for flexible business orchestration
Documentation ·
Live Demo ·
Getting Started
中文
---
## Features
- **Visual Configuration** — Web-based tree editor for rule orchestration
- **Zero Dependencies** — No database or middleware required, file-based storage
- **Multi-Language SDKs** — Java, Go, and Python with full feature parity
- **Hot Reload** — Configuration changes take effect in seconds
- **High Performance** — Pure in-memory execution with millisecond latency
## Why Ice?
| | Ice | Traditional Rule Engines |
|---|---|---|
| **Learning Curve** | 5 minutes to get started | Need to learn DSL syntax |
| **Deployment** | Docker one-click deploy | Requires database/middleware |
| **Configuration** | Visual web UI | Text/code-based |
| **Performance** | In-memory, millisecond latency | Compilation overhead |
| **Hot Reload** | Seconds, no restart | Often requires restart |
## Use Cases
| Scenario | Description |
|----------|-------------|
| **Marketing Campaigns** | Coupons, discounts, promotions, flash sales |
| **Risk Control** | Credit assessment, anti-fraud, real-time decisions |
| **Dynamic Pricing** | Price strategies, discount rules, tiered pricing |
| **Access Control** | Permission management, feature flags, A/B testing |
| **Process Orchestration** | Approval workflows, order processing, state machines |
## Installation
### Server
```bash
docker run -d --name ice-server -p 8121:8121 \
-v ./ice-data:/app/ice-data waitmoon/ice-server:latest
```
### Client SDKs
Java · Documentation
**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
```
**Non-Spring**
```xml
com.waitmoon.ice
ice-core
2.0.1
```
Configuration:
```yaml
ice:
app: 1
storage:
path: ./ice-data
scan: com.your.package
```
Usage:
```java
IcePack pack = new IcePack();
pack.setIceId(1L);
pack.setRoam(new IceRoam().put("uid", 12345));
Ice.syncProcess(pack);
```
Go · Documentation
```bash
go get github.com/zjn-zjn/ice/sdks/go
```
Usage:
```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 · Documentation
```bash
pip install ice-rules
```
Usage:
```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)
```
## Architecture
```
┌──────────────────────────────────────────────────────────┐
│ Shared Storage (ice-data/) │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────┐ │
│ │ apps/ │ │ bases/ │ │ confs/ │ │ versions/│ │
│ └────────┘ └────────┘ └────────┘ └──────────┘ │
└──────────────────────────────────────────────────────────┘
▲ ▲
│ Write │ Read (Poll)
│ │
┌────────┴────────┐ ┌──────────┴──────────┐
│ Ice Server │ │ Ice Client │
│ │ │ │
│ • Web UI │ │ • Version polling │
│ • Rule editor │ │ • Hot reload │
│ • Publishing │ │ • In-memory exec │
└─────────────────┘ └─────────────────────┘
```
## Documentation
- [Getting Started](https://waitmoon.com/en/guide/getting-started.html)
- [Architecture Design](https://waitmoon.com/en/advanced/architecture.html)
- [Configuration Guide](https://waitmoon.com/en/guide/detail.html)
- [FAQ](https://waitmoon.com/en/guide/qa.html)
## Community
- [GitHub Issues](https://github.com/zjn-zjn/ice/issues) — Bug reports and feature requests
- [GitHub Discussions](https://github.com/zjn-zjn/ice/discussions) — Questions and discussions
## License
[Apache License 2.0](LICENSE)