跳到主要内容

业务绑定

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本技术文档围绕“业务绑定”能力展开,系统性阐述规则与业务系统的绑定机制,包括:

  • 规则业务类型定义与业务ID映射关系
  • 数量限制控制与业务限制DTO
  • RuleBusinessApiServiceImpl 的实现逻辑(规则查询、业务限制获取、规则详情管理等)
  • RuleLiteflowChainService 的规则链管理(创建、更新、删除、状态控制等)
  • 与黑名单风控、设备管理等模块的集成关系与数据流转

目标是帮助业务系统与规则引擎高效协作,实现灵活、可控、可观测的规则绑定与执行。

项目结构

业务绑定相关代码主要分布在规则引擎模块的 API 层与业务实现层,同时涉及黑名单与设备模块的集成。

Mermaid Diagram Code:

graph TB
subgraph "规则引擎模块"
API["RuleBusinessApi 接口"]
SVC_IMPL["RuleBusinessApiServiceImpl 实现"]
CHAIN_SVC["RuleLiteflowChainService 接口"]
CHAIN_IMPL["RuleLiteflowChainServiceImpl 实现"]
LIMIT_DTO["RuleBusinessLimitDTO"]
LIMIT_CACHE["BusinessLimitCacheDTO"]
end
subgraph "业务系统"
SYS["业务系统调用方"]
end
subgraph "外部模块"
BLACK["黑名单模块"]
DEVICE["设备模块"]
end
SYS --> API
API --> SVC_IMPL
SVC_IMPL --> CHAIN_SVC
CHAIN_SVC --> CHAIN_IMPL
SVC_IMPL --> LIMIT_DTO
SVC_IMPL --> LIMIT_CACHE
SVC_IMPL --> BLACK
SVC_IMPL --> DEVICE

图示来源

章节来源

核心组件

  • 规则业务交互接口层:对外暴露绑定/解绑、规则查询、MAC/渠道/地区查询、设备数量统计、业务限制获取等 RPC 接口。
  • 业务实现层:负责业务类型校验、绑定关系落地、审批状态推进、缓存更新与事件通知。
  • 规则链服务层:负责规则链的创建、更新、删除、状态控制及业务绑定的创建/删除/取消。
  • 业务限制DTO:承载业务侧数量限制的推送与缓存结构,支持无限制、覆盖更新、增量更新等策略。

章节来源

架构总览

业务系统通过 FeignClient 调用规则引擎的 RuleBusinessApi,实现规则绑定/解绑、规则列表查询、MAC/渠道/地区查询、设备数量统计、业务限制获取等能力。规则引擎内部通过 RuleBusinessApiServiceImpl 组织业务逻辑,调用 RuleLiteflowChainServiceImpl 完成规则链与业务绑定的创建/删除/状态推进,并通过缓存与事件机制保障一致性与性能。

Mermaid Diagram Code:

sequenceDiagram
participant Biz as "业务系统"
participant API as "RuleBusinessApi"
participant Svc as "RuleBusinessApiServiceImpl"
participant ChainSvc as "RuleLiteflowChainServiceImpl"
participant DB as "数据库"
participant Cache as "Redis缓存"
Biz->>API : 调用 bindOrUnbindRule()
API->>Svc : 参数校验与业务类型检查
Svc->>ChainSvc : createBusiness()/deleteBusiness()
ChainSvc->>DB : 写入/更新 rule_business
ChainSvc->>Cache : 删除相关缓存Key
Svc-->>API : 返回结果
API-->>Biz : 绑定/解绑成功

图示来源

章节来源

详细组件分析

规则业务类型与业务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的设备覆盖统计接口,支持重新计算。

Mermaid Diagram Code:

