如何正确退出 UML 状态图中的嵌套状态?
How to properly exit nested states in UML state diagrams?
我是 UML 的新手,我正在尝试记录我的软件开发过程。我用 PlantUML 制作了下图:
在内部状态中,我想表明,一旦它们各自的版本(即 minor/patch)完成,应该返回到下一个最高级别的状态。
例如,在PatchRelease
之后,Patch
应该退出到EvalStory
。 MinorRelease --> 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.
里面没有状态
如果要显式,可以
- 在 EvalStory 之后添加一个最终状态,这样 reader 就知道你真的打算到此结束,这不是意外遗漏
- 使用entry/exit个状态;不幸的是 PlantUML 不支持那些
例如,您可以在此处阅读 entry/exit 个州 http://www.uml-diagrams.org/state-machine-diagrams.html#exit-point-pseudostate
在复合状态中的最后一个状态之后添加最终伪状态。
例如如果添加代码
补丁发布 --> [*]
这意味着在 PatchRelease 完成后,整个 Patch 也完成,因此它可以移动到下一个状态(即 EvalStory)
我是 UML 的新手,我正在尝试记录我的软件开发过程。我用 PlantUML 制作了下图:
在内部状态中,我想表明,一旦它们各自的版本(即 minor/patch)完成,应该返回到下一个最高级别的状态。
例如,在PatchRelease
之后,Patch
应该退出到EvalStory
。 MinorRelease --> 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.
里面没有状态如果要显式,可以
- 在 EvalStory 之后添加一个最终状态,这样 reader 就知道你真的打算到此结束,这不是意外遗漏
- 使用entry/exit个状态;不幸的是 PlantUML 不支持那些
例如,您可以在此处阅读 entry/exit 个州 http://www.uml-diagrams.org/state-machine-diagrams.html#exit-point-pseudostate
在复合状态中的最后一个状态之后添加最终伪状态。
例如如果添加代码
补丁发布 --> [*]
这意味着在 PatchRelease 完成后,整个 Patch 也完成,因此它可以移动到下一个状态(即 EvalStory)