Skip to content
/ ice Public

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,针对复杂/灵活变动业务,提供一个新的抽象编排解决方案,轻量级,高性能并提供可视化操作页面

License

Notifications You must be signed in to change notification settings

zjn-zjn/ice

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, for complex/flexibly changing business, provide a new abstract orchestration solution that is lightweight, high-performance and provides visual operation pages. Java规则引擎-ice,针对复杂/灵活变动业务,提供一个新的抽象编排解决方案,轻量级,高性能并提供可视化操作页面

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •