2017-08-17 148 views
1

我是UML新手,我试图记录我的软件开发过程。我与PlantUML如下图:如何正确退出UML状态图中的嵌套状态?

enter image description here

内国之内,我想表明,一旦它们各自的版本(即未成年人/补丁)制成,下一个最高级别的状态应该是返回。

例如,在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 

} 



} 

回答

2

例如,PatchRelease后,补丁应该退出来EvalStory

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

一旦PatchRelease已经完成,没有其他地方可去,所以补丁完成其操作,然后你可以看看它再次因为如果没有美国内补丁

如果你想成为明确的,你可以

  1. EvalStory后添加一个最终状态,所以读者都知道,你真的打算就此结束,这是不是一个意外遗漏
  2. 自用进境/退出状态;不幸的是PlantUML不支持这些

你可以在入口/出口国例如读取这里http://www.uml-diagrams.org/state-machine-diagrams.html#exit-point-pseudostate

+1

其实彼得的答案更完整。我们同时发布了,所以我提出了这个建议,并向OP推荐了相同的内容。 – Ister

1

复合状态中的最后状态后,添加最终伪状态。

E.g.如果您添加代码

PatchRelease - > [*]

这将意味着PatchRelease也完成后,整个区块已完成,因此它可以移动到下一个状态(这是EvalStory)

+0

请注意,最终状态是实际状态,而不是伪状态。 –