如何正确退出 UML 状态图中的嵌套状态?

How to properly exit nested states in UML state diagrams?

我是 UML 的新手,我正在尝试记录我的软件开发过程。我用 PlantUML 制作了下图:

在内部状态中,我想表明,一旦它们各自的版本(即 minor/patch)完成,应该返回到下一个最高级别的状态。

例如,在PatchRelease之后,Patch应该退出到EvalStoryMinorRelease --> EvalEpic 同上。我应该如何展示这个? (提供 PlantUML 代码的答案不是必需的,但会很好)

[*] --> Major
state Major {
[*] --> CreateEpic
note right : An 'Epic' describes the set of desired\nfeatures the end-user would like to see
CreateEpic --> EvalEpic
EvalEpic --> Minor : unfulfilled
EvalEpic --> MajorRelease : fulfilled
MajorRelease --> [*]

state Minor {
[*] --> CreateStory
CreateStory --> EvalStory
EvalStory --> Patch : unfulfilled
EvalStory --> MinorRelease : fulfilled
MinorRelease --> DeployLive

state Patch {
[*] --> Testing
Testing --> DeployTest
DeployTest --> EvalTest
EvalTest --> Testing : bugs found
EvalTest --> PatchRelease: no bugs found

state Testing {
[*] --> WriteTests
WriteTests --> RunTests

RunTests --> WriteCode: test(s) failed
RunTests  -left-> WriteTests: tests passed
WriteCode --> RunTests
}
Patch --> EvalStory

}
Minor --> EvalEpic

}



}

For example, after PatchRelease, Patch should exit to EvalStory

这已经发生了,因为这是默认行为。

一旦PatchRelease完成,就没有别的地方可以去了,所以Patch完成它的操作,然后你可以再看看它就好像 Patch.

里面没有状态

如果要显式,可以

  1. 在 EvalStory 之后添加一个最终状态,这样 reader 就知道你真的打算到此结束,这不是意外遗漏
  2. 使用entry/exit个状态;不幸的是 PlantUML 不支持那些

例如,您可以在此处阅读 entry/exit 个州 http://www.uml-diagrams.org/state-machine-diagrams.html#exit-point-pseudostate

在复合状态中的最后一个状态之后添加最终伪状态。

例如如果添加代码

补丁发布 --> [*]

这意味着在 PatchRelease 完成后,整个 Patch 也完成,因此它可以移动到下一个状态(即 EvalStory)