PlantUML 时间线、甘特图、WBS:项目排期与拆解

puml.online

PlantUML 常被认为只画 UML 标准图,其实它也支持排期视图:时间线、甘特图、WBS、工作分解结构。这三种是项目管理里最常见的「拆任务+看进度」视图。

时间线 (Timeline)

时间线记录「事情发生在哪天」。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@startuml
title 2026 Q4 启动节奏
concise "周一" as M
concise "周三" as W
concise "周五" as F

@0
M is 6月21日
@30
W is 6月30日 [初版方案过审]
@50
F is 7月10日 [评审]
@70
M is 7月20日 [开发启动]
@80
W is 8月1日 [联调]
@100
F is 8月10日 [上线]

@end
@enduml

@<percent> 是时间线上的位置。每个 conic/concise 别名是一个标记。

更精细的甘特:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@startuml
title 一个月开发排期
concise "周一" as Mon
concise "周二" as Tue
concise "周三" as Wed
concise "周四" as Thu
concise "周五" as Fri
concise "周六" as Sat
concise "周日" as Sun

@0
Mon is [<start> 7/1] design
Sat is [7/3] req complete

@5
Wed is [<start> design] api

@10
Fri is [<start> api] integration

@15
Sun is [release]

@20
@enduml

语法格式:[<start> <task>] <next_event>

甘特图 (Gantt)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@startuml
projectscale daily

title Launch timeline
hide resources

[需求评审] lasts 2 days
[设计] lasts 3 days
[开发] lasts 14 days
[测试] lasts 7 days
[联调] lasts 3 days
[上线] lasts 1 day

@enduml

projectscale daily 设置单位为「天」。

任务依赖

1
2
3
4
5
6
7
8
9
10
11
12
@startuml
projectscale daily
title 任务依赖

[设计] as [D] lasts 3 days
[开发] as [C] lasts 5 days
[测试] as [T] lasts 3 days

[Design done] happens at [D]'s end
[Code done] happens at [C]'s end
[Code done] -> [Test start]
@enduml

-> 描述前置依赖。

里程碑

1
2
3
4
5
6
7
8
9
10
11
12
13
@startuml
projectscale monthly
title Release Planning

[Alpha 版本] lasts 14 days
[Beta 版本] lasts 14 days
[正式版本] lasts 14 days

[Alpha 上线] happens 1 days after [Alpha 版本]'s end
[Beta 上线] happens 1 days after [Beta 版本]'s end
[正式上线] happens 1 days after [正式版本]'s end

@enduml

实际日期

1
2
3
4
5
6
7
8
9
10
11
@startuml
projectscale weekly

[项目启动] starts 2026-08-01
[需求阶段] lasts 14 days
[设计阶段] lasts 14 days
[开发冲刺 1] lasts 21 days
[开发冲刺 2] lasts 21 days
[回归测试] lasts 7 days

@enduml

starts <date> 让甘特图对齐实际日历。

资源分配

1
2
3
4
5
6
7
8
9
@startuml
projectscale daily

[UI 设计] as [UI] lasts 5 days
[后端开发] as [BE] lasts 10 days
[前端开发] as [FE] lasts 10 days
[集成] as [INT] lasts 3 days

@enduml

WBS(工作分解结构)

WBS 用树状结构把项目拆解成子任务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@startuml
title 项目 WBS

* 项目启动
** 需求分析
*** 业务需求
*** 技术需求
** 系统设计
*** 概要设计
*** 详细设计
** 开发
*** 后端开发
*** 前端开发
*** 移动端开发
** 测试
*** 单元测试
*** 集成测试
*** 用户验收测试
** 部署
*** 预生产
*** 生产发布
*** 灰度验证
** 项目验收
@enduml

* 是顶级节点,** 一级子节点,*** 二级子节点。

带备注的 WBS

1
2
3
4
5
6
7
8
9
10
11
12
@startuml

* 项目启动 [
阶段一
----
总览与方向
]
** 需求分析
** 系统设计
** 开发

@enduml

[...] 给节点附备注。

带工时的 WBS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@startuml

* [项目] {
-[阶段] {
-[任务]
}
}

* 主项目 { 总预算 80 人天
** 需求 { 8 人天
*** 业务分析
*** 竞品分析
** 设计 { 12 人天
*** 概要
*** 详细
** 开发 { 40 人天
*** 后端
*** 前端
** 测试 { 12 人天
*** 集成
*** UAT
** 部署 { 8 人天
}

@enduml

{...} 在节点内写备注。

实战:Sprint 计划

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@startuml
title Sprint 12 排期(2026 年 8 月 1-14 日)
projectscale daily
hide resources

[需求评审] lasts 2 days
[设计稿] lasts 3 days then [开发]
[后端开发] as [BE] lasts 9 days
[前端开发] as [FE] lasts 9 days
[联调] as [INT] lasts 3 days
[回归测试] as [TEST] lasts 3 days

[开发启动] happens at [BE]'s start
[开发同步] happens at [BE]'s 5 days + [FE]'s 5 days
[集成完成] happens at [INT]'s end
[发布] happens at [TEST]'s end

@enduml

WBS 实战:电商 MVP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@startuml

* [电商 MVP] { 30 人天 }
** [账号] { 4 }
*** 注册登录
*** 个人中心
*** 第三方登录
** [商品] { 8 }
*** 商品列表
*** 搜索过滤
*** 商品详情
*** 分类与筛选
** [购物车] { 4 }
*** 加入购物车
*** 数量修改
*** 删除
** [订单] { 8 }
*** 创建订单
*** 支付集成
*** 订单状态
*** 列表与详情
** [后台] { 6 }
*** 商品管理
*** 订单管理
*** 数据统计

@enduml

时间线、甘特图、WBS 怎么选

视图 适合 关注点
时间线 历史事件、里程碑 「什么时候发生了啥」
甘特图 任务排期、依赖、资源 「接下来什么时候做什么」
WBS 项目结构、范围、估算 「都包含什么」

实际项目里三者都画:

  • 时间线贴上墙或者公司简报
  • 甘特图存工程资源库
  • WBS 写到需求文档

评审 checklist

时间线

  • 比例对吗?日 / 周 / 月?
  • 里程碑说明清楚了?

甘特图

  • 任务粒度合适?不超过 5 天
  • 依赖关系明确?
  • 关键路径标了?

WBS

  • 100% 规则?分解到「可估时」的工作包为止
  • 工时估算合理?
  • 子任务无重叠?

反模式

1. 甘特图颗粒度过细

1
2
3
4
5
6
7
@startuml
projectscale hourly
title 一天任务
[登录功能写 1 小时]
[登录接口 1 小时]
[登录 UI 2 小时]
@enduml

颗粒度过细的甘特图失去意义——开发者更愿意看 jira。

2. 甘特图没标依赖

光有「时长」不知道「谁等谁」,进度会卡死。

1
2
3
@0
[设计] 3 days
[开发] 5 days

不写依赖,全是并行假象。

3. WBS 没工时

只有层级没工时,估算不可参考。

  • 标题: PlantUML 时间线、甘特图、WBS:项目排期与拆解
  • 作者: puml.online
  • 创建于 : 2026-07-29 15:40:00
  • 更新于 : 2026-08-14 21:34:29
  • 链接: https://puml.online/blog/plantuml-timeline-gantt-wbs/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。