首页 > 解决方案 > 在PlantUML序列图中放置actor的消息文本

问题描述

背景

UML 序列图通常用于创建系统参与者之间发送的消息的表示,从而阐明信息流。通常,消息会显示between给通信参与者,这是一种很好的做法,显然适合处理“消息”。

我的应用程序

现在,我想(错误地)使用序列图,而不是澄清哪些activity是在哪个参与者上执行的,而不是messages在参与者之间发送哪些。因此,我可以例如描述我的系统内的活动分布。我想放置描述on the right演员活动的文字。

我的问题

在活动图中处理“注释”时,PlantUML 提供了将它们自由放置在演员周围(左侧、右侧或中心)的可能性,但我还没有弄清楚这种自由是否也授予消息。

这是一个示例 PlantUML 序列:

@startuml

' two activities executed on actor1

activate "actor1" #Olive
"actor1" -> "actor1": actor1 activity1\nactor1 summary1

' two sub-activities  executed on actor1

activate "actor1" #OliveDrab
"actor1" -> "actor2": actor1 sub-activity1\nactor1 sub-activity2

' then comes a transition from actor1 to actor2
' and two activities executed on actor2

activate "actor2" #Olive
"actor2" -> "actor1": actor2 func activity1\nactor2 func activity2

' two sub-activities executed on actor2

activate "actor2" #OliveDrab
"actor2" -> "actor2": actor2 func sub-activity1

@enduml

这产生了这个结果:

由上面的 PlantUML 脚本创建

目前,该图还有一些其他问题,但这不应该是问题,在这里。我只是希望能够将“消息”(在我的情况下应该被认为是“活动”)放置在创建/启动它们的每个参与者的右侧。

这是我如何想象输出的原理图:

在此处输入图像描述

我可以尝试使用从例如“actor2”到“actor2”的消息,但这总是会创建这些反身箭头,我真的不想在图中看到它们。而且,对于这类图表,我想坚持使用 PlantUML。不知道是否有另一种图表来显示“演员”及其“活动”之间的关系。

这可能吗?

标签: umlgraphvizsequence-diagramplantuml

解决方案


您始终可以使用白色透明颜色隐藏箭头并创建一些“假激活”这有点 hack,但我想这会满足您的要求:

@startuml
A1 -[#ffffff00]> A1: 
activate A1
A1 -[#ffffff00]> A1: first activity of A1
A2 -[#ffffff00]> A2: 
activate A2
A2 -[#ffffff00]> A2: first activity of A2
A1 -[#ffffff00]> A1: 
activate A1 #blue
A1 -[#ffffff00]> A1: 2nd activity of A1
@enduml

在此处输入图像描述


推荐阅读