Как реализовать прямые стрелки с PlantUML? - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь создать диаграмму действий с PlantUML, которая содержит стрелки, которые go возвращают к существующим узлам.

Мне нужна диаграмма, которая включает две стрелки «Стрелка 1» и «Стрелка 2» на рисунке ниже: plantuml diagram with the desired arrows

У меня есть попытался создать это, используя бета-синтаксис PlantUML для диаграмм действий .

Я получил следующую диаграмму:

plantuml diagram without the desired arrows

написав следующий код 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

У кого-нибудь есть подсказка, как этого добиться? Для меня не имеет значения, достигнут ли результат с помощью бета-синтаксиса или старого синтаксиса .

1 Ответ

1 голос
/ 10 марта 2020

вы не можете иметь несколько потоков, начинающихся с действия, или несколько потоков, идущих на действие

для точки зрения UML, поэтому вам необходимо добавить:

  1. a узел принятия решения после действия «решить», чтобы иметь два потока, каждый с защитой

  2. узел принятия решения после действия «erledigt», чтобы иметь два потока, каждый с защитой

  3. узел слияния перед действием «решить» для получения потоков от узла решения «проверка успешна» и действия «erledigt».

Для (1) используйте «if-else» или «split» в PlantUML

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

enter image description here

Для (3) может быть, вы можете использовать «повторить время», также управляя (2), но не уверены, что можете в PlantUML, не дублируя три действия (решить - в процессе - решено) или выполнить их в другой деятельности, которую вы вызов. В PlantUML код взят из управляющей структуры, за исключением «goto», что позволяет не пересекать линии, но вам нужно пересечь линии «goto». Заметьте, что нет проблемы при переходе к решению «проверить успешность», а не к действию «решить»

...