如何在 PlantUML UML Activity 图中引用较早的 activity
How to reference earlier activity in PlantUML UML Activity Diagram
我正在尝试使用 PlantUML(新测试版语法)制作 activity 图。
到目前为止我想出了(简化):
@startuml
start
:A;
if (Q1) then (yes)
:B;
if (Q2) then (yes)
:D;
else (no)
:E;
endif
else (no)
:C;
endif
stop
@enduml
意思是做A,第一题是做B,否则做C。
B问完问题2,有就做D,没有就做E。
当问题 2 的答案为否时,我不想指向 E,而是想转到 activity C,但是我不知道如何引用它。如果我把 :C;那里(而不是 :E; 它只是被解释为一个新的 activity (但是它的流程应该从那里的 C 继续)。我假设有一种方法可以用 PlantUML 绘制这样的流程,但我没有看到还没有。
引用已定义的 activity 的最佳方式是什么?
我发现这是有效的...
|Main|
start
:SomeClass constructor called;
:buildTreeListOpts called;
if (hasOptions()) then (yes)
else (no)
:require DataLoader;
:call getData;
|#Cyan|DataLoader|
:getData;
if (hasDataInLocalStorage()) then (yes)
else (no)
|DataLoader|
:XHR fetch options;
:callback;
endif
|Main|
endif
:finalize;
stop
继续练习他们的现场演示,直到找到有用的东西。
http://plantuml.com/
祝你好运。
正是出于这个原因,我搬到了 graphviz。 Plantuml 为某些类型的图表提供了一些简单的语法,但是对于在多个方向上移动它变得具有挑战性。
我尝试将 plantuml 用于流程图,但是当我接近状态机时,我转向了 graphviz。因此,针对您的问题的 graphviz 解决方案如下所示。
原图:
digraph drawing1 {
A -> B [label="yes"]
A -> C [label="no"]
B -> D [label="yes"]
B -> E [label="no"]
}
没有的时候让B转到C
digraph drawing1 {
A -> B [label="yes"]
A -> C [label="no"]
B -> D [label="yes"]
B -> C [label="no"]
}
如果要使节点 B 和 C 彼此对齐,可以使用以下代码更改。
digraph drawing1 {
A -> B [label="yes"]
A -> C [label="no"]
B -> D [label="yes"]
B -> C [label="no"]
{rank=same B C}
}
我放弃了用 plantuml 解决与你类似的问题。
在 Windows 中,一旦您安装了 graphviz 并想要生成 png 输出,您可以转到您的目录,其中包含一个包含您的二合字母代码的文件;让我们调用文件 test.gv
.
然后运行下面的命令生成输出test.png
.
dot test.gv -Tpng -o test.png
1 月份的 PlantUML 论坛上有 a similar question,但基本上解决方案是在这种情况下复制常见的活动。所以在你的情况下它会给出:
@startuml
start
:A;
if (Q1) then (yes)
:B;
if (Q2) then (yes)
:D;
else (no)
:E;
:C;
endif
else (no)
:C;
endif
stop
@enduml
目前似乎只能使用变通方法解决此问题。
我目前的解决方案(使用 plantUML 一周左右)是这样的:
@startuml
start
:A;
if (Q1) then (yes)
:B;
if (Q2) then (yes)
:D;
else (no)
:E;
:call C>
endif
else (no)
:call C>
endif
stop
partition C {
:do 1st C thing;
:do 2nd C thing;
}
@enduml
我正在尝试使用 PlantUML(新测试版语法)制作 activity 图。
到目前为止我想出了(简化):
@startuml
start
:A;
if (Q1) then (yes)
:B;
if (Q2) then (yes)
:D;
else (no)
:E;
endif
else (no)
:C;
endif
stop
@enduml
意思是做A,第一题是做B,否则做C。 B问完问题2,有就做D,没有就做E。
当问题 2 的答案为否时,我不想指向 E,而是想转到 activity C,但是我不知道如何引用它。如果我把 :C;那里(而不是 :E; 它只是被解释为一个新的 activity (但是它的流程应该从那里的 C 继续)。我假设有一种方法可以用 PlantUML 绘制这样的流程,但我没有看到还没有。
引用已定义的 activity 的最佳方式是什么?
我发现这是有效的...
|Main|
start
:SomeClass constructor called;
:buildTreeListOpts called;
if (hasOptions()) then (yes)
else (no)
:require DataLoader;
:call getData;
|#Cyan|DataLoader|
:getData;
if (hasDataInLocalStorage()) then (yes)
else (no)
|DataLoader|
:XHR fetch options;
:callback;
endif
|Main|
endif
:finalize;
stop
继续练习他们的现场演示,直到找到有用的东西。 http://plantuml.com/
祝你好运。
正是出于这个原因,我搬到了 graphviz。 Plantuml 为某些类型的图表提供了一些简单的语法,但是对于在多个方向上移动它变得具有挑战性。
我尝试将 plantuml 用于流程图,但是当我接近状态机时,我转向了 graphviz。因此,针对您的问题的 graphviz 解决方案如下所示。
原图:
digraph drawing1 {
A -> B [label="yes"]
A -> C [label="no"]
B -> D [label="yes"]
B -> E [label="no"]
}
没有的时候让B转到C
digraph drawing1 {
A -> B [label="yes"]
A -> C [label="no"]
B -> D [label="yes"]
B -> C [label="no"]
}
如果要使节点 B 和 C 彼此对齐,可以使用以下代码更改。
digraph drawing1 {
A -> B [label="yes"]
A -> C [label="no"]
B -> D [label="yes"]
B -> C [label="no"]
{rank=same B C}
}
我放弃了用 plantuml 解决与你类似的问题。
在 Windows 中,一旦您安装了 graphviz 并想要生成 png 输出,您可以转到您的目录,其中包含一个包含您的二合字母代码的文件;让我们调用文件 test.gv
.
然后运行下面的命令生成输出test.png
.
dot test.gv -Tpng -o test.png
1 月份的 PlantUML 论坛上有 a similar question,但基本上解决方案是在这种情况下复制常见的活动。所以在你的情况下它会给出:
@startuml
start
:A;
if (Q1) then (yes)
:B;
if (Q2) then (yes)
:D;
else (no)
:E;
:C;
endif
else (no)
:C;
endif
stop
@enduml
目前似乎只能使用变通方法解决此问题。
我目前的解决方案(使用 plantUML 一周左右)是这样的:
@startuml
start
:A;
if (Q1) then (yes)
:B;
if (Q2) then (yes)
:D;
else (no)
:E;
:call C>
endif
else (no)
:call C>
endif
stop
partition C {
:do 1st C thing;
:do 2nd C thing;
}
@enduml