Ice 快速上手指南
5 分钟快速接入 Ice 规则引擎,开启可视化业务编排之旅!
前置了解
Ice 采用 Server + Client + 共享存储 架构:
- Ice Server:可视化规则配置管理平台
- Ice Client:规则执行 SDK,集成到您的业务应用
- 共享存储:Server 和 Client 通过共享文件目录实现配置同步
环境要求
- Docker:推荐使用 Docker 部署 Server
- JDK:1.8+(SpringBoot 3.x 需要 JDK 17+)
第一步:部署 Ice Server
方式一:Docker 部署(推荐)
# 拉取并运行
docker run -d --name ice-server \
-p 8121:8121 \
-v ./ice-data:/app/ice-data \
waitmoon/ice-server:latest
或使用 Docker Compose:
# docker-compose.yml
version: '3.8'
services:
ice-server:
image: waitmoon/ice-server:latest
container_name: ice-server
ports:
- "8121:8121"
volumes:
- ./ice-data:/app/ice-data
restart: unless-stopped
docker-compose up -d
方式二:手动部署
下载最新版本:https://waitmoon.com/downloads/
# 解压并启动
tar -xzvf ice-server-*.tar.gz
cd ice-server
sh ice.sh start
访问管理界面
启动成功后访问:http://localhost:8121
在线体验环境:http://eg.waitmoon.com
第二步:集成 Ice Client SDK
添加 Maven 依赖
<dependency>
<groupId>com.waitmoon.ice</groupId>
<artifactId>ice-spring-boot-starter-3x</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.waitmoon.ice</groupId>
<artifactId>ice-spring-boot-starter-2x</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.waitmoon.ice</groupId>
<artifactId>ice-core</artifactId>
<version>2.0.0</version>
</dependency>
配置 Client
# application.yml
ice:
app: 1 # 应用 ID,与 Server 配置对应
storage:
path: ./ice-data # 共享存储路径(与 Server 相同)
scan: com.your.package # 叶子节点扫描包路径
关键配置
ice.storage.path 必须与 Server 共享同一目录
- 本地开发:使用相同的本地路径
- Docker 环境:通过卷挂载实现共享
- 分布式环境:使用 NFS 或云盘
非 SpringBoot 项目
import com.ice.core.client.IceFileClient;
// 创建客户端
IceFileClient client = new IceFileClient(
1, // app ID
"./ice-data", // 共享存储路径
"com.your.package" // 叶子节点扫描包
);
// 启动
client.start();
client.waitStarted();
// 使用完毕后销毁
client.destroy();
第三步:开发叶子节点
Ice 提供三种叶子节点类型:
| 类型 | 基类 | 返回值 | 用途 |
|---|---|---|---|
| Flow | BaseLeafRoamFlow | true/false | 条件判断、规则过滤 |
| Result | BaseLeafRoamResult | true/false | 业务操作、发放奖励 |
| None | BaseLeafRoamNone | 无 | 数据查询、日志记录 |
示例:金额发放节点
@Data
@EqualsAndHashCode(callSuper = true)
public class AmountResult extends BaseLeafRoamResult {
private String key; // 可配置:用户 ID 的 key
private double value; // 可配置:发放金额
@Override
protected boolean doRoamResult(IceRoam roam) {
Integer uid = roam.getMulti(key);
if (uid == null || value <= 0) {
return false;
}
// 调用业务接口发放金额
return sendService.sendAmount(uid, value);
}
}
第四步:配置并执行规则
1. 在 Server 配置规则
访问 http://localhost:8121 进入管理界面:
- 创建应用(App)
- 新建规则(Ice)
- 配置节点树
- 发布 使配置生效
2. 在业务代码中执行
// 创建执行包
IcePack pack = new IcePack();
pack.setIceId(1L); // 规则 ID
// 设置业务参数
IceRoam roam = new IceRoam();
roam.put("uid", 12345);
roam.put("amount", 100.0);
pack.setRoam(roam);
// 执行规则
Ice.syncProcess(pack);
// 获取执行结果
Object result = roam.get("SEND_AMOUNT");
配置共享方案
本地开发
# Server 和 Client 配置相同路径
ice:
storage:
path: ./ice-data
Docker 环境
# docker-compose.yml
services:
ice-server:
volumes:
- ./ice-data:/app/ice-data
your-app:
volumes:
- ./ice-data:/app/ice-data # 相同挂载
分布式环境
使用 NFS 或云盘(阿里云 NAS、AWS EFS 等)作为共享存储。
下一步
常见问题
Client 无法加载配置?
检查 ice.storage.path 是否与 Server 指向同一目录。
规则修改后不生效?
确保在 Server 点击了「发布」按钮,配置才会同步到 Client。
更多问题
👉 常见问题 FAQ