Ice 规则引擎项目结构

Ice 规则引擎源码解析,深入了解核心模块和代码组织

Ice 规则引擎模块概览

Ice 规则引擎采用模块化设计,各模块职责清晰,便于理解和扩展。

核心模块说明

ice-common - 公共模块

Ice 规则引擎的公共组件库,包含:

  • 通用工具类(工具方法、类型转换)
  • 枚举定义(节点类型、关系类型、状态枚举)
  • 常量定义(配置常量、默认值)
  • 异常类定义

ice-core - 规则引擎核心模块 ⭐

Ice 规则引擎的核心实现,强烈推荐阅读,包含规则引擎的所有核心功能:

1. annotation 包 - 注解定义
  • 节点扫描注解
  • 配置注解
  • 自动装配注解
2. base 包 - 节点基类 ⭐⭐⭐

Ice 规则引擎节点体系的核心基类:

  • BaseNode:所有规则节点的基类,提供节点生命周期管理、时间控制等通用功能
  • BaseLeaf:所有叶子节点的基类,实现具体业务逻辑的节点
  • BaseRelation:所有关系节点的基类,控制业务流程编排(AND/OR/ALL等)
3. builder 包 - 手动构建器

提供手动构建规则的编程方式(不推荐,建议使用可视化配置平台)

4. cache 包 - 规则引擎缓存核心 ⭐⭐⭐

Ice 规则引擎的缓存管理中心:

  • IceConfCache:规则节点缓存,负责节点初始化、规则树构建、配置更新
  • IceHandlerCache:可触发的 Handler 缓存,组织和管理规则入口
5. client 包 - 服务通信模块

Ice Client 与 Server 的通信实现:

  • 规则配置拉取
  • 实时配置变更监听
  • ha 子包:高可用相关实现(Zookeeper集成)
6. context 包 - 规则执行上下文

Ice 规则引擎的执行环境:

  • IceContext:规则执行上下文的最外层,贯穿整个规则执行生命周期
    • IcePack 包裹,触发时传入的结构
    • IceParallelContext 并发的上下文,暂未使用(还没想好)
    • IceRoam 用户自定义信息&执行过程中产生的数据存放的地方(其实就是个map)
    • handler 可执行的handler
    • leaf 叶子节点
      • base 基础叶子,context作为直接入参
      • pack 剥开context,留个pack入参的叶子
      • roam 剥开pack,留个roam入参的叶子
    • relation 关系节点
      • parallel 并发的关系节点
    • utils 工具类
    • Ice 执行入口,要看源码的从这里开始~
    • IceDispatcher 分发器
  • ice-server server端,一些crud等操作,乱七八糟的很多,不好看也不用看
    • config server配置类
    • constant server 基础转换/操作
    • controller
      • common 通用controller处理,如包装resp,封装err
      • IceAppController app相关操作
      • IceBaseController 列表页相关操作
      • IceConfController 树配置相关操作
      • IceMockController mock相关操作
    • dao 数据库操作
    • enums 枚举
    • exception 错误处理
    • nio 和client通信相关处理
    • service 一些操作的处理,crud...
  • ice-test 小demo,官网例子,直接上手使用族可看
  • ice-client spring client的一些初始化操作
  • ice-client-spring-boot-autoconfigure 为了stater准备的,不用看
  • ice-client-spring-boot-starter stater,方便spring-boot项目直接引入使用的,不用看