这次学习下PlantUML的部署图语法。
1 声明元素
1.1 要点
UML中的基本元素这里都可以使用。
1.2 实践
@startuml actor actor agent agent artifact artifact boundary bounday card card cloud cloud component component control control database database entity entity file file folder folder frame frame interface interface node node package package queue queue stack stack rectangle rectangle storage storage usecase usecase @enduml |
1.3 总结
忘记其中一些基本元素了,又度娘了一把。。。
元素 | 描述 | 备注 | |
---|---|---|---|
物件(Artifact) | 物件是软件开发过程中的产物,包括过程模型(比如用例图、设计图等等)、源代码、可执行程序、设计文档、测试报告、需求原型、用户手册等等。物件表示如下,带有关键字«artifact»和文档图标 | ||
边界类(boundary) | 边界类位于系统与外界的交界处,窗体、报表、以及表示通讯协议的类、直接与外部设备交互的类、直接与外部系统交互的类等都是边界类。 | 通过用例图可以确定需要的边界类,每个Actor/Use Case对至少要一个边界类,但并非每个Actor/Use Case对要唯一的边界类。 | |
控制类(control) | 控制类用于描述一个用例所具有的事件流控制行为,控制一个用例中的事件顺序。 | 控制类是控制其他类工作的类。每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用。其他类并不向控制类发送很多消息,而是由控制类发出很多消息。 | |
实体类(entity) | 实体类是用于对必须存储的信息和相关行为建模的类。实体对象(实体类的实例)用于保存和更新一些现象的有关信息,例如:事件、人员或者一些现实生活中的对象。 |
2 为元素添加描述
2.1 要点
- 使用
[]
为元素添加描述。 - 可以使用
creole
语法添加富文本。
2.2 实践
@startuml folder folder [ This is an <b>folder ---- You can use separator ==== of different kind .... and style ] node node [ This is a <b>node ---- You can use separator ==== of different kind .... and style ] database database [ This is a <b>database ---- You can use separator ==== of different kind .... and style ] usecase usecase [ This is a <b>usecase ---- You can use separator ==== of different kind .... and style ] @enduml |
2.3 总结
注意分隔符要 重复四次
。
3 链接
3.1 要点
元素之间的连线与交互图类似。例如 <node1> -- <node2>
可以以实线链接 node1
和 node2
, 而 ..
可以画实线。
3.2 实践
- 基本用法
@startuml node node1 as A node node2 as B node node3 as C node node4 as D node node5 as E A -- B A .. C A ~~ D A == E @enduml |
- 不同类型的链接
@startuml artifact artifact1 as A artifact artifact2 as B artifact artifact3 as C artifact artifact4 as D artifact artifact5 as E artifact artifact6 as F artifact artifact7 as G artifact artifact8 as H artifact artifact9 as I artifact artifact10 as J A --> B A --* C A --o D A --+ E A --# F A -->> G A --0 H A --^ I A --(0 J @enduml |
3.3 总结
连线语法与交互图类似。另外在声明元素的时候也可以定义别名: <element> <element name> as <alias>
, 例如 node node 1 as A
.
另外,使用org source block的时候,我在文档起始处定义了 #+PROPERTY: header-args :output-dir <dir>
忘记 ,,
执行了,导致图片出不来。
刚开始以为语法错了呢,原来不是,浪费了好多时间。
4 包 - 元素的嵌套
4.1 要点
元素是可以嵌套的,嵌套的元素放在 {}
中。
4.2 实践
@startuml artifact Foo1 { folder Foo2 } artifact Foo3 { artifact Foo4 } artifact Foo5 { database Foo6 } @enduml |
@startuml node Foo1 { cloud Foo2 } cloud Foo3 { frame Foo4 } database Foo5 { storage Foo6 } storage Foo7 { storage Foo8 } @enduml |
4.3 总结
有时候会在节点里嵌套组件吧。所以元素应该是可以嵌套的。这应该是UML的基本用法。
5 样式 - 圆角矩形
@startuml skinparam rectangle { roundCorner<<Concept>> 25 } rectangle "Concept Model" <<Concept>>{ rectangle "Exampl 1" <<Concept>> rectangle "Another rectangle" } @enduml |