如何用PlantUML实现直接箭头?

How to realize direct arrows with PlantUML?

我正在尝试使用 PlantUML 创建一个 activity 图,其中确实包含返回到现有节点的箭头。

我要找的是下图中包含两个箭头 "Arrow 1" 和 "Arrow 2" 的图表:

我尝试使用 PlantUML beta syntax for Activity diagrams 创建这个。

我实现了下图:

通过编写以下 PlantUML 代码:

@startuml

start

:new - please check;

while (check sucessful?) is (is an error)
  :to solve;
  :in progress;
  :solved;
endwhile (not an error)

:erledigt;
note left
    reason:
     * done
     * not an error
     * not fixable
end note
stop

@enduml

有人知道如何实现吗?使用 beta 语法或 the older syntax.

获得结果对我来说并不重要

不能有多个流程从一个动作开始,也不能有多个流程进入一个动作

对于UML的观点所以你需要添加:

  1. 操作后的决策节点 "to solve" 让你的两个流程,每个流程都有一个守卫

  2. 操作后的决策节点 "erledigt" 有两个流程,每个流程都有一个守卫

  3. 在操作 "to solve" 之前的合并节点接收来自决策节点 "check successful" 和操作 "erledigt" 的流。

对于 (1) 在 PlantUML

中使用 "if-else" 或 "split"
start

:new - please check;

while (check sucessful?) is (is an error)
  :to solve;
  if (duration) then (long)
    :in progress;
  else (immediat)
  endif
  :solved;
endwhile (not an error)

:erledigt;
note left
    reason:
     * done
     * not an error
     * not fixable
end note
stop

@enduml

对于 (3),您可以使用 "repeat while" 也可以管理 (2),但不确定您是否可以在 PlantUML 中不重复这三个动作(解决 - 进行中 - 解决)或执行它们在另一个 activity 你打电话。在 PlantUML 中,代码是从控制结构中提取的,除了 "goto",它允许不交叉线,但你需要一个 "goto" 交叉线。请注意,执行决策 "check sucessfull" 而不是执行 "to solve"

没有问题