PlantUML——组件图

PlantUML组件图

1、组件

  • 组件必须用中括号括起来
  • 还可以使用关键字 component 定义一个组件
  • 并且可以用关键字 as 给组件定义一个别名
js 复制代码
@startuml
[First component]
[Another component] as Comp2
component Comp3
component [Last\ncomponent] as Comp4
@enduml

1.1、命名例外

注意,以 $ 开头的组件名以后不能隐藏或删除,因为 hideremove 命令会将该名称视为 $tag ,而不是组件名。要删除此类组件,必须为其添加别名或标记。

js 复制代码
@startuml
component [$C1]
component [$C2] $C2
component [$C2] as dollarC2
remove $C1
remove $C2
remove dollarC2
@enduml

2、接口

  • 接口可以使用 () 来定义 (因为这个看起来像个圆)
  • 还可以使用关键字 interface 关键字来定义接口
  • 还可以使用关键字 as 定义一个别名
js 复制代码
@startuml
() "First Interface"
() "Another interface" as Interf2
interface Interf3
interface "Last\ninterface" as Interf4
@enduml

3、基础示例

元素之间可以使用虚线 (..)、直线 (--)、箭头 (-->) 进行连接。

js 复制代码
@startuml
DataAccess - [First Component]
[First Component] ..> HTTP : use
@enduml

4、使用注释

  • 可以使用 note left of , note right of , note top of , note bottom of 等关键字定义相对于对象位置的注释。
  • 可以使用关键字 note 单独定义注释,然后使用虚线 (...) 将其连接到其他对象
js 复制代码
@startuml
interface "Data Access" as DA
DA - [First Component]
[First Component] ..> HTTP : use
note left of HTTP : Web Service only
note right of [First Component]
A note can also
be on several lines
end note
@enduml

5、组合组件

可以使用多个关键字将组件和接口组合在一起。

  • package
  • node
  • folder
  • frame
  • cloud
  • database
js 复制代码
@startuml
package "Some Group" {
    HTTP - [First Component]
    [Another Component]
}
node "Other Groups" {
    FTP - [Second Component]
    [First Component] --> FTP
}
cloud {
    [Example 1]
}
database "MySql" {
    folder "This is my folder" {
        [Folder 3]
    }
    frame "Foo" {
        [Frame 4]
    }
}
[Another Component] --> [Example 1]
[Example 1] --> [Folder 3]
[Folder 3] --> [Frame 4]
@enduml

6、改变箭头方向

默认情况下,对象之间用--连接,并且连接是竖直的。不过可以使用一个横线或者点设置水平方向的连

接,就行这样:

js 复制代码
@startuml
[Component] --> Interface1
[Component] -> Interface2
@enduml

也可以使用反向连接:

js 复制代码
@startuml
Interface1 <-- [Component]
Interface2 <- [Component]
@enduml

还可以使用关键字 left, right, up or down 改变箭头方向。

js 复制代码
@startuml
[Component] -left-> left
[Component] -right-> right
[Component] -up-> up
[Component] -down-> down
@enduml

7、使用UML2标记

js 复制代码
@startuml
interface "Data Access" as DA
DA - [First Component]
[First Component] ..> HTTP : use
@enduml

8、使用UML1标记符

命令 skinparam componentStyle uml1 可以切换到 UML1 标记符

js 复制代码
@startuml
skinparam componentStyle uml1
interface "Data Access" as DA
DA - [First Component]
[First Component] ..> HTTP : use
@enduml

9、Use rectangle notation (remove UML notation)

js 复制代码
@startuml
skinparam componentStyle rectangle
interface "Data Access" as DA
DA - [First Component]
[First Component] ..> HTTP : use
@enduml

10、长描述

可以用方括号"[ ]" 在连线上添加描述。

js 复制代码
@startuml
component comp1 [
This component
has a long comment
on several lines
]
@enduml

11、不同的颜色表示

js 复制代码
@startuml
component [Web Server] #Yellow
@enduml

12、在定型组件中使用精灵图

