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

如何正确退出UML状态图中的嵌套状态?,uml,transitions,automata,plantuml,Uml,Transitions,Automata,Plantuml,我是UML新手,我正试图记录我的软件开发过程。我用PlantUML制作了以下图表: 在内部状态中,我想说明,一旦它们各自的发布(即,次要/补丁)完成,下一个最高级别的状态应该返回到 例如,在PatchRelease之后,Patch应该退出到EvalStory。与MinorRelease-->EvalEpic相同。我应该如何展示这个?(提供PlantUML代码的答案是不必要的,但会很好) 例如,补丁发布后,补丁应该退出到EvalStory 这已经发生了,因为这是默认行为 一旦PatchRelea

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

在内部状态中,我想说明,一旦它们各自的发布(即,次要/补丁)完成,下一个最高级别的状态应该返回到

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

例如,补丁发布后,补丁应该退出到EvalStory

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

一旦PatchRelease完成,就没有其他地方可去了,所以补丁完成了它的操作,然后您可以再次查看它,就好像补丁中没有状态一样

如果你想明确,你可以

  • 在EvalStory之后添加一个final state,这样读者就知道你真的想在这里结束,而不是意外遗漏
  • 使用进入/退出状态;不幸的是,PlantUML不支持这些

  • 例如,您可以在此处阅读进入/退出状态

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

    例如,如果您添加代码

    补丁发布-->[*]


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

    实际上Peter的答案更完整。我们在同一时间发布了这篇文章,所以我对这篇文章进行了升级,并向OP推荐了同样的内容。请注意,最终状态是一个实际状态,而不是伪状态。
    [*] --> 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
    
    }
    
    
    
    }