flowchart TD
Start(["进入 listRules"]) --> CheckParams["校验业务类型与业务ID"]
CheckParams --> QueryBind["查询 rule_business 获取绑定规则ID集合"]
QueryBind --> Empty{"是否为空?"}
Empty -- 是 --> ReturnEmpty["返回空列表"]
Empty -- 否 --> QueryRules["批量查询规则详情"]
QueryRules --> FillValid["填充规则与绑定关系生效状态"]
FillValid --> ToDTO["转换为响应DTO"]
ToDTO --> End(["返回结果"])

图示来源

章节来源

RuleLiteflowChainService 规则链管理

  • 创建规则链:校验 EL 表达式合法性,校验名称唯一性;根据业务类型与是否需要审批决定初始状态(未生效/已生效),必要时发送审批事件。
  • 更新规则链:校验编辑权限与主表字段变更,若需要审批则写入草稿并推进状态;否则直接更新并刷新缓存。
  • 删除规则链:若存在业务绑定则禁止删除;否则按需审批或直接删除并清理子表与缓存。
  • 业务绑定管理:创建/删除/取消业务绑定,校验重复绑定与审批约束;在需要审批时写入待生效状态并发送事件;删除时更新缓存。

Mermaid Diagram Code:

classDiagram
class RuleLiteflowChainService {
+createLiteflowChain(createReqVO)
+updateLiteflowChain(updateReqVO)
+deleteLiteflowChain(id)
+createBusiness(business)
+deleteBusiness(id, needBpm, needCanEditCheck)
+cancelBusiness(id)
}
class RuleLiteflowChainServiceImpl {
-liteflowChainMapper
-businessMapper
-channelItemMapper
-macItemMapper
-regionItemMapper
-chainMacResourceItemMapper
-macResourceItemMapper
+createLiteflowChain(...)
+updateLiteflowChain(...)
+deleteLiteflowChain(...)
+createBusiness(...)
+deleteBusiness(...)
+cancelBusiness(...)
}
RuleLiteflowChainService <|.. RuleLiteflowChainServiceImpl

图示来源

章节来源

业务限制DTO与数量控制

  • RuleBusinessLimitDTO:承载业务类型、业务ID、限制总数(-1表示无限制)、当前已操作数量(覆盖更新)、本次增加数量(优先级低于currentCount)。
  • BusinessLimitCacheDTO:用于Redis缓存的结构,包含业务ID、业务类型、限制总数、当前已操作数量,并提供剩余数量与余量判断方法。
  • RuleBusinessApiServiceImpl 通过 RuleRunUtil 从缓存/数据库获取业务限制,支持防穿透与锁优化。

Mermaid Diagram Code:

classDiagram
class RuleBusinessLimitDTO {
+Integer businessType
+Long businessId
+Integer limitCount
+Integer currentCount
+Integer addCount
}
class BusinessLimitCacheDTO {
+Long businessId
+Integer businessType
+Integer limitCount
+Integer currentCount
+getRemainingCount()
+hasRemaining()
}
class RuleBusinessApiServiceImpl {
+getBusinessLimit(businessType, businessId)
}
RuleBusinessApiServiceImpl --> RuleBusinessLimitDTO : "使用"
RuleBusinessApiServiceImpl --> BusinessLimitCacheDTO : "缓存"

图示来源

章节来源

业务限制管理服务

  • RuleBusinessLimitService:提供业务限制的创建、更新、删除、查询与分页能力。
  • RuleBusinessLimitServiceImpl:基于 Mapper 实现 CRUD,校验存在性并返回结果。
  • VO层:RuleBusinessLimitRespVO、RuleBusinessLimitSaveReqVO、RuleBusinessLimitPageReqVO 定义管理后台的数据结构与分页参数。

章节来源

与黑名单风控、设备管理的集成

  • 黑名单模块:黑名单配置支持审批流,启用规则引擎后审批流会包含规则变更信息;黑名单模块与设备模块存在关联关系。
  • 设备模块:规则引擎提供设备数量统计接口,业务系统可查询业务绑定的设备覆盖总量。
  • 规则匹配:RuleRunUtil 提供按设备信息匹配业务ID集合的能力,支持任务推送、Launcher广告配置、黑名单等场景。

