规则引擎-资源篇

🚀 TTD 智能决策引擎资源设计文档

版本:1.0 | 最后更新:TTD 智能决策引擎团队

📌 一、概述

TTD智能决策引擎的资源模型是整个系统的核心基础。引擎通过结构化的资源定义,实现了:

  • ✅ 决策流程的可配置化
  • ✅ 规则的可编排、复用
  • ✅ 特征的批量开发、管理、更新
  • ✅ 特征结果可溯源
  • ✅ 规则执行可追溯

本文档详细阐述引擎的九大资源类型、资源继承体系、字段设计及应用场景。

🧱 二、资源基础架构

2.1 资源基类(BaseResource

所有引擎资源均继承自 BaseResource 基类,提供统一的资源元数据管理:

字段名 类型 说明 用途
resourceKey String 资源唯一标识键 缓存索引、快速检索、资源关联
resourceName String 资源名称 展示识别、业务语义
resourceType ResourceTypeEnum 资源类型枚举 资源分类、类型判断
version String 资源版本号 版本管理、灰度发布、回滚
projectId Long 所属项目ID 项目级隔离、权限控制
tenantId String 租户ID 多租户隔离、数据权限

✨ 设计优势

统一的资源标识体系,便于全局索引;版本控制支持热更新和回滚;多租户、多项目架构的天然支持;类型安全的枚举管理。

🧩 三、九大资源类型详解

🔹 3.1 元字段(MetaField

元字段是引擎的基础数据单元,用于定义和计算基础字段值。

字段名 类型 说明 示例
language String 脚本语言类型 "aviator", "groovy"
script String 计算脚本 "user.age >= 18"
returnType ObjectTypeEnum 返回值类型 BOOLEAN, STRING, NUMBER
defaultValue String 默认值 "0", "unknown"
exceptionValue String 异常值 "ERROR", "-1"

应用场景

vbnet 复制代码
// 基础数据转换
script: "Math.floor((System.currentTimeMillis() - user.birthday) / 31536000000)"
returnType: NUMBER

// 数据校验
script: "user.phone =~ /^1[3-9]\d{9}$/"
returnType: BOOLEAN

💡 设计要点

支持多语言脚本引擎(Aviator、Groovy等);返回值类型强类型校验;异常处理机制(返回exceptionValue);默认值兜底。

🔹 3.2 特征配置(FeatureConfig

特征配置是引擎的核心计算单元,支持时间窗口、聚合计算等高级特性。

字段名 类型 说明 示例
featureCode String 特征编码 "user_login_count_7d"
conditionScript String 条件脚本 "event.type == 'LOGIN'"
mainDimScript String 主维度脚本 "user.id"
aggregateMode String 聚合函数 SUM, COUNT, AVG, MIN, MAX
timeMode String 时间模式 TTL, DAY, MONTH, YEAR
timeWindow Integer 时间窗口大小 7

聚合模式说明: SUM(求和), COUNT(去重计数), AVG(平均值), MIN(最小值), MAX(最大值)

vbnet 复制代码
// 用户7天登录次数
featureCode: "user_login_count_7d"
conditionScript: "event.type == 'LOGIN'"
mainDimScript: "user.id"
aggregateMode: "COUNT"
timeMode: "TTL"
timeWindow: 7

💡 设计要点

支持多维度计算、灵活的时间窗口配置、丰富的聚合函数、依赖声明(依赖元字段)、双值类型支持(FIX/DYNAMIC)。

🔹 3.3 指标(Factor

指标是基于元字段和特征配置计算得出的业务指标,支持超时控制和异常处理。

字段名 类型 说明 示例
factorType String 指标类型 META, DERIVATIVE, FEATURE
returnType ObjectTypeEnum 返回值类型 NUMBER, STRING, BOOLEAN
timeout Long 超时时间(毫秒) 3000

💡 设计要点

超时控制防止耗时过长;异常兜底;默认值处理;类型安全。

🔹 3.4 数据集(DataStruct

数据集定义了结构化数据的Schema,用于规则计算的数据源。

css 复制代码
dataStructType: "REQUEST"
fields: [
  { fieldCode: "user_id", fieldName: "用户ID", objectType: "STRING" },
  { fieldCode: "order_amount", fieldName: "订单金额", objectType: "NUMBER" }
]

🔹 3.5 布尔规则(BooleanRule

返回布尔值的判断规则。

vbnet 复制代码
script: "user.age >= 18 && user.credit_score > 600"
language: "aviator"

🔹 3.6 行动规则(ActionRule

继承布尔规则,增加结论和行动码。

vbnet 复制代码
conclusion: "REJECT"
actions: ["REJECT_ORDER", "ADD_BLACKLIST"]

🔹 3.7 规则包(RulePackage

规则包是行动规则的高级封装,支持多个子规则的合并和优先级排序。

字段名 说明 示例
mergePriority 合并优先级映射 {"REJECT":1, "REVIEW":2, "PASS":3}
childRules 子规则列表 [rule1, rule2]
defaultConclusion 默认结论 "PASS"

⚖️ 合并优先级:数字越小优先级越高,例如 REJECT(1) > REVIEW(2) > PASS(3)。

🔹 3.8 决策表(DecisionTable

表格形式的规则定义,适合多维度条件组合。

年龄段 信用分范围 风险等级
18-25 <600 HIGH
18-25 600-700 MEDIUM
26-40 >700 VERY_LOW

🔹 3.9 子流程(Decision

定义了决策执行的流程拓扑结构,通过节点和连线组织规则执行顺序。

vbnet 复制代码
decisionKey: "credit_decision_v1"
nodes: [START, WORK, BRANCH, END]
lines: [{source:"start", target:"node1", condition:""}]

💡 设计要点

可视化流程编排,支持分支、合并,节点类型包括START/END/WORK/BRANCH,支持条件连线。

🌳 四、资源继承体系

scss 复制代码
BaseResource (资源基类)
├── MetaField (元字段)
├── FeatureConfig (特征配置)
├── Factor (指标)
├── DataStruct (数据集)
├── BooleanRule (布尔规则)
│   └── ActionRule (行动规则)
│       └── RulePackage (规则包)
├── DecisionTable (决策表)
└── Decision (子流程) [独立]

📦 五、资源聚合模型(EngineResource

EngineResource 是部署单元的核心载体,聚合所有类型的资源,便于批量部署和资源关联。

🔗 六、资源依赖关系

部署时基础加载顺序:MetaField → FeatureConfig → Factor →DataStruct

部署时组件加载顺序:BooleanRule → ActionRule → RulePackage → DecisionTable → Decision。

⚠️ 避免循环依赖,使用 resourceKey 建立关联。

🗄️ 七、资源缓存架构

采用单例全局缓存 EngineResourceCache.INSTANCE 和独立不可变缓存类(MetaFieldCache, FeatureConfigCache等),由 Spring 管理的 ResourceCacheManager 提供原子更新和快照获取。

⚠️ 缓存策略,缓存所有资源时需要考虑极端场景,如决策执行过程中资源更新,由于基础资源都是对象引用,如果执行中发生资源变更,这将导致当前正在执行的 实例加载最新资源,从而影响决策执行结果。

♻️ 八、资源生命周期管理

  • 创建:后台创建,校验完整性,分配唯一key和版本。
  • 部署:打包为 DecisionDeployment,发送事件,缓存构建实例。
  • 更新:热更新,新版本生效,旧请求继续使用旧版本。
  • 下线:移除缓存,停止新请求,等待旧请求完成。

📐 九、资源设计规范

9.1 命名规范

资源类型 命名规则 示例
MetaField {subject}_{field} user_age
FeatureConfig {subject}{feature}{window} user_login_count_7d
RulePackage pkg_{scenario} pkg_credit_assessment

📝 九、总结

TTD智能决策引擎的资源模型具有以下核心优势:

  • ✅ 类型丰富:9种资源类型覆盖决策场景的全部需求
  • ✅ 层次清晰:继承体系明确,资源职责分明
  • ✅ 灵活编排:支持流程化编排和规则组合
  • ✅ 热更新:支持运行时动态更新,无需重启服务
  • ✅ 高性能:全内存缓存,毫秒级资源访问
  • ✅ 可扩展:易于扩展新的资源类型和字段
  • ✅ 多租户:完善的租户、项目、版本隔离
  • ✅ 可观测:完整的日志和监控体系

该资源模型为复杂业务场景下的实时决策提供了强大、灵活、高效的基础支撑。

📅 文档版本:1.0 | 🧑‍💻 最后更新:TTD 智能决策引擎团队

相关推荐
hxttd3 小时前
如何从0到1设计企业级风控决策平台?
后端
hxttd3 小时前
规则引擎-实时计算特征篇
后端
血小溅3 小时前
Git Submodule 实战指南:从基础概念到 AI-Native 项目落地
后端
用户21991679703913 小时前
基于.Net的NetCoreKevin框架中AgentFramework实现AI智能体Skill和工具动态管理和加载
后端
日月云棠3 小时前
6 高级配置:Spring Boot整合、泛化调用与配置指南
java·后端
SE_NAK3 小时前
go-zero 两个限流器都踩了坑,最后自行实现了一个分布式令牌桶
后端
苏三说技术3 小时前
Durid和HikariCP,哪个连接池更好?
后端
思考着亮3 小时前
1.DDL(数据定义语言)
后端