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
相关推荐
rolt5 天前
PlantUML+EA描述《分析模式》第6章存货和会计(5)
架构师·uml·plantuml
rolt9 天前
PlantUML+EA描述《分析模式》第6章存货和会计(6)
架构师·uml·plantuml
lipengxs2 个月前
写 README/技术方案时被 Ai 生成的 PlantUml/Mermaid 折腾烦了,做了个 预览小工具
ai·预览·plantuml·设计图
吴声子夜歌2 个月前
PlantUML——思维导图
思维导图·plantuml
吴声子夜歌2 个月前
PlantUML——实体关系图
plantuml·实体关系图
吴声子夜歌2 个月前
PlantUML——通用命令
plantuml
吴声子夜歌2 个月前
PlantUML——部署图
plantuml·部署图
吴声子夜歌2 个月前
PlantUML——活动图新语法
plantuml·活动图
吴声子夜歌2 个月前
PlantUML——定时图
plantuml·定时图