ARTICLE DETAIL

资讯详情

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

OpenProject 资源管理(Resource management)模块实战指南:资源规划器、容量规划与人员分配

OpenProject 资源管理(Resource management)模块实战指南:资源规划器、容量规划与人员分配 OpenProject 资源管理Resource management模块实战指南资源规划器、容量规划与人员分配【免费下载链接】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/openprojectResource management 是 OpenProject 中用于“以人为中心”规划工作的模块它让项目管理者不再只规划做什么还能同时规划由谁做、在什么时间段做。本文将以官方用户指南为主线结合本仓库modules/resource_management模块的源码实现系统讲解资源规划器的创建与维护、四种规划器视图、按用户/按过滤条件分配工作量以及 Staffing人员配置视图的完整工作流帮助你在实际项目中落地团队容量规划。资源管理模块概览Resource management 模块的核心价值在于基于人员的可用性availability、技能skills与容量capacity来规划工作。在每个项目内你可以创建一个或多个资源规划器resource planners用来组织工作包、把工作量分配给用户并通过不同的规划器视图监控团队容量。使用前置条件在开始使用资源管理前需要完成两项准备工作激活模块在Project settings → Modules中勾选启用Resource management模块。模块启用后项目菜单中才会出现 “Resource management” 入口。配置工作排程确保团队成员已经配置了各自的工作排程working schedules否则容量规划无法反映真实可用性。详见Schedule and availability指南。从源码角度看容量计算确实依赖用户的工作排程ResourceAllocation在判断用户是否“超负荷overbooked”时会先通过UserWorkingHours.for_user(principals)取出配置了工作小时数的用户未配置工作排程的用户不会被计入“超负荷”判断——因为其容量是未知的而不是零参见 resource_allocation.rb 中overbooking_checkable_principals的实现注释。进入模块与界面构成选择项目后从项目菜单进入Resource management。模块总览页由两部分组成导航侧栏包含搜索框便于快速定位规划器、Staffing视图入口、所有公开的资源规划器、以及你私有的资源规划器。被收藏favourite的规划器会以星标图标标记。主内容区列出项目中现有的全部资源规划器展示每个规划器的名称、工作包数量、成员数量、开始与结束日期。点击规划器名称即可打开。在规划器所在行的末尾通过More菜单...可以编辑规划器、添加/移除收藏、切换公开/私有、以及删除规划器。资源规划器Resource Planners资源规划器定义了资源在项目内的展示方式。每个规划器可以包含一个或多个规划器视图planner views让你从不同视角分析同一份项目数据。你可以为不同团队、部门、规划周期或业务场景创建多个规划器。创建资源规划器点击 Resource management按钮在表单中填写规划器的基本信息名称Name规划器的显示名称。日期范围Date range规划器覆盖的时间段。默认视图Default view可选类型有四种——Work packages timeline工作包时间轴Users timeline用户时间轴Work packages list工作包列表Users card list用户卡片列表根据所选视图类型下一步还需要填写对应的附加设置。公开Public复选框决定其他项目成员是否可见。收藏Favourite复选框是否加入你的收藏列表。填写完成后点击Next。下一步是配置第一个规划器视图之后随时可以修改。需要指定视图名称Name。视图内容填充方式自动过滤Automatically filtered显示所有符合所选过滤条件的工作包。手动挑选Manually hand-picked允许你逐个添加/移除工作包。如果为两个工作包类视图选择了自动过滤还需进一步定义包含哪些工作包包括状态status以及其他工作包过滤条件工作包属性与自定义字段。最后点击Create新规划器即以其第一个规划器视图打开。从实现层面看规划器的日期范围是可选的但“要么都填、要么都空”ResourcePlanner模型的校验dates_set_together要求开始日期与结束日期必须成对出现且end_date_after_start_date强制结束日期晚于开始日期开始/结束日期与默认视图 ID 以store_attribute的形式存放在选项字段中参见 resource_planner.rb。编辑资源规划器既可以从资源管理总览页、也可以从打开的规划器内部进行编辑点击More菜单...。选择Edit。可更新的内容包括规划器名称、日期范围、默认视图、公开可见性、收藏状态。此外还可以添加规划器视图、重命名规划器视图、编辑规划器视图的过滤条件、删除规划器视图。删除资源规划器点击More菜单...。选择Delete。在确认对话框中确认删除。[!NOTE] 删除资源规划器会同时移除该规划器及其全部规划器视图但不会删除任何工作包、已分配的工作量或项目数据。规划器视图Planner Views每个资源规划器可包含多个规划器视图同一份规划数据以不同方式呈现便于你分别聚焦工作包、用户或人员配置活动。随时可以点击现有视图标签旁的图标来添加新的规划器视图并选择视图类型。时间轴类视图共用同一工具栏提供以下能力点击Today回到当前日期使用左右箭头前后切换时间切换缩放级别Day日、Calendar week日历周、Month月配置当前视图创建新的分配。工作包时间轴Work packages timeline左侧列出规划器内包含的全部工作包每个工作包展示工作包类型、ID、状态、主题subject、已分配小时数allocated hours、完成进度completion progress。通过工作包的More菜单...可执行附加操作包括See allocation查看分配与Edit total work编辑总工作量。时间轴区域则按所选时间刻度展示各工作包的分配条。用户时间轴Users timeline该视图按用户而不是按工作包来归组计划工作量适合快速识别可用容量available capacity超负荷用户overallocated users未配置工作排程的用户。[!TIP] 资源规划器不包含占位用户placeholder users。带警告图标的用户表示没有配置工作排程或已分配量超过其可用容量。时间轴展示每位用户在所选周期内的计划分配。源码中ResourceCellComponent正是通过overbooked与schedule_missing两个布尔标记来渲染超负荷与缺失排程的警告状态并分别给出 “overbooked” 与 “no work schedule” 的提示文案参见 resource_cell_component.rb。工作包列表Work packages list以表格形式展示规划信息适合习惯用表格处理规划数据的场景。除标准工作包信息外还包含规划专用列例如Allocation分配Allocated members已分配成员每行通过More菜单...提供工作包级操作包括See allocation、Edit total work、Add user group添加用户组、Add filter criteria添加过滤条件。使用Configure view图标可自定义显示的列。用户卡片列表Users card list提供项目可用成员的概览每张卡片展示有助于人员配置决策的信息用户姓名部门若已配置状态已配置的工作小时数用户属性如常用语言、关键技能等按视图配置显示当前利用率utilization[!TIP] 利用率条是相对于资源规划器的日期范围计算的即展示用户在该范围内的利用率如果未设置日期范围则不显示利用率。使用Configure view图标可以选择卡片上展示哪些用户属性。该视图非常适合快速定位“具备所需技能且有可用容量”的用户。实现上卡片组件参考了Users::HoverCardComponent支持多值字段展示上限MULTI_VALUE_DISPLAY_LIMIT 3以及工作排程、利用率等字段的渲染参见 card_component.rb。分配工作Allocate work在所有规划器视图中都可以创建分配。根据当前视图可通过以下方式发起点击规划器上方的 Allocate按钮在工作包的More菜单...中选择See allocation点击某张用户卡片直接在时间轴中选择某个工作包。Allocation对话框会列出所选工作包的所有现有分配。点击Allocate resource创建新分配。分配方式有两种按用户User或按过滤条件Filter criteria选择后点击Next。按用户分配Allocate by user将计划小时数分配给某个具体的项目成员需要指定Assignee受托人选择一个项目成员。Work package工作包从工作包发起分配时该字段已预填。Allocation dates分配日期若所选日期超出工作包自身的日期范围OpenProject 会显示警告。Hours小时数输入计划的小时数。填写完成后点击Allocate新分配会立即显示在规划器中已分配小时数与利用率自动更新。[!TIP] 如果被分配的用户已经超负荷会显示一条警告消息。从源码看ResourceAllocation以分钟为单位存储allocated_time内部校验要求为正整数且上限为MAX_ALLOCATED_TIME即 5000 小时防止整型溢出对外输入输出则通过allocated_hours在小时与分钟之间换算参见 resource_allocation.rb 与 allocated_hours 相关方法。此外分配日期若早于工作包开始日或晚于工作包截止日模型会通过schedule_violation计算出:before_start、:after_finish或:before_and_after三种违规类型用于界面上呈现对应警告参见 resource_allocation.rb。按过滤条件分配Allocate by filter criteria按过滤条件分配会创建一个基于用户属性的占位资源请求placeholder resource request而不是把工作指派给具体用户。指定一个或多个用户属性作为过滤条件例如要求具备某种语言、证书或其他用户属性详见 User attributes 指南。填写Resource filter name后点击Allocate。该分配会以未指派的资源请求形式出现在 Staffing 视图中之后可以在那里指派给合适的项目成员。模型层面这类“按过滤条件”的分配通过placeholder_user关联表达filter_based?判断是否存在占位用户needs_principal_assignment?表示“有资源请求但尚未指派具体用户”一旦在 Staffing 视图中指派人员principal被写入而placeholder_user保留原始请求依然可读参见 resource_allocation.rb 的相关注释与实现。Staffing 视图人员配置Staffing视图帮助把开放的资源请求指派给合适的项目成员。适用场景是你已经知道需要什么技能或角色但还没有决定由谁来执行。工作流程是先基于用户属性/过滤条件创建资源请求Staffing 视图再根据成员的可用性、技能或其他用户属性来匹配候选者。视图列出尚未指派给具体用户的开放资源请求展示字段包括资源请求resource request工作包work package请求小时数requested hours日期范围date range通过More菜单...可以assign a user指派用户、edit编辑资源请求、delete删除资源请求。Assign对话框会列出所有匹配所选过滤条件的可用用户并展示其剩余可用容量。选择一个用户后点击Assign完成指派。在数据层Staffing 相关的查询与指派操作由独立的控制器与契约支撑StaffingController负责资源请求列表与指派流程候选用户数量通过PlaceholderUser.candidate_count(project:)统计参见 resource_allocation.rb 中candidate_counts的批量计算实现使 Assign 对话框能够在一次请求中同时加载全部候选者的匹配数量与剩余容量。源码视角模块的领域模型与容量计算为了让读者对该功能有更立体的理解这里补充几个来自modules/resource_management模块的关键实现事实领域模型ResourcePlanner继承自PersistedView其允许的子视图类型被固定为四种——ResourceWorkPackageTimeline、ResourceUserTimeline、ResourceWorkPackageList、ResourceUserCard参见 resource_planner.rb。规划器本身不可嵌套也不直接持有查询查询被挂载到各个子视图上。规划器的总览列表页所显示的“工作包数量”与“成员数量”正是对全部子视图去重统计的结果resource_planner.rb 中的work_package_count与member_count。分配状态机ResourceAllocation定义了requested / allocated / rejected / canceled四种状态枚举并采用acts_as_journalized对分配变更留痕不过当前实现中分配会直接进入allocated状态参见 resource_allocation.rb。容量与超负荷计算ResourceAllocations::Availability服务以用户为单位聚合其全部allocated分配容量是用户级属性跨项目统计结合用户的排程与全局非工作日NonWorkingDay生成可用性日历并返回需要高亮的超负荷区间OverbookedRange参见 availability.rb。配合spec/下的模型与请求测试如 resource_allocation_spec.rb、staffing_spec.rb可以进一步验证容量计算与指派流程的行为。数据库结构模块的迁移文件db/migrate反映了字段演进例如create_resource_allocations、add_users_to_resource_allocations、add_filter_name_to_resource_allocations、add_placeholder_user_to_resource_allocations以及占位用户的回填迁移等可用于理解“按用户分配”与“按过滤条件分配”两条数据链路的落库方式。实践要点小结先激活项目模块并确保成员配置了工作排程容量数据才有意义根据团队与场景创建多个规划器每个规划器内用多个视图切换“看工作包”与“看人”的视角已经确定人选时用按用户分配只确定技能要求时用按过滤条件分配再通过Staffing视图统一指派分配日期超出工作包日期范围、或用户被超量分配时系统都会给出警告建议据此及时调整排期删除规划器只会删除视图与规划器本身不会影响任何工作包、分配或项目数据可以放心重组规划结构。通过本文的指南与源码佐证你现在可以在 OpenProject 中完成从模块启用、规划器搭建、视图配置、工作量分配到人员配置Staffing的完整资源管理闭环。【免费下载链接】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),仅供参考
返回列表