介绍
活动图(英语:activity diagram)是工作流的图形化表示。活动图主要由活动和动作构成,也可以支持分支选择、迭代、并行。在 UML 中,活动图主要用于为计算性和组织性过程(即工作流)建模,相关活动之间的数据流也在其覆盖范围之内。活动图主要是用来说明控制流,不过也可以显示数据在各数据储存之间的流动。
组成元素
- 圆角矩形:表示“动作”
- 菱形:表示“决策”
- 粗实线:表示并行(并发性)活动的开始(分离)和结束(汇合);
- 黑圆:工作流的开始(初始节点);
- 黑圈套住的黑圆:工作流的结束(结束节点)。
PlantUML
我们再画UML的时候可以借助一些工具,比如startUML拖拽的,还有PlantUML可以使用代码生成的。这里介绍我自己比较喜欢的PlantUML工具
网站
PlantUML在线网站
基本语法
使用起来也比较简单。这里介绍一些基本的语法,一般情况下也足够满足我们的日常使用了。一般我们会以 @startuml 开始,以@enduml结束。
标题
表该图的主题,一般放在第一行,使用方式如下:
title your title
起点和结束
一般使用关键字 start 和 stop / end表示图示的开始和结束
连接顺序
活动标签 (activity label) 以冒号开始,以分号结束,文本内容支持creole wiki 语法,活动默认安装它们定义的顺序就行连接。
简单示例
条件语句
可以使用关键字 if,then 和 else 设置分支测试。标注文字则放在括号中。下面以一个简单的周 / 日报提醒服务为例说明
示例
@startuml
title: 周 / 日 报提醒服务
start
if (今天周五?) then (yes)
:汇总周报 \n下周规划;
else (no)
:今天日报总结;
endif
stop
@enduml
循环语句
你可以使用关键字 repeat 和 repeatwhile 进行重复循环
示例
@startuml
title: 部门月度会议
start
repeat
:部门月度会议;
repeat while (月末最后一个周五?)
stop
@enduml
并行处理
可以使用关键字 fork,fork again 和 end fork 表示并行处理
比如每周五,组长一方面需要汇总组员当日的日报,也需要汇总这一周的报告。而组员只需要每日汇总日报即可
@startuml
start
if (周五?) then (yes)
fork
:组长汇总组员日报;
fork again
:组长汇总团队周报;
end fork
else (no)
:组员汇报日报;
endif
@enduml
注释
一般使用note right 或者是note left来添加注释,当注释比较多时,也可以使用 note right/left + end note来标记注释模块
示例
@startuml
title: 周 / 日 报提醒服务
start
if (今天周五?) then (yes)
:汇总周报 \n下周规划;
else (no)
:今天日报总结;
note right: 组员只需要总结日报即可;
endif
stop
@enduml
多行注释示例
@startuml
title: 周 / 日 报提醒服务
start
if (今天周五?) then (yes)
:汇总周报 \n下周规划;
note left
小组负责人职责:
1、需要汇总组内周报内容
2、规划下周内容
end note
else (no)
:今天日报总结;
note right: 组员只需要总结日报即可;
endif
stop
@enduml
泳道
可以使用管道符 | 来定义泳道,也可以改变泳道的颜色。
示例
以一个登录的场景作为示例。用户输入某网站的账密,服务器接受信息之后,会处理数据,并将其传递给公司内部统一的一个账户服务来校验。最后返回结果给业务服务器。如果校验成功,就将登录信息写入cookie,反之就会记下错误日志信息,最后将登录结果返回给用户侧。
@startuml
title: 用户登录
|用户|
start
:页面登录操作;
|#AntiqueWhite|网站服务器|
:接受账密;
:数据处理;
|#E9F7E9|账户中心|
:接受数据;
:校验账密;
:返回校验结果;
|网站服务器|
:接受校验结果信息;
if (校验成功?) then (yes)
:将登录信息写入cookie;
else (no)
:日志记录错误信息;
endif
|用户|
:返回登录结果;
@enduml
参考文档
维基百科
PlantUML
书籍-UML需求分析