OpenProject 甘特图入门:从启用时间线视图到创建与编辑项目计划

发布时间:2026/9/14 8:30:56
OpenProject 甘特图入门:从启用时间线视图到创建与编辑项目计划 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本文以 OpenProject 官方入门文档docs/getting-started/gantt-chart-introduction/README.md为骨架,系统讲解甘特图(Gantt charts)模块的核心概念、启用条件,以及在甘特图中直接创建与编辑项目计划的完整操作流程。读完本文,你不仅能按步骤完成项目计划的搭建,还能从 路由定义 与 默认查询生成服务 等源码,理解甘特图视图背后的查询参数结构与项目级/全局级两条访问链路。什么是甘特图在 OpenProject 中,甘特图是一个模块(Module),它以特定的方式展示工作包(work packages):任务在垂直方向上逐行列出,水平轴表示时间,每条任务条形的长度对应该任务的持续时间。与静态图表不同,OpenProject 的动态甘特图直接反映项目的实时状态:项目中的**阶段(Phases)、任务(Tasks)和里程碑(Milestones)都会显示在时间线上,元素之间的依赖关系(relationships)**也以连线呈现;阶段与任务各自带有开始日期和结束日期,因此你可以随时掌握当前进度状态;里程碑(Milestone)则只以一个固定时间点的形式出现,没有持续区间。对项目经理而言,甘特图的核心价值在于:可以制定并管理项目计划、与团队共享计划信息、安排任务排期、直观看到完成项目所需的各个步骤,并在项目发生延期时第一时间获得信息、及时采取行动。源码视角:甘特图模块如何注册与路由从源码结构看,甘特图是 OpenProject 的一个内置引擎插件,注册于 Engine,插件标识为openproject-gantt,并以bundled: true形式随产品一起分发;菜单文案 “Gantt charts” 定义于 模块语言包(键project_module_gantt)。路由文件揭示了甘特图的两条访问链路,这与文档中“项目内甘特图 / 跨项目甘特图”的说法一一对应:# 项目级甘特图:scope projects/:project_id 下挂载 resources :gantt,仅暴露 index scope projects/:project_id, as: project do resources :gantt, controller: gantt/gantt, only: [:index] do collection do get menu gantt/menus#show # 甘特图菜单(位于 state 路由之前) get /export_dialog work_packages#export_dialog get details/:work_package_id(/:tab) gantt/gantt#split_view, ... get /create_new gantt/gantt#split_create, ... end end end # 全局(跨项目)甘特图:顶层 resources :gantt,同样是 index 入口 resources :gantt, controller: gantt/gantt, only: [:index] do ... end几个值得注意的实现细节:menu路由必须声明在“状态路由”之前,否则菜单会被误解析为另一种查询状态(源码注释明确提示了这一点);details/:work_package_id(/:tab)与create_new两条集合路由分别对应后文的**分屏查看(split view)和分屏新建(split create)**功能,work_package_id受语义标识符约束(WorkPackage::SemanticIdentifier::ID_ROUTE_CONSTRAINT),即支持用#123这类人类可读 ID 访问。启用甘特图视图要在 OpenProject 中打开甘特图视图,前提是在项目设置中启用甘特图(Gantt charts)与工作包(work packages)两个模块,参考 项目设置模块文档。这两个模块通常默认处于启用状态,因此大多数情况下无需额外配置。启用后,在项目菜单中导航到Gantt charts(甘特图)模块:打开甘特图后,时间线视图会列出所有工作包类型——阶段与里程碑、任务或缺陷等,并显示不同工作包之间的依赖关系,以及主题、开始日期、结束日期等附加信息。如果需要跨项目查看甘特图,可以通过 全局模块 菜单选择全局甘特图视图。与项目级视图相比,全局视图会额外展示每个工作包所属的项目信息——这一点在源码中得到印证:默认查询生成服务 为两种视图定义了不同的默认列,全局视图的列集合比项目视图多出一列project:PROJECT_DEFAULT_COLUMNS %w[id type subject status startDate dueDate duration].freeze GLOBAL_DEFAULT_COLUMNS %w[id project type subject status startDate dueDate duration].freeze源码视角:首次进入时的“默认查询”重定向GanttController#index 在首次访问时并不会凭空构造一个空白视图,而是执行一次默认查询重定向:def redirect_to_default_query? return false if params[:query_props].present? || params[:query_id].present? query_props ::Gantt::DefaultQueryGeneratorService.new(with_project: project).call path project.present? ? project_gantt_index_path(project, query_props) : gantt_index_path(query_props) redirect_to(path) true end也就是说,当 URL 中没有query_props或query_id参数时,控制器会调用 DefaultQueryGeneratorService 生成一个query_props查询参数并重定向回去——你看到的“默认甘特图”实际上是一条预置查询。该服务提供了两个预置查询(QUERY_OPTIONS [:all_open, :milestones]):预置查询过滤条件语义all_open(默认)status未关闭({nstatus,oo,v[]})展示所有未关闭的工作包milestonestype属于项目中启用的里程碑类型 ID仅展示里程碑,若项目内无里程碑类型则返回nil、不生成菜单项此外,该服务还内置了甘特图视图的默认展示参数,可直接从源码读出其含义:DEFAULT_PARAMS { tll: {left:startDate,right:dueDate,farRight:subject}, # 时间轴列:左/右边界取开始、结束日期,最右侧列显示主题 tzl: auto, # 时间轴缩放 tv: true, # 时间线视图开关 hi: true, # 层级展示开关 t: start_date:asc # 按开始日期升序排序 }.to_json.freeze其中t对应查询的排序字段,c对应上文的默认列集合,f对应过滤条件。菜单层面的默认查询项由 Gantt::Menu 的default_queries方法生成,并通过query_path方法将其拼接到项目级或全局级的甘特图 URL 上。创建项目计划创建项目计划的入口仍然是Gantt charts模块(详细进阶用法参考 甘特图用户指南)。按文档给出的操作路径:在表格中直接新建工作包:点击表格底部的create new work package链接,即可在甘特图表格内直接创建新的工作包,而无需离开当前视图;就地修改类型与属性:工作包类型(如阶段、任务、里程碑)以及其他属性都可以在表格视图中直接变更;在时间线上放置元素:在你想映射的工作包所在行对应位置点击,即可在项目计划中添加一个时间线元素(任务条);拖拽调整:通过**拖放(drag and drop)**改变元素的持续时间,或将元素在计划中移动。源码视角:“表格 时间线 分屏”的渲染结构甘特图页面并不是纯静态渲染,其 index 视图 将主体内容委托给一个 Angular 组件:% content_for :content_body do % % angular_component_tag opce-work-packages-view % % end % % content_for :content_body_right do % % render(split_view_instance) if render_work_package_split_view? % % render(split_create_instance) if render_work_package_split_create? % % end %其中:opce-work-packages-view组件同时承载表格区(可点击创建、就地编辑属性)与时间线区(拖拽调整日期/时长),这正是文档中“在表格中点击 create new work package 链接”“点击对应行添加元素”的交互载体;content_body_right中的split_view/split_create对应前文路由中的split_view与split_create动作,用于在工作包详情或新建表单分屏于甘特图右侧展示;GanttController 对这两个动作均支持 Turbo Frame 请求,即分屏面板可以局部刷新而不重载整个甘特图。另外,index动作还支持除 HTML 外的多种输出格式(源码):supported_list_formats走export_list导出,atom格式走atom_list生成订阅源——视图头部也因此注册了甘特图查询与变更明细(journals)两个 Atom 订阅链接。编辑项目计划文档给出的编辑路径同样是“所见即所得”:修改工作包属性:直接点击甘特图表格中的单元格,即可更改工作包属性,例如状态(Status)、优先级(Priority)、负责人(Assignee);修改时间与时长:直接点击甘特图时间线区域,通过拖放更改工作包的开始/结束日期或持续时长;变更自动留痕:所有变更都会被记录到工作包的 Activity(活动日志) 中,团队成员可以追溯每次调整。这种“表格改属性、时间线改排期”的双通道编辑方式,与工作包详情页编辑是等价的——它们写入的是同一组工作包字段,因此甘特图视图始终与其他视图(表格、日历等)保持数据一致,延期风险也就实时可见。小结与延伸概念:甘特图是 OpenProject 的模块,垂直列出任务、水平表示时间,条形长度即持续时长;阶段/任务有起止日期,里程碑仅占固定时间点,依赖关系以连线展示。启用:确保项目设置中启用了Gantt charts与work packages两个模块(通常默认开启);跨项目视角走全局模块菜单,且其默认列比项目视图多一列project。创建与编辑:在表格底部链接直接新建工作包、就地改类型与属性;在时间线上点击放置元素、拖拽调整日期与时长;所有变更同步进入工作包 Activity 日志。源码依据:视图主体由opce-work-packages-view组件渲染,首次访问经DefaultQueryGeneratorService生成的query_props重定向到默认查询(all_open/milestones),并支持分屏查看/新建、列表导出与 Atom 订阅。若需进一步掌握甘特图的进阶能力(依赖类型、层级、打印导出等),可继续阅读 甘特图用户指南。模块行为的具体验证可参考仓库中的 路由测试、控制器测试 以及 时间线特性测试(涵盖日期、层级、标签与导航四类场景)。【免费下载链接】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个关键决策

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

获取专属建站方案

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

立即免费咨询