4. 数据架构与迁移映射

Data Center 到 Cloud 的迁移,本质上不是“把数据搬过去”,而是把一套可自由扩展、可深度定制的数据模型,重新映射到一套受平台约束、以云原生方式治理的数据模型上。Jira DC 允许管理员直接操作数据库、编写自定义插件、任意修改工作流与字段配置;而 Jira Cloud 通过 REST API、Forge/Connect 应用、团队管理(Atlassian Guard/组织级策略)来约束这些能力。因此,迁移映射表的核心任务,是识别哪些对象可以“原样平移”,哪些必须“结构改写”,哪些只能“降级替代”或“放弃并重建”。

一、先建立数据模型的分层认知

Jira 的数据模型可以拆成四层,迁移难度依次递增:

  • 项目层:项目类型(业务/软件/服务管理)、项目键、项目角色、项目分类。这一层在 Cloud 中基本一一对应,但项目类型决定了可用功能集,需要重新选择。
  • 工作流层:状态、转换、条件、校验器、后置函数(post function)、触发器。DC 中大量使用 ScriptRunner、JMWE 等插件实现的条件与后置逻辑,在 Cloud 中必须改写为原生条件、自动化规则(Automation)或 Forge 应用。
  • 字段层:自定义字段类型、字段上下文(context)、字段配置方案(field configuration scheme)、界面方案(screen scheme)。这是迁移中最容易“丢语义”的一层,因为字段类型、选项、默认值、必填规则在两端并不完全等价。
  • 权限层:权限方案(permission scheme)、问题安全级别(issue security level)、项目角色、全局权限。Cloud 中权限模型更细,且与组织级策略、产品访问权限耦合,需要重新设计而非简单复制。

理解这四层的差异,才能判断映射表中每一行应该标注为“直接映射”“转换映射”还是“重建”。

Jira DC → Cloud 数据模型映射关系图 左侧为 DC 数据对象,右侧为 Cloud 目标对象,中间标注映射策略 Data Center 数据模型 项目 / 项目键 / 角色 项目类型、分类、角色成员 工作流 状态 / 转换 / 条件 校验器 / 后置函数 / 触发器 自定义字段 字段类型 / 上下文 / 选项 字段配置方案 / 界面方案 默认值 / 必填规则 权限方案 权限方案 / 问题安全级别 全局权限 / 项目角色 插件与脚本 ScriptRunner / JMWE 自定义监听器 / 数据库直连 映射策略与转换动作 直接映射 项目键、角色名称、分类可平移 转换映射 状态名保留,条件/校验器改写为 原生条件或 Automation 规则 字段语义重建 类型等价判断 → 选项迁移 → 上下文合并 → 必填规则重设 (最易丢失语义的一层) 权限重设计 权限方案 → 项目角色 + 产品访问 安全级别 → 问题安全方案 降级 / 替代 / 放弃 插件逻辑 → Forge 应用或 Automation 数据库直连 → 禁止,必须重构 Cloud 目标模型 项目 / 项目角色 团队管理项目、角色同步 工作流 + 自动化 原生条件 / 校验器 Automation 规则替代后置函数 自定义字段 字段类型受平台限制 上下文合并为全局或项目级 字段配置方案重新绑定 权限与安全 权限方案 + 组织策略 问题安全级别 + 产品访问 Forge / Connect 应用 替代插件逻辑 REST API 替代数据库直连 直接映射 转换/重建 目标落地

二、字段映射表:从“字段清单”到“语义对照”

字段映射不能只列“DC 字段名 → Cloud 字段名”,而应记录字段类型、上下文、选项、默认值、必填规则以及迁移动作。下面是一份可直接用于迁移评估的字段映射表示例(示例数据基于常见 Jira DC 配置,实际项目需按自身字段清单替换):

DC 字段名 DC 类型 Cloud 目标类型 上下文/选项处理 迁移动作 风险等级
客户编号 单行文本 短文本 全局上下文,无选项 直接映射 低
业务线 单选列表 单选列表 选项值需逐项核对,Cloud 不支持选项分组 转换映射,选项重建 中
影响版本 版本选择器 版本选择器 版本需先迁移,字段上下文绑定项目 转换映射,依赖版本迁移 中
审批状态 ScriptRunner 计算字段 无直接等价类型 需改为 Automation 规则写入文本字段 降级替代 高
关联需求 Issue Link 类型 问题链接类型 链接类型名称需在 Cloud 中预先创建 转换映射 中
内部备注 多行文本(含数据库直连) 多行文本 数据库直连逻辑必须移除 重建,逻辑改写 高

这张表的价值在于:它把“字段迁移”从一次性动作变成了可逐行判断的决策过程。风险等级为“高”的行,必须在迁移前完成替代方案设计,否则迁移后会出现字段空白、规则失效或数据不可读。

三、工作流与权限方案的映射要点

工作流映射的关键不是状态名,而是转换背后的逻辑。DC 中常见的“仅当用户属于某项目角色且字段 A 非空时才能转换”,在 Cloud 中应优先用原生条件(如“用户属于项目角色”“字段值不为空”)实现;若原生条件无法覆盖,则用 Automation 规则在转换后触发校验或通知。需要特别注意的是,DC 中通过后置函数自动更新字段的逻辑,在 Cloud 中应改为 Automation 的“编辑问题”动作,并确保规则触发条件与原有后置函数一致。

权限方案的映射则要区分“权限方案”与“问题安全级别”。Cloud 中权限方案仍然存在,但项目角色的成员来源更依赖团队管理(Atlassian Guard)和组织级用户组。迁移时应先梳理 DC 中每个权限方案对应的项目角色,再在 Cloud 中重新绑定角色成员,而不是直接复制权限方案。问题安全级别在 Cloud 中对应“问题安全方案”,需要确认安全级别名称、成员规则与 DC 一致,否则会出现“迁移后问题对所有人可见”的严重问题。

迁移前必须确认:DC 中是否存在通过数据库直连、自定义监听器或已停止维护的插件实现的核心逻辑。这些逻辑在 Cloud 中无法直接运行,必须提前规划替代方案(Forge 应用、Automation 规则或流程重构),否则迁移后会出现业务中断。

四、建立映射表的实际工作流

建议按以下顺序推进,而不是一次性导出所有配置:

  1. 导出 DC 配置清单:通过 Jira 管理界面或 REST API 导出项目、工作流、字段、权限方案清单,形成初始台账。
  2. 逐项标注映射策略:对每个对象标注“直接映射 / 转换映射 / 重建 / 放弃”,并记录依赖关系(如字段依赖版本、工作流依赖字段配置方案)。
  3. 优先处理高风险项:先解决插件逻辑、数据库直连、复杂后置函数等高风险项,再处理字段选项、权限成员等中低风险项。
  4. 在 Cloud 沙箱中验证:用少量真实项目数据在 Cloud 测试站点中执行迁移,重点验证字段值是否完整、工作流转换是否可用、权限是否越权。
  5. 固化映射表并版本化:将最终映射表作为迁移执行依据,每次变更记录版本,避免迁移过程中配置漂移。

映射表不是一次性文档,而是迁移期间持续维护的“配置契约”。它让迁移团队、业务方和平台治理方对“什么会被保留、什么会被改变、什么会被放弃”有统一认知,从而把迁移从不可控的数据搬运,变成可审计、可回滚的工程过程。