2017-08-17 103 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

請注意,最終狀態是實際狀態,而不是僞狀態。 –