问题描述
我使用旧的 PlantUML 活动语法 (https://plantuml.com/activity-diagram-legacy) 创建了一个活动图:
@startuml
(*) --> "Request created" as Request
Request --> "Review request" as Review
if "is Accepted?" then
--> [Yes] "Assign"
if "is Urgent" then
--> [Yes] "In Development`"
--> "Engineer Assigned"
else
--> [No] "Backlog" as Backlog
Backlog --> Review
endif
else
--> [No] "Won’t Do"
endif
@enduml
看起来像这样:
我现在正在尝试使用新的(测试版)语法 (https://plantuml.com/activity-diagram-beta) 重新创建此图表,但无法复制短代码的功能以引用并返回到较早的活动步骤。
@startuml
start
:Request created;
:Review request;
if (is Accepted?) then (Yes)
:Assign;
if (is Urgent) then (Yes)
:In Development;
:Engineer Assigned;
stop
else (No)
:Backlog;
' HERE I WOULD LIKE BACKLOG TO HAVE
' A BACKWARD ARROW POINTING UP TO
' "REVIEW REQUEST"
endif
else (No)
:Won’t Do;
stop
endif
@enduml
是否可以使用新语法实现与我使用旧语法创建的相同的图表?
解决方法
你可以这样做:
@startuml
start
:Request created;
while (Review request?) is (accepted)
:Assign;
if (is Urgent ?) then (Yes)
:In Development;
:Engineer Assigned;
stop
else (No)
:Backlog;
endif
endwhile (not accepted)
:Won't Do;
stop
@enduml
生产:
...这和你的第一个图一样非法,因为有两个输入流到 Review request 而我们不是在一个是 decisionInputFlow 和另一个是主要传入边(参见第 15.3.3.6 节 决策节点页面 390 of formal/2017-12-05),必须在 决策节点之前使用合并节点。