OpenProject 工作包分享(Work Package Sharing)完整指南:与项目外用户协作的权限与配置详解

发布时间:2026/9/18 3:00:10
OpenProject 工作包分享(Work Package Sharing)完整指南:与项目外用户协作的权限与配置详解 OpenProject 工作包分享Work Package Sharing完整指南与项目外用户协作的权限与配置详解【免费下载链接】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 官方用户指南系统讲解如何将工作包分享给项目非成员甚至尚未注册的用户从 Share 按钮的入口操作、用户/角色过滤器、权限调整与撤销到Shared with users总览过滤器再到管理员必须完成的工作流配置。读完本文你将掌握 OpenProject 企业版附加功能 work_package_sharing 的完整实战流程并能结合源码理解其权限模型与通知机制。分享工作包能解决什么问题在 OpenProject 中工作包Work Package默认只对项目成员可见。但在实际协作中经常需要把某个具体的工作项展示给项目之外的人例如外部供应商、客户代表或临时协作者。工作包分享Work Package Sharing正是为此设计的企业版附加功能Enterprise add-on其特性标识为work_package_sharing见 WorkPackageStrategy 中的enterprise_feature定义。通过该功能可以把工作包分享给不是项目成员的用户把工作包分享给尚未在你的 OpenProject 实例上注册的用户——对方收到邀请邮件后需先注册账号才能查看该工作包为每个被分享者单独指定编辑Edit、评论Comment或查看View三种角色并随时调整或撤销通过Shared with users过滤器集中查看、管理所有已分享的工作包。需要特别说明的是分享不会把用户自动变成项目成员被分享者只能访问被分享的这个工作包及授予的对应权限而非整个项目。分享前的权限要求要使用分享功能需要满足两个层面的权限缺一不可全局权限你需要在系统中被授予全局角色Create users创建用户。没有该权限时界面上不会出现分享选项此时请联系管理员。全局角色与用户的配置见 系统管理指南用户与权限。项目权限你需要在工作包所在项目内拥有share_work_packages分享工作包权限。从源码看该权限检查位于 WorkPackageStrategy#manageable?通过user.allowed_in_project?(:share_work_packages, entity.project)判定分享契约层 Shares::WorkPackages::BaseExtension 也做了同样的校验。分享一个工作包第一步打开分享对话框进入某个工作包的详情视图detailed view点击工具栏中的Share按钮即可打开分享对话框。对话框打开后会显示一份列表列出该工作包当前已分享给的所有用户/用户组。如果此前从未分享过列表为空。第二步搜索并添加用户或用户组在对话框中可以通过以下方式定位分享对象按用户名、用户组名或邮箱地址搜索从下拉菜单中选择已存在的用户直接输入一个全新的邮箱地址来邀请一个尚未注册的新用户——对方会收到邀请注册并激活账号后才能查看工作包受邀用户的激活链接由 SharingMailer 中的optionally_activated_url生成携带邀请令牌invitation_token。支持同时添加多个用户或用户组无需逐个重复操作。第三步理解默认角色新添加的被分享者默认获得角色Work Package Viewer工作包查看者。如前所述这不等于项目成员身份因此其权限范围通常远小于普通项目成员。被分享者会收到一封邮件通知告知其工作包已被分享。该通知由后台作业 Mails::WorkPackageSharedJob 异步发送对普通用户直接投递邮件对用户组则遍历组内用户逐一发送邮件内容由 SharingMailer#shared_work_package 渲染会依据角色列出允许的操作如view、comment、edit并携带 OpenProject 邮件头项目标识、工作包 ID、类型。第四步调整角色权限分享后随时可以调整某个用户的权限在其用户名旁的下拉菜单中选择新的角色即可。可选的三种角色见 WorkPackageStrategy#available_roles 的源码定义为角色说明内置角色标识源码Edit编辑允许编辑工作包的大部分属性如主题、描述也包含查看与评论能力Role::BUILTIN_WORK_PACKAGE_EDITORComment评论允许在工作包上添加评论也可查看Role::BUILTIN_WORK_PACKAGE_COMMENTERView查看只能查看不能编辑或评论Role::BUILTIN_WORK_PACKAGE_VIEWER默认[!NOTE] 给用户授予Edit角色后你还可以在编辑工作包时将该用户设置为工作包的Assignee负责人或Accountable责任人。第五步确认分享状态分享完成后详情页工具栏的Share按钮上会显示已分享的用户数量方便你随时了解该工作包的分享范围。过滤已分享用户列表当列表中的被分享者较多时可以按**用户类型Type或用户角色Role**进行过滤。按用户类型过滤过滤器选项返回结果Project member项目成员所有属于该项目成员的用户Not project member非项目成员所有不属于该项目成员的用户Project group项目组属于被纳入项目的用户组中的用户Not project group非项目组属于未被纳入项目的用户组中的用户按用户角色过滤过滤器选项返回结果Edit被允许编辑该工作包的所有用户Comment被允许评论该工作包的所有用户View只能查看、不能编辑或评论该工作包的所有用户[!NOTE] 请注意过滤后列出的用户可能还拥有额外的权限。例如选择View过滤条件时某个用户可能因为属于某个权限更高的用户组而实际拥有超出查看范围的角色。这一逻辑在源码 WorkPackageStrategy#share_description 中有完整体现系统会区分项目成员非项目成员通过组继承额外权限仅通过组获得权限等多种情形并给出相应的提示文案如additional privileges via group membership。移除分享权限在分享对话框中点击某个用户右侧的Remove移除按钮即可撤销其对该工作包的访问权限。请务必理解两点Remove 只撤销针对该工作包的分享权限不会删除用户账号用户账户本身保持完好如果某个用户是通过项目成员身份获得访问权的需要到 项目成员管理 中将其从项目中移除才能撤销全部权限如果连账号都要删除则需在系统管理中执行 删除用户或联系管理员。共享工作包总览Shared with users 过滤器全局范围查看要查看实例中所有已分享给他人的工作包请进入全局模块global modules选择Work Packages模块然后在左侧默认工作包过滤器列表中选择Shared with users已与用户分享过滤器。默认视图中会包含Shared with列列出每个工作包被分享给了哪些用户和/或用户组如果被分享者超过两个列表只显示其中两个其余数量以**徽标badge**形式展示点击徽标中的数字可查看完整的分享明细。项目范围内查看如果只想查看某个项目内的所有分享先进入该项目再应用相同的Shared with users过滤器即可。你还可以按需调整该过滤器并将其保存为私人过滤器以便复用。过滤器背后的实现从源码看该过滤器由 Queries::WorkPackages::Filter::SharedWithUserFilter 实现值得注意的实现细节过滤器仅当当前用户拥有view_shared_work_packages查看已分享工作包权限时可用available?底层通过将工作包表与members表按entity_type WorkPackage关联来定位分享记录visible_shared_work_packages支持分享给其中任意一个与分享给所有这些两种匹配语义全局视图与项目视图的区别在于是否把结果限定在view_shared_work_packages权限可见的项目范围内。配置为共享用户配置工作流被授予Edit角色的被分享者可以更新工作包的大部分属性例如Subject主题和Description描述其中也包括状态Status。但是状态的变更受系统**工作流Workflow**约束只有当该角色所对应的状态流转被工作流允许时变更才有效。因此管理员需要为分享角色一次性配置好相应的工作流否则编辑共享工作包时屏幕底部会显示一条提示消息告知管理员工作流尚未配置管理员可以点击消息中的链接进入复制现有工作流的表单为分享相关角色创建合适的状态流转规则这一入口与工作流模型中的 Workflows::StatusTransition 定义一致即每种角色与工作包类型的组合决定可用的状态变更。核心实现原理速览为了让读者对分享功能有更立体的认识这里汇总本文涉及的关键源码位置角色与权限策略app/models/sharing_strategies/work_package_strategy.rb —— 定义三种可用角色Edit/Comment/View、share_work_packages与view_shared_work_packages权限校验以及分享状态描述文案分享契约创建/更新/删除app/contracts/shares/work_packages/ —— 其中 base_extension.rb 统一校验管理权限并将可分配角色限定为WorkPackageRole分享对话框前端组件app/components/shares/ —— 包括share_dialog_component、invite_user_form_component、permission_button_component、manage_shares_component等对应界面上的搜索邀请、角色下拉与移除操作通知邮件app/mailers/sharing_mailer.rb 与 app/workers/mails/work_package_shared_job.rb —— 负责发送分享通知、生成受邀用户激活链接、按角色列出允许的操作Shared with users过滤器app/models/queries/work_packages/filter/shared_with_user_filter.rb默认查询生成app/services/work_packages/default_query_generator_service.rb —— 在全局/项目工作包视图中挂载Shared with users等默认过滤器。总结工作包分享是 OpenProject 将项目内协作扩展到跨项目、跨组织协作的关键能力。核心要点可归纳为四条入口工作包详情视图 → Share 按钮 → 搜索/邀请用户或用户组 → 赋予默认的 Viewer 角色权限分享者需具备全局Create users角色与项目内share_work_packages权限查看总览需view_shared_work_packages权限管理可随时在分享对话框调整角色Edit/Comment/View或移除分享移除只影响该工作包的访问不影响用户账号配置管理员须为 Edit 角色配置工作流共享工作包的状态变更才会被允许。正确配置后外部协作者即可在最小权限原则下参与特定工作包的查看、评论甚至编辑而无需获得整个项目的访问权。【免费下载链接】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),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询