uml - 如何在 PlantUML UML 事件图中引用早期的事件

标签 uml activity-diagram plantuml

我正在尝试使用 PlantUML(新的 beta 语法)制作事件图。
到目前为止,我想出了(简化):

@startuml
start
:A;
if (Q1) then (yes)
  :B;
  
  if (Q2) then (yes)
    :D;
  else (no)
    :E;
  endif
  
else (no)
  :C;
endif
stop
@enduml
plant uml diagram
这意味着,做A,如果第一个问题是,做B,否则做C。
B 问问题 2 后,如果是,请回答 D,如果不是,请回答 E。
当问题 2 的答案是否定的时,我不想指向 E,我想去事件 C,但是我不知道如何引用它。如果我把 :C;那里(而不是:E;它只是被解释为一个新事件(但是它的流程应该从 C 那里继续)。我认为有一种方法可以使用 PlantUML 绘制这样的流程,但我还没有看到它。
引用已定义事件的最佳方式是什么?

最佳答案

我搬到了graphviz正是出于这个原因。 Plantuml 为某些类型的图表提供了一些简单的语法,但对于在多个方向上移动它变得具有挑战性。
我尝试将 Plantuml 用于流程图,但是当我接近状态机时,我转向了 graphviz。因此,针对您的问题的 graphviz 解决方案如下所示。
原图:

digraph drawing1 {
  A -> B [label="yes"]
  A -> C [label="no"]
  B -> D [label="yes"]
  B -> E [label="no"]
}
PlantUML graphviz diagram
没有时让 B 转到 C。
digraph drawing1 {
  A -> B [label="yes"]
  A -> C [label="no"]
  B -> D [label="yes"]
  B -> C [label="no"]
}
PlantUML Graphviz diagram
如果您想让节点 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 Graphviz diagram
我放弃了用 Plantuml 解决与你类似的问题。

在 Windows 中,一旦您安装了 graphviz 并想要生成一个 png 输出,您就可以使用包含有向图代码的文件进入您的目录;让我们调用文件 test.gv .
然后运行以下命令以生成输出 test.png .
dot test.gv -Tpng -o test.png

关于uml - 如何在 PlantUML UML 事件图中引用早期的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250510/

相关文章:

c++ - 在 UML 中,将对象作为参数传递以实例化另一个对象是否构成(本身)对第一个对象的使用?

architecture - 如何在单个页面中制作多个图表

plantuml - PlantUML 中的行距

uml - 如何在PlantUML类图中对齐 block ?

uml - 如何在 Visio 2010 UML 图中调整注释大小

uml - 类型为 `std::unqiue_ptr<T>`的变量成员类图

uml - 类定义中的聚合和组合表示?

uml - 具有多个端点的事件图

python - 如何将事件图转换为petrinet,综合再分析?

uml - 合并事件图中的节点