ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenProject Backlogs FAQ 全面解读:从版本迁移到 Sprint、积压工作与燃尽图

OpenProject Backlogs FAQ 全面解读:从版本迁移到 Sprint、积压工作与燃尽图 OpenProject Backlogs FAQ 全面解读从版本迁移到 Sprint、积压工作与燃尽图【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject导读本文围绕 OpenProject 官方文档中针对BacklogsScrum模块的常见问题FAQ展开系统梳理 OpenProject 17.3 之后 Sprint 机制重构带来的变化旧的版本Version如何迁移为 Sprint、积压工作Backlog与 Sprint 的布局逻辑、积压工作的生成与排序规则、任务板与燃尽图的去向等。读者读完本文后将能理解新版 Backlogs 模块的数据模型与界面行为并能依据项目设置正确使用 Sprint、积压桶Backlog bucket和燃尽图。文中所有结论均以当前仓库中的官方文档docs/user-guide/backlogs-scrum/backlogs-faq/README.md与modules/backlogs模块源码为事实依据。说明自 OpenProject 17.3 发布以来Backlogs模块经历了重大变更包括重新设计的 Sprint 处理方式和更新后的功能17.4 及后续版本仍在持续改进。本文描述的均为当前版本的实际行为与概念。一、从 Version 到 Sprint17.3 的数据迁移机制1.1 旧版行为回顾在 OpenProject 17.3 之前Backlogs 模块允许定义版本Version并将其显示在积压工作页面的左列或右列。当时并没有专门的Sprint列用户需要自行决定版本显示在左列还是右列。1.2 迁移规则17.3 发布后Sprint 成为全新的独立对象不再与版本Version绑定。迁移逻辑如下所有被配置为显示在左列或右列的版本都会被迁移为 Sprint与这些版本关联的所有工作包Work Package也会随之出现在对应的 Sprint 中。从源码可以印证这一迁移路径在 modules/backlogs/app/workers/backlogs/migrate_version_sprint_journals_job.rb 中迁移作业会在每个与 Sprint 关联的工作包上写入一条sprint_migration类型的 Journal 记录其 SQL 中通过INNER JOIN versions ON versions.id ...关联旧版本表并支持从work_package_versions表中取kind target的最小版本 ID 作为主目标版本——这正是版本关联的工作包迁移到 Sprint的底层实现。同时该作业以异步方式运行避免迁移过程阻塞在 Journal 创建上且通过NOT EXISTS保证作业中断后重跑不会产生重复记录。1.3 Sprint 对象的数据模型迁移后的 Sprint 是一个独立模型modules/backlogs/app/models/sprint.rb关键特征包括belongs_to :project即 Sprint 归属于某个项目has_many :work_packages一个 Sprint 可包含多个工作包状态枚举enum :status包含三个取值默认值为in_planningin_planning规划中active进行中completed已完成激活active状态下必须填写开始日期和结束日期validates :start_date, :finish_date, presence: true, if: :active?结束日期不能早于开始日期默认情况下同一时间只允许一个活动 Sprintvalidate_only_one_active_sprint除非项目开启了允许多个活动 Sprint设置。duration时长由工作日的Day.working.from_range计算得出即从开始日期到结束日期之间的工作日天数。二、积压工作与 Sprint 的界面布局为什么固定左 Backlog、右 Sprint2.1 布局规则新版界面中每个项目采用一致的视图布局左侧Backlog积压工作底部为Inbox backlog收件箱积压其上方为Backlog buckets积压桶如果创建了的话右侧SprintsSprint 列表。通常一个工作包的生命周期从积压工作开始然后移动到 Sprint因此 OpenProject 将 Backlog 设计为第一列、Sprint 设计为第二列以匹配 Scrum 的自然流程。2.2 设计意图FAQ 明确指出这种所有项目一致的布局是为了维持跨项目的一致性避免不同团队各自配置左右列造成混乱。这与旧版用户自行决定版本显示在左列还是右列的自由配置形成了鲜明对比——新版将这一决策收敛为固定的产品行为。2.3 我的积压桶和 Sprint 去哪了迁移后所有旧的积压桶buckets均已作为 Sprint 迁移现在显示在右侧从17.4 版本开始左侧的 Backlog 区域支持Backlog buckets让你可以更好地对积压工作进行分类和排序。积压桶的约束在官方 Backlogs 使用指南docs/user-guide/backlogs-scrum/README.md中有明确说明一个工作包同一时间只能属于一个积压桶不能同时属于 Sprint 与积压桶也不能同时属于积压桶与 Inbox backlog。删除积压桶时桶内所有工作包会被自动移到 Inbox backlog 的底部。三、Sprint 字段在工作包中不可见怎么办如果你在某个工作包中看不到 Sprint 字段请按以下步骤排查确认 Backlogs 模块已在项目内激活进入项目设置 → 模块启用 Backlogs 模块管理员需要把 Sprint 字段添加到现有的工作包表单中添加之后Sprint 字段就会出现在工作包详情页上并可在该页面直接编辑。在工作包表格中Sprint 字段同样可用你可以显示 Sprint 列、按 Sprint 排序、按 Sprint 分组还可以通过批量编辑一次修改多个工作包的 Sprint 或积压分配详见 批量编辑工作包即仓库中的 docs/user-guide/work-packages/edit-work-package。注意在工作包表格中查看 Sprint 信息需要相应的项目权限。四、积压工作Backlog的生成与排序规则4.1 积压工作如何生成你的积压工作会自动显示项目中满足以下条件的所有工作包未关闭即状态不属于视为关闭的状态可以进行工作can be worked on未被项目设置排除的工作包类型未分配给任何 Sprint 或积压桶。如果某些工作包类型如 Epic、里程碑 Milestone在更高层面管理、不需要出现在积压中可以通过项目积压设置docs/user-guide/projects/project-settings/backlogs-settings将其排除。4.2 源码级验证积压查询的底层实现从源码可以精确验证积压自动生成的规则。在 modules/backlogs/app/models/work_packages/scopes/in_backlog_for.rb 中积压查询条件为WorkPackage .visible .where(project:, sprint_id: nil) # 未分配给 Sprint .without_excluded_type # 排除被排除的类型 .without_status_considered_closed # 排除视为关闭的状态 .order_by_position .order(id: :asc)其中without_excluded_type.rb 通过backlog_excluded_types关联表用NOT EXISTS子查询排除被项目配置排除的工作包类型without_status_considered_closed.rb 则同时检查两件事项目配置的视为关闭状态done_statuses_for_project以及状态表中全局is_closed TRUE的关闭状态——后者确保即使项目配置为空或损坏全局关闭状态也始终被视为完成。积压页面的查询则由 backlog_query_builder.rb 构建它限定project_id、默认按position asc, id asc排序并通过backlog_inbox与backlog_bucket_id两个过滤器分别组装 Inbox 与积压桶的查询最后用.or合并、再与in_backlog_for结果取交集。4.3 积压如何排序积压工作支持手动排序打开积压时最旧的条目显示在顶部工作包默认按创建日期排序当你在项目中新建工作包时它会自动被放置在积压的底部。你可以在 Inbox backlog、积压桶或 Sprint 中通过拖拽或工作包菜单中的Move移动选项调整顺序也可使用Move to position精确改变工作包在当前容器中的位置。4.4 Sprint 容器如何排序带有开始/完成日期的 Sprint 容器按日期排序最新的显示在顶部没有日期的 Sprint 容器按字母数字顺序排序。对应地源码中 sprint.rb 声明了order_by_date与order_by_activity等 scopeAll sprints总览视图docs/user-guide/backlogs-scrum/README.md 的 All sprints 一节也说明列表先按 Sprint 日期、再按 Sprint 名称排序。五、任务板Task Board的替代方案自动化 Sprint 板5.1 我的任务板消失了去哪里获取新的板旧的任务板已被取代你可以使用自动化 Sprint 板automated sprint boards它展示整个 Sprint 的范围。获取方式定义 Sprint 日期并开始你的 Sprint系统会自动将你转发到对应的 Sprint 板对于进行中active的 Sprint可以在 Sprint 菜单中找到板的快捷入口点击活动 Sprint 的菜单选择Sprint board选项。此外如果你希望查看父/子parent/child层级关系可以使用父-子板parent-child boards。5.2 Sprint 板的命名与权限从 Backlogs 使用指南docs/user-guide/backlogs-scrum/README.md可知点击 Sprint 头部的Start sprint按钮时系统自动创建一个专用的 Sprint 板并跳转过去板名称遵循[项目名: Sprint 名]模式例如Scrum project: Sprint 1Sprint 板自动继承项目权限默认对所有项目成员可见Sprint 板与燃尽图仅在 Sprint 处于活动状态时出现在菜单中。六、燃尽图Burndown Chart的去向与计算逻辑6.1 燃尽图有什么变化FAQ 明确指出燃尽图没有任何变化。它仍然与 Sprint 对象保持同步可以从活动 Sprint 的菜单中访问。6.2 燃尽图的计算原理根据使用指南docs/user-guide/backlogs-scrum/README.mdSprint 燃尽图由工作包估算的故事点Story Points总和计算得出。当用户故事被设置为关闭或项目设置中配置为视为关闭的其他状态时它会计入燃尽进度任务燃尽图由完成某项任务所需的估算小时数计算得出当任务被设置为关闭时燃尽进度随之调整图表展示每个 Sprint 的剩余故事点可选显示**理想燃尽线ideal burndown**作为参考理想燃尽假设故事点在 Sprint 期间从开始到结束呈线性完成。使用前提TIP必须定义 Sprint 的开始和结束日期并保持良好的故事点信息维护。从组件层面看仓库中的 burndown_chart.rb 与 burndown.rb 即为燃尽图的后端数据支撑sprint_reports_controller.rb与burndown_chart_controller.rb负责对应的页面渲染与数据接口。6.3 关键联动关闭状态与 Sprint 完成燃尽图、积压与 Sprint 完成操作共享同一套视为关闭状态配置在 项目积压设置 的Types and statuses标签页中你可以选择代表完成/结束的状态例如 Done、Resolved、Rejected、Wont Fix这些状态在整个 Sprint 规划和报告中都被视为关闭用于计算燃尽图并决定完成 Sprint 时哪些工作包留在 Sprint 中使用全局Closed元状态的状态始终被视为关闭且无法移除完成 Sprint 时若 Sprint 中仍有未完成的工作包系统会弹出对话框让你选择将其移动到 Inbox backlog 顶部、底部或另一个 Sprint状态为视为关闭的工作包不会被移动。七、深入理解项目级 Backlogs 设置进阶背景FAQ 中多次引用项目积压设置理解这些设置能帮助你更好地回答 FAQ 中的疑问。导航路径项目设置 → Backlogs详见 docs/user-guide/projects/project-settings/backlogs-settings。7.1 类型与状态Types and statuses视为关闭的状态Statuses considered closed选择哪些状态代表工作流中的完成/结束状态影响燃尽图计算与 Sprint 完成行为排除的工作包类型Excluded work package types被排除的类型不会出现在 Inbox backlog 和积压桶中但仍然会出现在 Sprint 与 Sprint 板上。该选择是项目特定的并在项目复制时一并复制。7.2 Sprint 共享Sprint sharingSprint 共享是项目级设置而非像版本那样的 Sprint 级设置有四种模式源码中定义于 sprint_settings.rb模式常量行为不共享默认no_sharing仅本项目可创建和使用 Sprint共享给所有项目share_all_projectsSprint 对实例内所有项目可用且同一实例中其他项目不能再共享给所有项目共享给子项目share_subprojectsSprint 对当前项目的所有子项目可用接收共享receive_shared本项目不能创建 Sprint只能使用其他项目共享的 Sprint共享内容包括 Sprint 名称、开始/完成日期、状态规划中/进行中/已完成而工作包、积压结构、Sprint 目标goal与权限始终是项目特定的。7.3 多个活动 SprintMultiple active sprints项目可开启Allow multiple active sprints开关Enterprise 功能。注意前置条件仅当项目既未共享也未接收 Sprint即 Sprint 共享为Dont share时才允许启用多个活动 Sprint。此开关在源码中对应store_attribute :settings, :allow_multiple_active_sprints, :boolean而 sprint.rb 中validate_only_one_active_sprint在allow_multiple_active_sprints?为真时会被跳过。八、结语FAQ 速查表为便于快速查阅将本文核心问答汇总如下问题核心答案旧版本数据如何迁移配置在左/右列的版本全部迁移为 Sprint关联工作包随之上到 Sprint17.3能自定义左/右列布局吗不能所有项目统一为左 Backlog、右 Sprints以保证一致性Sprint 字段不可见激活 Backlogs 模块并由管理员将 Sprint 字段添加到工作包表单旧积压桶去哪了迁移为右侧的 Sprint17.4 起左侧支持 Backlog buckets积压如何生成自动纳入未关闭、可工作、未进 Sprint/桶、类型未被排除的工作包积压如何排序手动排序默认最旧在上新工作包自动放底部Sprint 容器如何排序有日期按日期最新在上无日期按字母数字任务板在哪用自动化 Sprint 板替代开始 Sprint 时自动跳转活动 Sprint 菜单有快捷入口燃尽图在哪无变化与 Sprint 同步从活动 Sprint 菜单访问如果你希望进一步了解 Backlogs 模块的完整操作创建 Sprint、积压桶管理、故事点、批量移动等可继续阅读 Backlogs 与 Sprint 使用指南如需查看底层实现可直接探索仓库中的 modules/backlogs/app/models、modules/backlogs/app/services/backlogs 与 modules/backlogs/app/controllers/backlogs 目录。【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表