章节来源

依赖关系分析

  • RuleBusinessApiServiceImpl 依赖 RuleLiteflowChainService 进行业务绑定的创建/删除/取消。
  • RuleBusinessApiServiceImpl 依赖 Redis 缓存与 Kafka 事件进行缓存更新与审批事件通知。
  • RuleLiteflowChainServiceImpl 依赖各 Mapper 进行规则链与子表的 CRUD,并在需要审批时发送事件。
  • 业务限制通过 RuleBusinessLimitDTO/BusinessLimitCacheDTO 在缓存与业务系统之间传递。

Mermaid Diagram Code:

graph LR
API["RuleBusinessApi"] --> IMPL["RuleBusinessApiServiceImpl"]
IMPL --> CHAIN_SVC["RuleLiteflowChainService"]
IMPL --> LIMIT_DTO["RuleBusinessLimitDTO"]
IMPL --> LIMIT_CACHE["BusinessLimitCacheDTO"]
CHAIN_SVC --> CHAIN_IMPL["RuleLiteflowChainServiceImpl"]
IMPL --> REDIS["Redis缓存"]
IMPL --> KAFKA["Kafka事件"]

图示来源

章节来源

性能考量

  • 三级缓存:RuleRunUtil 对业务限制与规则匹配实现本地缓存、Redis与数据库的三级缓存,降低查询延迟与数据库压力。
  • 分区查询:MAC相关表采用分区索引,查询时按规则ID或资源ID计算分区,避免全表扫描。
  • 批量导入:规则链导入MAC时采用分批处理与批量插入/更新,提升大体量数据导入效率。
  • 审批状态推进:审批通过后统一推进规则/绑定状态并刷新缓存,避免中间态影响。

章节来源

故障排查指南

  • 绑定/解绑失败:检查业务类型与业务ID是否正确,确认规则是否处于可编辑状态,查看是否存在重复绑定或审批冲突。
  • 规则列表为空:确认 rule_business 是否存在对应记录,检查规则ID集合是否为空。
  • MAC/渠道/地区查询异常:核对 valid 状态过滤条件,确认分区索引计算是否正确。
  • 审批变更统计不准确:检查 rule_business.valid 与 rule_liteflow_chain.valid 的状态值,确保审批事件已正确发送与消费。
  • 业务限制无效:确认 RuleBusinessLimitDTO 的字段传值(limitCount/currentCount/addCount)与缓存更新流程。

章节来源

结论

业务绑定通过清晰的接口契约与严格的审批状态管理,实现了规则与业务的灵活绑定与可控变更。借助缓存与分区查询等优化手段,系统在高并发场景下仍能保持稳定与高效。与黑名单、设备等模块的协同,进一步增强了规则引擎在风控与设备管理领域的适用性与扩展性。

附录

API 接口说明(节选)

  • 绑定或解绑规则:POST /rpc-api/rule/rule-business/bind-or-unbind
  • 查询规则列表:GET /rpc-api/rule/rule-business/list-rules
  • 查询MAC列表:POST /rpc-api/rule/rule-business/list-macs
  • 查询渠道/地区列表:GET /rpc-api/rule/rule-business/list-channels / list-regions
  • 获取业务数量限制:GET /rpc-api/rule/rule-business/get-business-limit
  • 获取设备数量:GET /rpc-api/rule/rule-business/get-device-count / get-device-count-more

章节来源

业务限制DTO字段说明

  • businessType:业务类型(必填)
  • businessId:业务ID(必填)
  • limitCount:业务数量限制(-1表示无限制;留空表示不更新)
  • currentCount:当前已操作数量(留空表示不更新;有值时直接覆盖)
  • addCount:本次增加数量(当 currentCount 与 addCount 同时存在时,以 currentCount 为准)

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答