Skip to content
/ ice-2 Public
forked from zjn-zjn/ice

Rule engine/process engine, committed to solving flexible and complex hard-coded problems, solving complex rule/process problems with new ideas and higher flexibility, lightweight, high performance, low access cost, and providing matching configurations Action page.

License

Notifications You must be signed in to change notification settings

Mu-L/ice-2

 
 

Repository files navigation

Ice

Ice

A lightweight visual rule engine for flexible business orchestration

License Maven Central Go Reference PyPI Docker Pulls

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

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

<dependency>
  <groupId>com.waitmoon.ice</groupId>
  <artifactId>ice-spring-boot-starter-3x</artifactId>
  <version>2.0.1</version>
</dependency>

Spring Boot 2.x

<dependency>
  <groupId>com.waitmoon.ice</groupId>
  <artifactId>ice-spring-boot-starter-2x</artifactId>
  <version>2.0.1</version>
</dependency>

Non-Spring

<dependency>
  <groupId>com.waitmoon.ice</groupId>
  <artifactId>ice-core</artifactId>
  <version>2.0.1</version>
</dependency>

Configuration:

ice:
  app: 1
  storage:
    path: ./ice-data
  scan: com.your.package

Usage:

IcePack pack = new IcePack();
pack.setIceId(1L);
pack.setRoam(new IceRoam().put("uid", 12345));
Ice.syncProcess(pack);
Go · Documentation
go get github.com/zjn-zjn/ice/sdks/go

Usage:

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
pip install ice-rules

Usage:

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

Community

License

Apache License 2.0

About

Rule engine/process engine, committed to solving flexible and complex hard-coded problems, solving complex rule/process problems with new ideas and higher flexibility, lightweight, high performance, low access cost, and providing matching configurations Action page.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 59.1%
  • Go 21.0%
  • Python 19.7%
  • Other 0.2%