https://github.com/zjn-zjn/ice
Rule engine/process engine, committed to solving flexible and complex hard-coded problems, for complex/flexibly changing business, provide a new abstract orchestration solution that is lightweight, high-performance and provides visual operation pages. Java规则引擎-ice,针对复杂/灵活变动业务,提供一个新的抽象编排解决方案,轻量级,高性能并提供可视化操作页面
https://github.com/zjn-zjn/ice
business-rules business-rules-engine flow-control flow-engine java rule-engine rule-processor rules rules-engine
Last synced: 2 months ago
JSON representation
Rule engine/process engine, committed to solving flexible and complex hard-coded problems, for complex/flexibly changing business, provide a new abstract orchestration solution that is lightweight, high-performance and provides visual operation pages. Java规则引擎-ice,针对复杂/灵活变动业务,提供一个新的抽象编排解决方案,轻量级,高性能并提供可视化操作页面
- Host: GitHub
- URL: https://github.com/zjn-zjn/ice
- Owner: zjn-zjn
- License: apache-2.0
- Created: 2021-06-08T13:23:12.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2026-03-29T04:48:25.000Z (2 months ago)
- Last Synced: 2026-03-29T07:32:25.254Z (2 months ago)
- Topics: business-rules, business-rules-engine, flow-control, flow-engine, java, rule-engine, rule-processor, rules, rules-engine
- Language: Go
- Homepage: https://waitmoon.com
- Size: 20.1 MB
- Stars: 661
- Watchers: 11
- Forks: 132
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
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
```xml
com.waitmoon.ice
ice-core
4.0.5
```
```java
IceFileClient client = new IceFileClient(1, "./ice-data", "com.your.package");
client.start();
IceRoam roam = IceRoam.create();
roam.setId(1L);
roam.put("uid", 12345);
Ice.syncProcess(roam);
```
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()
roam := ice.NewRoam()
roam.SetId(1)
roam.Put("uid", 12345)
ice.SyncProcess(context.Background(), roam)
}
```
Python · Documentation
```bash
pip install ice-rules
```
Usage:
```python
import ice
client = ice.FileClient(app=1, storage_path="./ice-data")
client.start()
roam = ice.Roam.create()
roam.set_id(1)
roam.put("uid", 12345)
ice.sync_process(roam)
```
## 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)