js 复制代码
@startuml
sprite $businessProcess [16x16/16] {
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFF0FFFFF
FFFFFFFFFF00FFFF
FF00000000000FFF
FF000000000000FF
FF00000000000FFF
FFFFFFFFFF00FFFF
FFFFFFFFFF0FFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
}
rectangle " End to End\nbusiness process" <<$businessProcess>> {
rectangle "inner process 1" <<$businessProcess>> as src
rectangle "inner process 2" <<$businessProcess>> as tgt
src -> tgt
}
@enduml

13、显示参数

skinparam 改变字体和颜色。

可以在如下场景中使用:

  • 在图示的定义中,
  • 在引入的文件中,
  • 在命令行或者 ANT 任务提供的配置文件中。

可以为构造类型和接口定义特殊的颜色和字体。

js 复制代码
@startuml
skinparam interface {
backgroundColor RosyBrown
borderColor orange
}
skinparam component {
FontSize 13
BackgroundColor<<Apache>> Pink
BorderColor<<Apache>> #FF6655
FontName Courier
BorderColor black
BackgroundColor gold
ArrowFontName Impact
ArrowColor #FF6655
ArrowFontColor #777777
}
() "Data Access" as DA
Component "Web Server" as WS << Apache >>
DA - [First Component]
[First Component] ..> () HTTP : use
HTTP - WS
@enduml
js 复制代码
@startuml
skinparam component {
backgroundColor<<static_lib>> DarkKhaki
backgroundColor<<shared_lib>> Green
}
skinparam node {
borderColor Green
backgroundColor Yellow
backgroundColor<<shared_node>> Magenta
}
skinparam databaseBackgroundColor Aqua
[AA] <<static_lib>>
[BB] <<shared_lib>>
[CC] <<static_lib>>
node node1
node node2 <<shared node>>
database Production
@enduml

14、特定皮肤参数

14.1、组件样式

  • 默认情况下(或使用 skinparam componentStyle uml2 ),组件有一个图标
js 复制代码
@startuml
skinparam BackgroundColor transparent
skinparam componentStyle uml2
component A {
component "A.1" {
}
component A.44 {
[A4.1]
}
component "A.2"
[A.3]
component A.5 [
A.5]
component A.6 [
]
}
[a]->[b]
@enduml
  • 如果您想取消它,只使用矩形图标,可以使用 skinparam componentStyle rectangle
js 复制代码
@startuml
skinparam BackgroundColor transparent
skinparam componentStyle rectangle
component A {
component "A.1" {
}
component A.44 {
[A4.1]
}
component "A.2"
[A.3]
component A.5 [
A.5]
component A.6 [
]
}
[a]->[b]
@enduml

15、隐藏或删除未链接的组件

默认情况下,所有的组件都显示出来:

js 复制代码
@startuml
component C1
component C2
component C3
C1 -- C2
@enduml
  • hide @unlinked 组件:
js 复制代码
@startuml
component C1
component C2
component C3
C1 -- C2
hide @unlinked
@enduml
  • 或 remove @unlinked 组件:
js 复制代码
@startuml
component C1
component C2
component C3
C1 -- C2
remove @unlinked
@enduml
相关推荐
吴声子夜歌10 小时前
PlantUML——定时图
plantuml·定时图
吴声子夜歌1 天前
PlantUML——状态图
uml·plantuml·状态图
吴声子夜歌1 天前
PlantUML——序列图
uml·plantuml·序列图
吴声子夜歌1 天前
PlantUML——活动图
uml·plantuml·活动图
吴声子夜歌2 天前
PlantUML——类图(二)
uml·plantuml·类图
吴声子夜歌2 天前
PlantUML——对象图
uml·plantuml·对象图
吴声子夜歌3 天前
PlantUML——用例图
uml·plantuml
弈风千秋万古愁2 个月前
plantuml支持的绘图种类
plantuml
弈风千秋万古愁2 个月前
vscode使用markdown+plantuml
vscode·markdown·plantuml