拓冰建站拓冰建站
首页 / 资讯中心 / 正文

OpenProject 工作包 FAQ 实战指南:从基础操作到过滤器、进度跟踪与 Backlogs 常见问题全解

OpenProject 工作包 FAQ 实战指南从基础操作到过滤器、进度跟踪与 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导读本文以 OpenProject 官方《Work packages FAQ》文档为主体骨架围绕日常使用中最高频的 30 个问题系统讲解工作包的属性与表单配置、表格过滤器与视图保存、状态与类型Type/Workflow设计、移动与批量复制、自定义字段、跨项目共享、XLS/PDF 导出以及版本与 Backlogs 模块的经典坑点。每个问题不仅给出可立即上手的操作步骤还结合 app/models/work_package.rb、app/services/work_packages/update_ancestors_service.rb 等仓库源码讲清背后的计算逻辑与设计约束让你既能照方抓药排障也能理解 OpenProject 为什么这样设计。目录速览主题内容工作包基础操作工作包属性、表单配置、关系过滤器与查询工作包表格、保存与修改过滤器及视图状态与类型工作包状态Status与类型Type移动与复制移动与复制工作包自定义字段附加字段、自定义属性与取值共享工作包跨项目共享工作包导出导出、打印、外部保存版本与 Backlogs版本在工作包中的应用、与 Backlogs 模块的关系一、Working with work packages工作包基础操作1.1 如何在工作包表单中嵌入一张子工作包表格OpenProject 允许你在某个工作包类型的表单配置里直接插入一张子工作包children表格让团队在创建/编辑该类型工作包时即可看到其子项。操作路径管理Administration→ 工作包 → 类型Types选择目标工作包类型进入表单配置Form configuration点击 Group插入一个工作包表格分组最后务必点击保存Save。配置完成后新建该类型工作包时表单中就会渲染出这张子工作包表格。补充说明表单配置相关的完整能力可参考 form configuration 管理指南。1.2 如何把没有账号的用户指派给工作包如果你希望一个人管理项目、不需要通知其他团队成员官方推荐使用**占位用户Placeholder users**特性管理员创建占位用户后即可像普通用户一样将其设置为工作包的 Assignee但占位用户不会收到通知、也没有登录凭据。详见 占位用户管理指南。1.3 非项目成员如何给工作包添加附件这是允许的但需要系统管理员预先配置进入角色管理给Non member非成员角色勾选Add attachments添加附件权限。配置后未加入项目的用户即可为工作包添加附件。1.4 如何设置工作量Workload、截止日期Deadline与工期Duration对应三个字段Workload工作量使用Work工作字段旧称 Estimated time 预计时间Deadline截止日期使用Finish date完成日期字段Duration工期使用Duration工期字段。在源码层面Work与Remaining work字段会经过统一的时长换算逻辑例如 app/models/work_package.rb 中的estimated_hours与remaining_hours都通过convert_duration_to_hours将 2h 30m、6d 0h 这类人类可读输入转换成小时数。管理员还可设置计量单位是小时还是天与小时默认每个工作日为 8 小时详见 进度跟踪文档。1.5 如何查看通过组间接分配给我的工作包在工作包表格中把Assignee负责人过滤器切换为Assignee and belonging group负责人及其所属组即可看到直接分配给你、以及通过组如 Marketing team间接分配给​你的所有工作包。在源码中这一过滤器由 app/models/queries/work_packages/filter/assignee_or_group_filter.rb 实现人类可读名称来自query_fields.assignee_or_group翻译键它同时匹配用户本人与用户所属的组。筛选完成后可通过 保存视图 将其留存以便随时调用。1.6 如何跟踪单个工作包的进度工作包的进度由% Complete完成百分比字段体现。它的计算有两种全局模式由管理员在实例级别选择基于工作Work-based根据Work与Remaining work自动推导基于状态Status-based每个状态绑定一个固定的 % Complete 值改状态即改进度。源码中这两种模式的判定清晰可见app/models/work_package.rb 定义了status_based_mode?对应Setting.work_package_done_ratio status、work_based_mode?对应 field与work_weighted_average_mode?。在基于状态模式下done_ratio直接取当前状态绑定的default_done_ratio见 app/models/work_package.rb。完整的进度上报模式说明请阅读 progress tracking 文档。1.7 如何跟踪带子工作包的父工作包进度OpenProject自动计算带子工作包有 children的父工作包进度它把所有子工作包的进度按 Work旧称 Estimated time加权求和若某个子工作包的Work字段为空则按默认值1 小时参与计算。⚠️ 关键提示当你把进度条progress bar加入工作包层级视图时务必同时加入 Work 列否则无法理解百分比是如何算出来的。另外手动给带有子工作包的工作包填写 Work 会被忽略——该值由子项自动汇总而来。从源码可以验证这一逻辑app/services/work_packages/update_ancestors_service.rb 中的compute_derived_done_ratio根据实例模式分派到两条计算路径calculate_work_weighted_average_percent_complete按工作加权平均progress (derived_estimated_hours - derived_remaining_hours) / derived_estimated_hours * 100即已做工作量 ÷ 总工作量calculate_simple_average_percent_complete简单平均取所有子项 done ratio 的算术平均值且children_done_ratio_values只统计included_in_totals_calculation?的子项状态被排除的会被跳过。此外层级汇总Hierarchy totals还支持通过状态设置排除出汇总计算详见 进度跟踪文档。1.8 一个工作包可以有多个父级吗**不可以。**OpenProject 的工作包层级是严格的树形结构一个工作包只能有一个父级parent。1.9 为什么我无法在工作包中记工时log time需要先在项目设置中激活Time and costs时间与成本模块。该模块未启用时工作包页面不会提供记工时入口。1.10 报错 Subject cant be blank 是怎么回事常见原因之一当你新建工作包时报此错误可检查该工作包类型的状态配置。进入管理 → 工作包 → 状态Status找到出问题的状态例如 New取消勾选 Work package read-only工作包只读选项。若该选项被勾选会导致项目属性无法被修改从而触发 subject cant be blank 之类的校验失败。1.11 如何调整工作包 Activity活动/评论标签页中条目的排序在个人账户设置中修改评论显示顺序具体见 账户设置界面文档。1.12 为什么由子工作包触发的父工作包变更没有被聚合aggregated进活动记录OpenProject 只有在同时满足以下条件时才聚合工作包活动活动发生在规定的时间窗口内由同一个用户触发聚合中至多包含一条评论因为很难合并两段正文。而由子工作包变化引发的继承性变更总是带有一条评论Updated automatically by...由……自动更新因此这类变更无法被聚合。这一点在源码中有直接佐证app/services/work_packages/update_ancestors_service.rb 的set_journal_note会为每个被自动更新的祖先工作包写入I18n.t(work_package.updated_automatically_by_child_changes, child: ##{initiator_work_package.id})这条 journal 备注正是 FAQ 中所说总是带评论的来源。1.13 如何填充/维护工作包的 Position位置字段Position属性由Backlogs 模块提供反映工作包在 backlog 桶bucket、Inbox backlog 或 sprint 中的位置。该值在 Backlogs 模块中对工作包进行重排或移动时自动维护无需手工填写。1.14 已删除的工作包能恢复吗**没有简单的方式恢复已删除的工作包。**常规做法是依靠你自己创建的备份backup进行还原。OpenProject 官方建议在删除前做好备份策略。二、Filters and queries过滤器与查询2.1 如何保留我对工作包表格修改过的列或过滤器点击工作包表格右上角的三个点图标选择保存Save或另存为Save as...。保存后视图名称会出现在左侧菜单栏中。⚠️ 注意默认视图 All open 无法被修改对它点击 Save 不会产生任何效果。你必须用Save as...另存为一个新视图。2.2 如何把表格的过滤器/列设置分享给同事保存视图时勾选 Public公开复选框。建议同时勾选Favorited收藏这样视图会进入收藏视图菜单方便同事快速找到。公开视图会显示在项目工作包菜单的公共视图Public views区详见 保存工作包视图。2.3 如何移除或修改预置的 open 过滤器目前无法直接修改预置的 open 过滤器但你可以自行配置并保存另一个视图来替代它。官方在 feature request 提交指南 中记录了相关需求线索。2.4 我排好序的表格回来一看又乱了为什么最可能的原因是排序后你没有保存视图。排序属于视图配置的一部分请通过右上角菜单Save as...或Save保存。同样地该规则不适用于默认的 All open 视图参见 工作包表格配置。2.5 全局工作包表格中为什么不是所有自定义字段都能作为过滤器在全局工作包表格中只有**设置了对所有项目生效for all projects**的自定义字段才会出现在过滤器区。原因有二性能与可用性若各项目大量使用自定义字段全局过滤器列表会非常冗长损害可用性极端情况下影响性能信息安全过滤器区的取值对所有用户可见可能把仅属于某个项目的敏感信息字段名及其取值暴露给无权访问该项目的人。2.6 父工作包下有多个子工作包表格里却看不到全部子项为什么怎么改请管理员在管理 → 系统设置 → 常规设置General settings中提高每页显示的工作包数量默认分页限制。这是 OpenProject 的已知行为与分页机制有关提高每页数量可降低出现该现象的概率。参见 general system settings。三、Status and type状态与类型3.1 新建工作包时默认总是 Task怎么修改默认类型进入管理 → 工作包 → 类型Types。列表顶部的类型就是默认类型使用右侧的箭头把希望作为默认值的类型如 User Story移到列表顶部即可。3.2 我新建了工作包类型为什么看不到首先请确认已在项目设置中激活该工作包类型。如果已激活但仍看不到例如在 Boards 模块中请升级 OpenProject 到最新发布版本。3.3 切换工作包类型后不属于新类型的属性值会丢失吗不会丢失。当把工作包切换为另一类型时不属于新类型的属性只是被隐藏hidden其值会被保留。若之后切回原类型这些属性会重新显示并恢复之前的值。3.4 我创建了新状态为什么无法选择它需要先把新状态加入工作流Workflow。进入管理 → 工作包 → 工作流为要使用该状态的工作包类型配置状态转换具体步骤见 工作流配置指南。另外配置时请取消勾选顶部的 Only display statuses that are used by this type仅显示该类型使用的状态否则新状态可能不会出现在列表中。3.5 能否修改/重命名状态列表可用状态完全可以。第一步在管理 → 工作包 → 状态Status中创建新状态第二步把新状态分配给工作流。这样即可构建自己的状态体系。3.6 如何让不同部门拥有各自不同的状态取值关键在于用户可选择的下一状态由工作包类型 × 用户角色共同决定。要让同一个类型如 Task在不同部门显示不同的状态集需要为每个部门创建独立角色在管理 → 工作包 → 状态Status中创建各部门所需的状态进入管理 → 工作包 → 工作流Workflow选择类型 角色组合例如创建角色 Marketing – Member与类型 Task 组合取消勾选 Only display statuses that are used by this type点击编辑Edit勾选允许的状态转换为其他部门角色如 IT – Member重复此步骤。这样每个部门可拥有不同的状态转换图默认状态如 New 是共享的。请注意如果某个工作包先被 A 部门更新了状态B 部门的成员可能因工作流不支持该状态转换而无法再更新它。四、Move and duplicate移动与复制[!TIP] 自 OpenProject 14.5 起术语更新Copy a work package → Duplicate a work packageChange project → Move to another project。4.1 把工作包从一个项目移到另一个项目需要哪些权限必须同时满足用户能访问两个项目用户在两个项目中至少拥有以下权限Display work packages查看工作包Move work packages移动工作包4.2 如何复制带层级关系的工作包可以创建带层级父/子工作包的工作包模板然后连同关系一起复制进入工作包表格按住Ctrl键多选要复制的层级内的所有工作包右键点击选中的工作包打开上下文菜单选择Bulk duplicate批量复制即可复制所选工作包及其关系。随后在出现的表单中可以调整被复制工作包的其他属性最后点击Duplicate确认。4.3 如何把工作包移动到另一个项目表格视图右键点击工作包 → 选择Move to another project详情视图点击右上角More三个点→Move to another project。[!TIP] 如果被移动的工作包带有子工作包子工作包也会一并移动到目标项目。关于移动的更多细节目标项目类型缺失警告等见 duplicate/move/delete 指南。4.4 能否把任务放入文件夹分组OpenProject没有文件夹概念。要分组任务官方推荐以下替代方案使用过滤器与分组选项并保存过滤器/视图把所有相关工作包设为同一父工作包如某个 phase的子项在表格中**右键 → Indent hierarchy缩进层级**即可将其变为子项层级会同步显示在甘特图中使用工作包分类Categories或自定义字段进行过滤与分组也可以创建多个项目来按主题分组。五、Custom fields自定义字段5.1 如何给工作包添加额外字段如 Department创建一个自定义字段Custom field并加入工作包表单即可。完整步骤请参考自定义字段管理指南。5.2 long text长文本类型的自定义字段会出现在工作包表格导出中吗不会。由于长文本类型无法作为表格列添加因此也无法通过整页导出页面级导出输出。但单个工作包可以导出使用PDF 下载或更推荐使用浏览器打印功能。5.3 自定义字段可以求和吗可以。在工作包表格的显示设置中勾选Sum求和选项表格底部会显示 Work、Remaining work、% Complete 以及Integer/Float 类型自定义字段的和若表格按属性分组还会按组显示小计。但跨不同属性的求和例如 预计时间 实际工时是不支持的。六、Sharing work packages共享工作包6.1 能否把工作包共享给项目之外的用户可以。自OpenProject 13.1起你可以把工作包共享给项目外部用户甚至可以共享给尚未在你实例上注册账号的用户对方需注册后才能查看。共享入口打开工作包的详情视图 → 点击Share按钮 → 在对话框中选择已有用户/组或直接输入邮箱邀请新用户。被共享用户默认获得Work Package Viewer角色并不会自动成为项目成员你也可以随时把权限调整为Edit / Comment / View。该功能属于 Enterprise 附加组件work_package_sharing且共享者需要具备全局角色create users权限详见 共享工作包文档。附若要查看所有已共享的工作包可在全局模块的 Work Packages 中选择Shared with users过滤器。七、Export导出7.1 能否把带甘特图的工作包总览导出为 PDF可以借助浏览器打印功能官方建议使用 Google Chrome。打印甘特图的技巧请参考甘特图文档。7.2 XLS 导出超过 10 分钟还没完成为什么怎么处理工作包导出是后台任务background job与复制项目等任务同类因此可能产生延迟。影响导出时长的因素要导出的工作包数量选择的导出类型例如XLS with relations带关系的 XLS可能要做更多计算导出列的数量影响相对较小。诊断方法在实例 URL 后追加/health_checks/full例如myopenprojectinstance.com/health_checks/full页面会给出worker_backed_up指标即过去 5 分钟内未能及时运行的后台任务数量。若该值多次出现通常说明需要增加 web worker 数量操作说明见运营文档中 Scaling the number of web workers 一节。从源码看工作包导出确实运行在后台队列中app/workers/work_packages/export_job.rb 继承自Exports::ExportJob它在prepare!阶段重建查询set_query_props通过Queries::WorkPackages::FilterSerializer还原过滤器随后由后台 worker 执行真正的文件生成——这印证了导出可能被排队、延迟的行为。八、Versions and backlog版本与 Backlogs8.1 无法修改父/子工作包的版本Version最快的解决办法在任务所在的项目中停用 Backlogs 模块通常能立刻解除无法更新任务的限制。如果你确实在使用 Backlogs 模块可以把父级 Epic 从父项目移动到任务所在的项目或把任务类型 Task 改为其他类型如 User Story。背景原理Backlogs 页面可切换到Task board任务板它展示分配给某个 sprint 的工作包如 Epic、User Story及其关联任务。但 Task board只能显示与父级工作包位于同一项目中的任务。因此为了避免显示不完整的数据任务与其父工作包必须在同一项目、并分配到同一版本。8.2 报错 Parent is invalid because the work package (...) is a backlog task and therefore cannot have a parent outside of the current project 是什么意思该错误出现在Backlogs 模块已激活而你试图把属于项目 A 的工作包设置为属于项目 B 的工作包的子项。在 Backlogs 模块中工作包只能拥有同一版本、同一项目内的子项。这是为了避免 backlog 与 boards 视图展示不同信息而设计的硬性限制。解决办法停用 Backlogs 模块或修改目标工作包的项目必要时连同版本。结语FAQ 背后的设计哲学通读这份 FAQ 会发现许多限制背后都有明确的设计意图父子层级禁止多父保证了进度汇总与甘特图的结构一致性父工作包进度强制按子项加权自动计算update_ancestors_service.rb 中的calculate_work_weighted_average_percent_complete/calculate_simple_average_percent_complete避免了手工维护与数据不一致继承性变更不聚合源于聚合最多一条评论的规则配合set_journal_note的自动备注Updated automatically by...保证审计可追溯全局过滤器只暴露对所有项目生效的自定义字段兼顾性能与信息隔离Backlogs 强制同项目同版本保证任务板与 backlog 视图数据一致。理解这些约束后无论是配置表单、设计状态机还是排查导出延迟、层级进度异常你都能更快定位原因并给出符合 OpenProject 设计预期的解决方案。如需继续深入推荐阅读工作包表格配置、进度跟踪与共享工作包三份配套文档。【免费下载链接】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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门