重复使用序列图部件

时间:2017-04-13 09:45:50

标签: plantuml

我有多个单序列图。 它们中的大多数具有相同的初始化和终止序列。

可以将其从一个文件复制到另一个文件,但如果可以在单个点声明此部分会更好。因此,如果发生变化,则无需更改所有图表。

有办法做到这一点吗?

5 个答案:

答案 0 :(得分:2)

我试着评论JRI的答案,但我没有足够高的声誉。

我发现!include有效,直到您需要多次包含同一个文件。我在plantuml论坛上得到了一个解决方案,我无法记住论坛,但我确实记得解决方案。在第二次和每次额外的时间,您都要包含一个要使用的文件!include_many

答案 1 :(得分:1)

是的,您应该使用引用片段来引用单独的初始化/终止序列:

@startuml
participant Alice
participant Bob
ref over Alice, Bob : initialization
Alice -> Bob : hello
ref over Alice, Bob : termination
@enduml

答案 2 :(得分:1)

如果要显示重复使用部分的详细信息,而不是将它们抽象为参考块,PlantUML允许您使用!include!includeurl指令包含文件。

语法还允许您从导入的文件中导入特定的代码块。有关详细信息,请参阅http://plantuml.com/preprocessing

答案 3 :(得分:0)

@ user349062注释是正确的答案。这不容易找到,并且不在文档中:Reference Guide

在后续页面中使用!include_many代替!include是可行的,这没有什么意义,但是您就可以了。

答案 4 :(得分:0)

包括子部分 您还可以使用!startsub名称和!endsub来指示要使用!includesub从其他文件中包含的文本部分。例如:

file1.puml:

@startuml

A -> A : stuff1
!startsub BASIC
B -> B : stuff2
!endsub
C -> C : stuff3
!startsub BASIC
D -> D : stuff4
!endsub
@enduml

file1.puml将完全按照以下方式呈现:

@startuml

A -> A : stuff1
B -> B : stuff2
C -> C : stuff3
D -> D : stuff4
@enduml

但是,这还允许您拥有另一个file2.puml,如下所示:

file2.puml

@startuml

title this contains only B and D
!includesub file1.puml!BASIC
@enduml

此文件将完全呈现为:

@startuml

title this contains only B and D
B -> B : stuff2
D -> D : stuff4
@enduml

此外,如果文件中的重用部分更有用,则可以使用void函数。 例如:

!function $a()
a -> b
!endfunction

@startuml
$a()
@endUml