PlantUML 活动图新测试版语法与短代码引用早期活动?

问题描述

我使用旧的 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

看起来像这样:

Legacy syntax diagram

我现在正在尝试使用新的(测试版)语法 (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

New syntax diagram

是否可以使用新语法实现与我使用旧语法创建的相同的图表?

解决方法

你可以这样做:

@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

生产:

enter image description here

...这和你的第一个图一样非法,因为有两个输入流到 Review request 而我们不是在一个是 decisionInputFlow 和另一个是主要传入边(参见第 15.3.3.6 节 决策节点页面 390 of formal/2017-12-05),必须在 决策节点之前使用合并节点

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...