跳转到内容

SaaS元数据落地技术架构

一、SaaS元数据落地整体技术架构简图

Section titled “一、SaaS元数据落地整体技术架构简图”
  1. 整体四层架构(从上至下,贯穿SaaS全生命周期)
    上层:发布运营层 → 版本管理、打包构建、应用市场上架、应用升级、灰度发布
    中枢:元数据管控层(核心) → 版本元、应用包元、模板元、租户元快照、变更资产元
    底层:运行引擎层 → 动态CRUD渲染、权限解析、流程驱动、数据迁移、升级回滚
    基座:数据存储层 → saas主应用(应用、应用版本、应用版本依赖、应用定价、插件、插件版本、租户隔离等)、子应用(项目信息、CRM、采购、人事、行政、设备、财务等)

  2. 架构核心运行逻辑
    1)研发打包:读取【版本元数据+应用导出模板元数据】生成可发布产品包;
    2)市场上架:绑定产品包元数据,生成可售卖的产品初始化规则;
    3)租户开通:复制标准元模板,生成租户私有元数据快照,实现隔离初始化;
    4)租户升级:新旧版本元数据差分对比,增量更新、保留租户自定义配置、自动数据适配;
    5)全链路可追溯:所有元数据变更绑定版本号、操作日志、租户ID。

  3. 核心架构特性(解决行业痛点)

  • 元数据与业务代码解耦:所有自定义模型、流程、权限不靠硬编码;
  • 三层元数据优先级:全局内核 < 套餐模板 < 租户私有(后者覆盖前者);
  • 版本差分机制:升级只更系统变更,不覆盖租户个性化配置;
  • 快照回滚机制:每版本留存元数据快照,支持一键回滚。

二、核心元数据表设计范例(可直接落地开发)

Section titled “二、核心元数据表设计范例(可直接落地开发)”

说明:以下为企业级SaaS最小核心元数据表,完全适配 版本管理、打包、上架、开通、升级 全流程,字段为生产级设计,包含释义、场景用途。

库划分规范:中心元数据库(metadata_center),统一存储所有应用版本、包、模板、租户元配置,子应用(业务库)只存子应用数据(业务数据)。

表1:saas_product(SaaS应用数据表)

Section titled “表1:saas_product(SaaS应用数据表)”

用途:定义所有应用基础信息,为应用上架垫定基础

字段名字段类型字段释义业务场景作用
idbigint应用版本唯一主键应用市场、应用定价、应用版本关联外键
namevarchar(255)名称应用名称
codevarchar(32)编码应用编码
categorystring应用分类建筑行业、通用行业、制造行业等
fieldstring领域项目、安全、质量、技术等
pricedecimal基础价格(元)应用的单价/点数
statusinteger状态1-上架 0-下架控制应用市场是否可上架、可下架
introtext介绍应用的产品介绍
docUrlstring文档地址应用产品文档
latestVersion一对一(hasOne)最新版本号应用当前最新版本
files一对多图片应用产品主题图片

表2:saas_version(SaaS应用版本元数据表 —— 全链路主锚点)

Section titled “表2:saas_version(SaaS应用版本元数据表 —— 全链路主锚点)”

用途:定义所有应用版本,支撑打包校验、上架绑定、升级兼容判断、版本溯源

字段名字段类型字段释义业务场景作用
idbigint应用版本唯一主键所有包、租户、升级任务的关联外键
versionstring语义版本号(V3.2.5)前端展示、版本检索、版本对比
publishtimedatetimeTz版本时间版本发布的时间
packagefilestext打包文件应用版本自动化上架的包文件
isLatestboolean是否最新:0否/1是是否是最新版本
descriptiontext描述应用版本描述
product多对一(belongsTo)应用应用的过往版本

三、核心落地元数据模板和元数据导出模板

Section titled “三、核心落地元数据模板和元数据导出模板”
  1. 打包流程:
    应用导出模板元数据(项目信息)示例:
