如何用UML实现直接箭头?

如何用UML实现直接箭头?,uml,plantuml,Uml,Plantuml,我试图用PlantUML创建一个活动图,其中包含返回现有节点的箭头 我要找的是一个图表,其中包括下图中的两个箭头“箭头1”和“箭头2”: 我已经尝试过使用 我得到了下图: 通过编写以下PlantUML代码: @startuml start :new - please check; while (check sucessful?) is (is an error) :to solve; :in progress; :solved; endwhile (not an error

我试图用PlantUML创建一个活动图,其中包含返回现有节点的箭头

我要找的是一个图表,其中包括下图中的两个箭头“箭头1”和“箭头2”:

我已经尝试过使用

我得到了下图:

通过编写以下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语法还是。

一个动作不能有多个流,一个动作也不能有多个流

对于UML观点,您需要添加:

  • 动作“to solve”后的决策节点有两个流,每个流都有一个守卫

  • 动作“erledigt”后的决策节点有两个流,每个流都有一个保护

  • 操作“to solve”之前的合并节点,用于接收来自决策节点“check successful”和操作“erledigt”的流

  • 对于(1),在PlantUML中使用“if-else”或“split”


    对于(3),您可以使用“repeat while”来管理(2),但不确定您是否可以在PlantUML中不复制三个动作(to solve-in progress-solved)或在您调用的其他活动中执行它们。在PlantUML中,代码是从控制结构中提取的,除了“goto”之外,它允许不跨线,但您需要一个“goto”跨线。注意,转到决策“检查成功”而不是操作“解决问题”是没有问题的。

    您不能有多个流从一个操作开始,也不能有多个流到一个操作

    对于UML观点,您需要添加:

  • 动作“to solve”后的决策节点有两个流,每个流都有一个守卫

  • 动作“erledigt”后的决策节点有两个流,每个流都有一个保护

  • 操作“to solve”之前的合并节点,用于接收来自决策节点“check successful”和操作“erledigt”的流

  • 对于(1),在PlantUML中使用“if-else”或“split”


    对于(3),您可以使用“repeat while”来管理(2),但不确定您是否可以在PlantUML中不复制三个动作(to solve-in progress-solved)或在您调用的其他活动中执行它们。在PlantUML中,代码是从控制结构中提取的,除了“goto”之外,它允许不跨线,但您需要一个“goto”跨线。注意,执行“检查成功”的决定,而不是执行“解决问题”的操作,是没有问题的。

    我不知道plantuml,但是在您的附加箭头上应该有防护装置。也许这正是plantuml所期望的?作为旁注:为了语法正确,您的两个“防护装置”必须写在方括号中。@qwerty____so:在最终的图表中应该有防护装置,这是真的。(否则就没有机会知道什么时候该走哪条路)。但是我不认为这是使它在plantUML中工作的缺失部分,因为防护是可选的。我不知道plantUML,但是在你的附加箭头上应该有防护。也许这正是plantuml所期望的?作为旁注:为了语法正确,您的两个“防护装置”必须写在方括号中。@qwerty____so:在最终的图表中应该有防护装置,这是真的。(否则就没有机会知道什么时候该走哪条路)。但我不认为这是plantUML中缺少的部分,因为在plantUML中警卫是可选的。谢谢@bruno,这对我来说很有用:-)这也让我走上了正确的道路,找到了我真正需要的东西。我更擅长将我的案例建模为状态图,而不是活动图。(如果可以的话,我会给你两张赞成票;-)你不可能应该以“for PlantUML”结尾,因为UML可以拥有它。谢谢@bruno,这对我来说很有用:-)这也让我走上了正确的道路,找到了我真正需要的东西。我更擅长将我的案例建模为状态图,而不是活动图。(如果可以的话,我会给你两张赞成票;-)你不可能有,应该以“for PlantUML”结尾,因为UML可以有它。
    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