IceIce
首页
  • 入门

    • 快速开始
    • 核心概念
    • 架构设计
  • SDK 指南

    • Java SDK
    • Go SDK
    • Python SDK
  • 参考

    • 节点类型速查
    • Roam API
    • Mock
    • Server 配置
    • Client 配置
演示
常见问题
  • 更新日志
  • 升级指南
赞助
社区
  • GitHub
  • Gitee
  • English
  • 简体中文
首页
  • 入门

    • 快速开始
    • 核心概念
    • 架构设计
  • SDK 指南

    • Java SDK
    • Go SDK
    • Python SDK
  • 参考

    • 节点类型速查
    • Roam API
    • Mock
    • Server 配置
    • Client 配置
演示
常见问题
  • 更新日志
  • 升级指南
赞助
社区
  • GitHub
  • Gitee
  • English
  • 简体中文
  • 参考手册

    • 节点类型
    • Roam API
    • Server 配置
    • Client 配置
    • Mock 执行

Roam API

Roam 是节点间传递数据的核心容器。线程安全,支持多级 key 和引用语法。

实现基础

语言底层实现线程安全机制
JavaConcurrentHashMap<String, Object>CAS + 分段锁
Gosync.RWMutex + map[string]any读写锁
Pythonthreading.RLock + dict可重入锁

基础读写

多级 key

使用 . 分隔的 key 自动构建嵌套数据结构:

列表遍历

多级 key 中的数字片段可以读取已有 list/array 的元素。注意:putDeep 使用数字片段时会创建嵌套 map(以数字字符串为 key),而不会创建 list。

引用语法

@ 前缀表示从 Roam 中间接取值。非 @ 前缀返回参数自身:

引用语法的用途

在 Server 配置界面中,叶子节点的字段值可以设为 @key 形式,实现从 Roam 动态取值,而非硬编码。

_ice 保留 key

"_ice" 是 Roam 中的保留 key,用于存储执行元数据(IceMeta)。用户无法通过 put/putDeep 覆盖它。

IceMeta 包含以下字段:id、scene、nid、ts、trace、type、debug、process。

各语言提供便捷访问方法:

Go Value 流式 API

Value()/ValueDeep() 返回 RoamValue,提供链式类型转换方法:

roam.Value("score").Int()           // int
roam.Value("score").IntOr(0)        // int,不存在时返回默认值
roam.Value("score").Int64()         // int64
roam.Value("score").Int64Or(0)      // int64,不存在时返回默认值
roam.Value("name").String()         // string
roam.Value("name").StringOr("N/A")  // string,带默认值
roam.Value("rate").Float64()        // float64
roam.Value("rate").Float64Or(0.0)   // float64,不存在时返回默认值
roam.Value("active").Bool()         // bool
roam.Value("active").BoolOr(false)  // bool,不存在时返回默认值
roam.Value("key").Exists()          // 是否存在
roam.Value("key").Raw()             // 原始 any 值

// 深层访问
roam.ValueDeep("user.profile.level").Int()
roam.ValueDeep("user.profile.level").IntOr(1)

// 绑定到指针
var level int
roam.Value("level").To(&level)

cloneRoam

浅拷贝 Roam:复制业务数据并创建新的 IceMeta process 缓冲区。主要用于并行 handler 执行时的数据隔离。

完整方法列表

Java (IceRoam)

方法说明
put(key, value)写入值。value 为 null 时移除 key
get(key)读取值,返回 Object
putValue(key, value)写入值(泛型免强转)
getValue(key)读取值(泛型免强转)
putDeep(multiKey, value)按 . 分隔写入嵌套结构
getDeep(multiKey)按 . 分隔读取嵌套值
resolve(union)引用语法:@ 前缀从 roam 取值
getIceId()获取执行 ID
getIceScene()获取场景
getIceTs()获取时间戳
cloneRoam()浅拷贝 Roam(并行执行时使用)

Go (Roam)

方法说明
Put(key, value)写入值
Get(key)读取值,返回 any
PutDeep(multiKey, value)嵌套写入
GetDeep(multiKey)嵌套读取
Resolve(union)引用语法
Data()返回数据副本(排除 _ice)
String()JSON 格式输出
Value(key)返回 RoamValue,支持链式类型转换
ValueDeep(multiKey)深层访问,返回 RoamValue
GetMeta()获取 IceMeta 元数据
Clone()浅拷贝 Roam(并行执行时使用)

Python (Roam)

方法说明
put(key, value)写入值
get(key, default=None)读取值
put_deep(key, value)嵌套写入
get_deep(key, default=None)嵌套读取
resolve(union)引用语法
contains(key)是否包含 key
remove(key)移除 key
keys()所有 key
to_dict()转为 dict
get_meta()获取 IceMeta 元数据
clone()浅拷贝 Roam(并行执行时使用)
在 GitHub 上编辑此页
上次更新: 2026/3/22 13:41
贡献者: waitmoon, Claude Opus 4.6
Prev
节点类型
Next
Server 配置