基础部分
角色
用冒号括起来,或使用关键字 actor。
用例
用括号括起来,或使用关键字 usecase。
关系
使用 -->、<--、->、<- 将角色指向用例。
如果要表现包含、扩展关系,需使用虚线,就将减号换成点。
更多含义,请继续阅读本文后面样式一节。
泛化
使用 --|>、<|--、-|>、<|- 实现泛化。
更多含义,请继续阅读本文后面样式一节。
示例
:厨师: actor 中餐厨师 (做菜) usecase 做炒菜 厨师 <|-- 中餐厨师 做菜 <|-- 做炒菜 中餐厨师 --> 做炒菜
效果:
这个图形很奇怪吧,没关系,继续阅读,后面有讲布局的,布局也不复杂,只是改变下符号即可。比如:将“中餐厨师 --> 做炒菜”中的“-”去掉一个,“做炒菜”,就跑到“中餐厨师”右边了。
PlantUML 具有推测能力,所以有时候不一定写全,比如上面的,也可以写作:
厨师 <|-- 中餐厨师 (做菜) <|-- (做炒菜) 中餐厨师 --> 做炒菜
效果是一样的。
进阶部分
别名
可以指定别名,免得后面写一长串,另外还可以有效解决空格问题,比如:
:English Teacher: as et et --> (Teach English)
效果:
备注
note left of、note right of、note top of、note bottom of
加上对象,再加冒号,再加备注内容。
:English Teacher: as et et --> (Teach English) note left of et : 中国教师 note right of (Teach English) : 一节课 45 分钟
效果:
定义备注,前面的备注都是直接写在某个对象上的,但是有时候定义为备注,再去关联它,更方便,因为这可以关联多个对象,定义好后,用 .. 或 == 分别关联对象,注意:哪个在左哪个在右,会影响布局。.. 或 == 的数量,也会影响线的长度。
:English Teacher: as et et --> (教学) et --> (翻译) note "这个备注关联多个对象" as myNote et .. myNote (教学) === myNote myNote == (翻译)
换行
使用 \n。角色、用例、备注都可使用 \n 实现换行。
备注中换行,也可以不用 \n,而是直接换然后以 end note 结束,但此时不要冒号了,以下是 2 种写法:
note right of (Teach English) : 一节课 45 分钟\n每天最多 2 节 note right of (Teach English) 一节课 45 分钟 每天最多 2 节 end note
关系说明(标签)
也是用冒号隔开。
:English Teacher: as et et --> (Teach English) : 远程教学
用例描述
使用 --、..、==、__ 放在用例中,然后用例的 as 后面,加上引号,可以产生横线、双横线等,但是这种情况下只能用 usecase 关键字,不能用括号,且有空格时,不能使用引号。
:English Teacher: as et usecase TeachEnglish as "1 -- 2 .. 3 == 4 __ 5 ==高级效果==" et --> TeachEnglish
用例包
使用 package 把用例框起来,语法:package 包名称 { 各个用例 }。
:English Teacher: as et package 学校 { (教学) (翻译) } package 校外 { (文化交流) } et --> 教学 et --> 翻译
Stereotypes
使用 <<、>>,角色和用例均支持。
:English Teacher: as et <<虚拟机器人>> package 学校 { (教学) (翻译) } et --> 教学 et --> 翻译
样式部分
用例位置
使用 <--、-->、<-、->,实现上、下、左、右效果。
:English Teacher: as et (上) <-- et et --> (下) (左) <- et et -> (右)
当然,还可以使用关键词来表示位置,比如:-top->、-left->……。
左右布局?
如上,当我们试图使用“->”实现 actor 在左,usecase 在右时,当有多个 usecase 时,actor 并没有在中间,看起有点乱,我们此时就需要使用命令改变方向了。
left to right direction
left to right direction :a: --> (b) :a: --> (c)
这样看起就舒服了。
更长的关系线
使用更多的 - 符号。
:English Teacher: as et et --> (教学) et ------> (翻译)
泛化的位置与线条
与用例位置、关系线的用法类似。
不要火柴人
skinparam actorStyle awesome
skinparam actorStyle awesome :English Teacher: as et et --> (Teach English)
改变线条颜色
skinparam actorStyle awesome :English Teacher: as et et --> (教学) #red;line.bold;text:red : 很重要 et --> (翻译) #green;line.dashed et --> (交流) #green;line.dotted
改变元素颜色
skinparam actorStyle awesome :English Teacher: as et #red;line:green;line.dashed;text:blue
以 # 开头。
多个属性之间分号隔开。
颜色直接写(不同的对象,颜色是指背景还是前景,有不同的含义)。
线的颜色要加前缀 line:。
文字的颜色要加前缀 text:。
线的样式,直接写,但是值是 line. 开头。
总结
: 常表示 Label。
# 常表示样式。
横线、下划线、等号、点点表示线条样式和长度。
大于、小于号也影响布局位置。
相关阅读