Getting Started
Deploy, integrate, and execute your first rule with the Ice rule engine in 5 minutes.
Prerequisites
Ice consists of three components:
- Ice Server -- Visual rule configuration management platform with a Web interface
- Ice Client -- Rule execution SDK integrated into your business application
- Shared Storage -- Server and Client synchronize configurations through a shared file directory (
ice-data/), with no network communication required
Server --> writes config --> ice-data/ <-- reads config <-- ClientStep 1: Deploy the Server
Docker Deployment (Recommended)
docker run -d --name ice-server \
-p 8121:8121 \
-v ./ice-data:/app/ice-data \
waitmoon/ice-server:latestAfter startup, visit http://localhost:8121 to access the management interface.
Online demo: eg.waitmoon.com
Manual Deployment
Download the package for your platform from waitmoon.com/downloads:
tar -xzvf ice-server-linux-amd64.tar.gz && cd ice-server-linux-amd64
sh ice.sh startStep 2: Integrate the Client SDK
Add the dependency to your business application and start the Client. The Server and Client must share the same ice-data directory.
Spring Projects
Spring/SpringBoot projects require an additional bridge class so that leaf nodes can inject Spring Beans. See Java SDK Guide for details.
Step 3: Develop Leaf Nodes
Leaf nodes are where business logic is executed. Extend the corresponding base class, and fields in the class will automatically appear in the Server configuration interface:
Step 4: Configure and Execute
Configure Rules in Server
- Create an App
- Create a new Rule (Ice) and obtain its iceId
- Add relation nodes and leaf nodes to compose the rule tree
- Configure leaf node parameters
- Click Publish
Execute in Code
Shared Storage Deployment Options
| Scenario | Solution |
|---|---|
| Local development | Server and Client use the same local path |
| Docker | Mount to the same host directory using -v |
| Distributed deployment | NFS / AWS EFS / GCP Filestore |
Common Issues
Client cannot load configuration? Check that storagePath points to the same ice-data directory as the Server.
Rule changes not taking effect? Make sure you clicked "Publish" in the Server interface. The Client polls for configuration changes every 5 seconds by default.
Node class not found on startup? Verify that the leaf node class is under the scan package path configured in the Client, and that the class name is correct.
For more issues, see FAQ.
Next Steps
- Core Concepts -- Understand the design philosophy of tree-based orchestration
- Architecture -- How Server / Client / shared storage work together
- Java SDK | Go SDK | Python SDK -- Complete SDK references