IceIce
首页
  • 入门

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

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

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

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

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

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

    • 节点类型
    • Roam API
    • Server 配置
    • Client 配置

节点类型速查

关系节点(Relation)

关系节点控制子节点的执行方式和返回逻辑。每种都有串行和并行两个版本。

串行关系节点

类型执行方式子节点返回 true子节点返回 false无子节点
AND顺序执行,遇 false 短路停止全 true → true有 false → false(立即返回)none
ANY顺序执行,遇 true 短路停止有 true → true(立即返回)全 false → falsenone
ALL全部执行,不短路有 true 且无 false → true有 false → falsenone
NONE全部执行始终返回 none始终返回 nonenone
TRUE全部执行始终返回 true始终返回 truetrue

返回值说明

  • 当所有子节点都返回 none 时,AND / ANY / ALL 都返回 none
  • TRUE 是唯一一个无子节点也返回 true 的关系节点
  • none 表示"不参与判断",不等同于 true 或 false

并行关系节点

每种串行关系节点都有对应的并行版本,将子节点提交到线程池/协程池并发执行:

类型并发策略
ParallelAnd并发执行所有子节点。任一完成且结果为 false 时提前返回
ParallelAny并发执行所有子节点。任一完成且结果为 true 时提前返回
ParallelAll并发执行所有子节点。等待全部完成后返回
ParallelNone并发执行所有子节点。等待全部完成,始终返回 none
ParallelTrue并发执行所有子节点。等待全部完成,始终返回 true

注意

并行节点的子节点之间不应有数据依赖关系。每个子节点使用 Roam 的浅拷贝,写入同一个 key 可能产生竞争。

叶子节点(Leaf)

叶子节点是执行业务逻辑的终端节点。

类型返回值用途典型场景
Flowtrue / false条件判断,控制流程走向金额校验、等级判断、时间过滤、权限检查
Resulttrue / false执行业务操作,返回执行结果发放优惠券、扣减库存、发送通知、调用外部接口
Nonenone(不影响流程)辅助操作查询用户信息、记录日志、数据装配、缓存预热

基类层级

叶子节点提供三层基类,逐层解包入参:

BaseLeaf (IceContext)
  └── BaseLeafPack (IcePack)
        └── BaseLeafRoam (IceRoam)  ← 最常用
语言FlowResultNone
JavaBaseLeafRoamFlowBaseLeafRoamResultBaseLeafRoamNone
GoDoRoamFlow(ctx, roam)DoRoamResult(ctx, roam)DoRoamNone(ctx, roam)
Pythondo_roam_flow(roam)do_roam_result(roam)do_roam_none(roam)

节点通用配置

所有节点(关系节点和叶子节点)共享以下配置:

配置说明默认值
时间窗口节点生效时间范围。不在窗口内的节点返回 none,视为不存在不限制
反转(inverse)将 true 结果反转为 false,反之亦然。none 不受影响false
前置节点(forward)前置节点返回 false 时,主节点不执行,直接返回 false。语义等价于 AND 连接无
错误处理节点报错时的行为:SHUT_DOWN(终止流程)或返回指定状态继续执行SHUT_DOWN
调试标记是否在 processInfo 中记录该节点的执行信息false

执行流程

每个节点的 process() 方法按以下顺序执行:

  1. 时间窗口检查 → 不在窗口内则返回 none
  2. 前置节点执行 → 前置节点返回 false 则拒绝执行
  3. 自身逻辑执行 → 关系节点遍历子节点 / 叶子节点执行业务
  4. 反转处理 → 如果配置了 inverse,反转 true/false
  5. 错误处理 → 异常时按配置的策略处理
在 GitHub 上编辑此页
Next
Roam API