export-rules-project.json
{
"config": {
"appName": "saas-project",
"outputDir": "./export",
"compress": true,
"logPath": "./logs",
"database": {
"host": "192.168.0.243",
"port": 5432,
"user": "root",
"password": "root",
"database": "saas-project"
},
"plugins": [
]
},
"rules": [
{
"type": "structure-collections_export",
"comment": "导出指定的业务表的完整建表语句以及collections表里面的相关数据和fields字段",
"tables": [
"tabProjectMainImageProcessQuantity",
"tabProjectSubItem",
"tabProjectImageInformation",
"tabProjectGratulatory",
"tabProjectKeyNodeDuration",
"tabProjectMemorabilia",
"tabProjectRelevantUnits",
"tabProjectInfo",
"fProjectRelevant"
]
},
{
"type": "structure",
"comment": "导出指定的业务表的完整建表语句",
"tables": [
"t_p12rq26j1wi",
"t_igikf6nv2e3",
"t_f7b4aon0g4u",
"t_it2vjrjit69",
"main_tabProjectSubItem_path",
"main_tabProjectInfo_path"
]
},
{
"type": "full_data",
"comment": "导出指定的全量数据表和符合模式的表-暂且用不到",
"tables": [
],
"patterns": []
},
{
"type": "fields_export",
"comment": "一键导出指定业务表的fields字段",
"names": [
]
},
{
"type": "collections_export",
"comment": "一键导出指定业务表及其fields字段-已合并不用写",
"names": [
]
},
{
"type": "dict_export",
"comment": "一键导出指定数据字典类型及其层级结构",
"typeCodes": [
"Type",
"EngineeringContactType",
"ProjectMode",
"Memorabilia",
"EngineerType",
"SourceType",
"ImageType",
"Status",
"State",
"Scale",
"EngineeringTypeCode",
"EngineeringDivisionType",
"RelevantUnitsType",
"TypesOfEngineeringContactNotes"
]
},
{
"type": "menu_export",
"comment": "通过title自动导出菜单及关联数据 - 项目管理",
"filter": "title = '项目管理'"
},
{
"type": "workflow_export",
"comment": "一键导出指定工作流及其关联表",
"workflowKeys": [
"or9vmcjr04f","b201v9pi3q7","3az0jy261mp","xmiiq9jjc8x"
]
},
{
"type": "inject_export",
"comment": "一键导出指定注入点及其关联表",
"injectIds": [
]
},
{
"type": "inject_fields_export",
"comment": "一键导出指定注入字段fields数据",
"reverseKeys": [
]
}
]
}

注意:依赖注入/控制反转,现在用的是反向关联字段。本应用不用写规则,本应用与其他应用有关联则人工告知开发人员,手动处理。

  1. 上架流程:
    应用元数据(项目信息)示例:
metadata.json
{
"name": "SaaS 项目管理系统",
"code": "saas-project",
"category": "建筑行业",
"field": "项目",
"price": "1200",
"status":1,
"latestVersion": "1.0.0",
"intro": "一个功能强大的 SaaS 项目信息系统,支持项目信息管理、流程审批、数据字典等功能。",
"docUrl":"https://docs.youchaoyun.cn/cn/construction/project/project/",
"description": "该系统提供完整的项目管理解决方案,包括项目基本信息管理、项目相关单位管理、项目关键节点管理、项目图片信息管理、项目大事记管理、项目主形象进度管理等功能。系统还集成了工作流引擎,支持自定义审批流程和任务分配。",
"files": [
"./images/ch.jpeg",
"./images/gd.jpeg"
]
}
  1. 租户开通:

  2. 租户升级:

四、设计亮点(适配企业级SaaS核心诉求)

Section titled “四、设计亮点(适配企业级SaaS核心诉求)”
  1. 全链路版本闭环:所有操作均绑定版本号,可追溯、可兼容、可灰度;
  2. 租户配置无损升级:通过 is_tenant_modified 标记区分系统配置与租户自定义配置,升级不覆盖;
  3. 快照化回滚:任意版本留存全量元数据快照,解决升级事故无法回滚的行业痛点;
  4. 标准化交付:打包、上架、开通全部依赖元数据自动执行,杜绝人工配置误差。