业务绑定
引用文件
本文引用的文件
- 业务系统交互接口.md
- RuleBusinessApi.java
- RuleBusinessApiServiceImpl.java
- RuleLiteflowChainService.java
- RuleLiteflowChainServiceImpl.java
- RuleBusinessLimitDTO.java
- BusinessLimitCacheDTO.java
- RuleBusinessLimitServiceImpl.java
- RuleBusinessLimitService.java
- RuleBusinessLimitRespVO.java
- RuleBusinessLimitSaveReqVO.java
- RuleBusinessLimitPageReqVO.java
- RuleRunUtil.java
- README.md(黑名单模块)
- index.md(黑名单模块)
目录
简介
本技术文档围绕“业务绑定”能力展开,系统性阐述规则与业务系统的绑定机制,包括:
- 规则业务类型定义与业务ID映射关系
- 数量限制控制与业务限制DTO
- RuleBusinessApiServiceImpl 的实现逻辑(规则查询、业务限制获取、规则详情管理等)
- RuleLiteflowChainService 的规则链管理(创建、更新、删除、状态控制等)
- 与黑名单风控、设备管理等模块的集成关系与数据流转
目标是帮助业务系统与规则引擎高效协作,实现灵活、可控、可观测的规则绑定与执行。
项目结构
业务绑定相关代码主要分布在规则引擎模块的 API 层与业务实现层,同时涉及黑名单与设备模块的集成。
图示来源
- RuleBusinessApi.java
- RuleBusinessApiServiceImpl.java
- RuleLiteflowChainService.java
- RuleLiteflowChainServiceImpl.java
- RuleBusinessLimitDTO.java
- BusinessLimitCacheDTO.java
章节来源
- RuleBusinessApi.java
- RuleBusinessApiServiceImpl.java
- RuleLiteflowChainService.java
- RuleLiteflowChainServiceImpl.java
- RuleBusinessLimitDTO.java
- BusinessLimitCacheDTO.java
核心组件
- 规则业务交互接口层:对外暴露绑定/解绑、规则查询、MAC/渠道/地区查询、设备数量统计、业务限制获取等 RPC 接口。
- 业务实现层:负责业务类型校验、绑定关系落地、审批状态推进、缓存更新与事件通知。
- 规则链服务层:负责规则链的创建、更新、删除、状态控制及业务绑定的创建/删除/取消。
- 业务限制DTO:承载业务侧数量限制的推送与缓存结构,支持无限制、覆盖更新、增量更新等策略。
章节来源
- RuleBusinessApi.java
- RuleBusinessApiServiceImpl.java
- RuleLiteflowChainService.java
- RuleLiteflowChainServiceImpl.java
- RuleBusinessLimitDTO.java
- BusinessLimitCacheDTO.java
架构总览
业务系统通过 FeignClient 调用规则引擎的 RuleBusinessApi,实现规则绑定/解绑、规则列表查询、MAC/渠道/地区查询、设备数量统计、业务限制获取等能力。规则引擎内部通过 RuleBusinessApiServiceImpl 组织业务逻辑,调用 RuleLiteflowChainServiceImpl 完成规则链与业务绑定的创建/删除/状态推进,并通过缓存与事件机制保障一致性与性能。
图示来源
章节来源
详细组件分析
规则业务类型与业务ID映射
- 业务类型定义:接口文档明确列举了业务类型取值(如任务推送、Launcher广告配置、黑名单、UOTA升级、域名分发),业务系统在绑定/查询时需按该枚举传递。
- 业务ID映射:规则引擎通过 rule_business 表维护 businessType + businessId 与 liteflowChainId 的映射关系,支持按业务类型与业务ID查询已绑定规则、MAC/渠道/地区等。
章节来源
RuleBusinessApiServiceImpl 实现逻辑
- 绑定/解绑规则:校验参数与编辑权限,调用 RuleLiteflowChainService 的 createBusiness/deleteBusiness,写入 rule_business 并更新缓存。
- 规则列表查询:先查询 rule_business 获取绑定规则ID,再批量查询规则详情,补充绑定关系的生效状态。
- MAC/渠道/地区查询:基于绑定规则ID集合,分别查询 rule_mac_item、rule_channel_item、rule_region_item,并合并来源(直接MAC/通过MAC资源间接关联)。
- 审批变更信息:根据 rule_business.valid 与 rule_liteflow_chain.valid 分类统计新绑定/解绑/无绑定但规则内部变更的 MAC/渠道/地区/MAC资源变更数量。
- 设备数量统计:提供单个/多个业务ID的设备覆盖统计接口,支持重新计算。
图示来源
章节来源
- RuleBusinessApiServiceImpl.java
- RuleBusinessApiServiceImpl.java
- RuleBusinessApiServiceImpl.java
- RuleBusinessApiServiceImpl.java
RuleLiteflowChainService 规则链管理
- 创建规则链:校验 EL 表达式合法性,校验名称唯一性;根据业务类型与是否需要审批决定初始状态(未生效/已生效),必要时发送审批事件。
- 更新规则链:校验编辑权限与主表字段变更,若需要审批则写入草稿并推进状态;否则直接更新并刷新缓存。
- 删除规则链:若存在业务绑定则禁止删除;否则按需审批或直接删除并清理子表与缓存。
- 业务绑定管理:创建/删除/取消业务绑定,校验重复绑定与审批约束;在需要审批时写入待生效状态并发送事件;删除时更新缓存。
图示来源
章节来源
- RuleLiteflowChainService.java
- RuleLiteflowChainServiceImpl.java
- RuleLiteflowChainServiceImpl.java
- RuleLiteflowChainServiceImpl.java
- RuleLiteflowChainServiceImpl.java
业务限制DTO与数量控制
- RuleBusinessLimitDTO:承载业务类型、业务ID、限制总数(-1表示无限制)、当前已操作数量(覆盖更新)、本次增加数量(优先级低于currentCount)。
- BusinessLimitCacheDTO:用于Redis缓存的结构,包含业务ID、业务类型、限制总数、当前已操作数量,并提供剩余数量与余量判断方法。
- RuleBusinessApiServiceImpl 通过 RuleRunUtil 从缓存/数据库获取业务限制,支持防穿透与锁优化。
图示来源
章节来源
业务限制管理服务
- RuleBusinessLimitService:提供业务限制的创建、更新、删除、查询与分页能力。
- RuleBusinessLimitServiceImpl:基于 Mapper 实现 CRUD,校验存在性并返回结果。
- VO层:RuleBusinessLimitRespVO、RuleBusinessLimitSaveReqVO、RuleBusinessLimitPageReqVO 定义管理后台的数据结构与分页参数。
章节来源
- RuleBusinessLimitService.java
- RuleBusinessLimitServiceImpl.java
- RuleBusinessLimitRespVO.java
- RuleBusinessLimitSaveReqVO.java
- RuleBusinessLimitPageReqVO.java
与黑名单风控、设备管理的集成
- 黑名单模块:黑名单配置支持审批流,启用规则引擎后审批流会包含规则变更信息;黑名单模块与设备模块存在关联关系。
- 设备模块:规则引擎提供设备数量统计接口,业务系统可查询业务绑定的设备覆盖总量。
- 规则匹配:RuleRunUtil 提供按设备信息匹配业务ID集合的能力,支持任务推送、Launcher广告配置、黑名单等场景。
章节来源
依赖关系分析
- RuleBusinessApiServiceImpl 依赖 RuleLiteflowChainService 进行业务绑定的创建/删除/取消。
- RuleBusinessApiServiceImpl 依赖 Redis 缓存与 Kafka 事件进行缓存更新与审批事件通知。
- RuleLiteflowChainServiceImpl 依赖各 Mapper 进行规则链 与子表的 CRUD,并在需要审批时发送事件。
- 业务限制通过 RuleBusinessLimitDTO/BusinessLimitCacheDTO 在缓存与业务系统之间传递。
图示来源
- RuleBusinessApi.java
- RuleBusinessApiServiceImpl.java
- RuleLiteflowChainServiceImpl.java
- RuleBusinessLimitDTO.java
- BusinessLimitCacheDTO.java
章节来源
- RuleBusinessApi.java
- RuleBusinessApiServiceImpl.java
- RuleLiteflowChainServiceImpl.java
- RuleBusinessLimitDTO.java
- BusinessLimitCacheDTO.java