我有多个单序列图。 它们中的大多数具有相同的初始化和终止序列。
可以将其从一个文件复制到另一个文件,但如果可以在单个点声明此部分会更好。因此,如果发生变化,则无需更改所有图表。
有办法做到这一点吗?
答案 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