學(xué)習(xí)筆記 全面認(rèn)識UML活動圖
UML活動圖是UML用于對系統(tǒng)的動態(tài)行為建模的另一種常用工具,它描述活動的順序,展現(xiàn)從一個活動到另一個活動的控制流?;顒訄D在本質(zhì)上是一種流程圖。UML活動圖著重表現(xiàn)從一個活動到另一個活動的控制流,是內(nèi)部處理驅(qū)動的流程。
UML活動圖的組成元素ActivityDiagramElement
1、UML活動狀態(tài)圖(Activity)
活動狀態(tài)用于表達(dá)狀態(tài)機(jī)中的非原子的運行,其特點如下:
(1)、活動狀態(tài)可以分解成其他子活動或者動作狀態(tài)。
(2)、活動狀態(tài)的內(nèi)部活動可以用另一個活動圖來表示。
(3)、和動作狀態(tài)不同,活動狀態(tài)可以有入口動作和出口動作,也可以有內(nèi)部轉(zhuǎn)移。
(4)、動作狀態(tài)是活動狀態(tài)的一個特例,如果某個活動狀態(tài)只包括一個動作,那么它就是一個動作狀態(tài)。
UML中活動狀態(tài)和動作狀態(tài)的圖標(biāo)相同,但是活動狀態(tài)可以在圖標(biāo)中給出入口動作和出口動作等信息。
2、動作狀態(tài)(Actions)
UML活動圖的動作狀態(tài)是指原子的,不可中斷的動作,并在此動作完成后通過完成轉(zhuǎn)換轉(zhuǎn)向另一個狀態(tài)。動作狀態(tài)有如下特點:
(1)、動作狀態(tài)是原子的,它是構(gòu)造活動圖的最小單位。
(2)、動作狀態(tài)是不可中斷的。
(3)、動作狀態(tài)是瞬時的行為。
(4)、動作狀態(tài)可以有入轉(zhuǎn)換,入轉(zhuǎn)換既可以是動作流,也可以是對象流。動作狀態(tài)至少有一條出轉(zhuǎn)換,這條轉(zhuǎn)換以內(nèi)部的完成為起點,與外部事件無關(guān)。
(5)、動作狀態(tài)與狀態(tài)圖中的狀態(tài)不同,它不能有入口動作和出口動作,更不能有內(nèi)部轉(zhuǎn)移。
(6)、在一張活動圖中,動作狀態(tài)允許多處出現(xiàn)。
UML中的動作狀態(tài)圖用平滑的圓角矩形表示,如下:
3、動作狀態(tài)約束(ActionConstraints)
UML活動圖中動作狀態(tài)約束:用來約束動作狀態(tài)。如下圖展示了動作狀態(tài)的前置條件和后置條件
4、動作流(ControlFlow)
動作之間的轉(zhuǎn)換稱之為動作流,活動圖的轉(zhuǎn)換用帶箭頭的直線表示,箭頭的方向指向轉(zhuǎn)入的方向。
5、開始節(jié)點(InitialNode)
開始節(jié)點:表示成實心黑色圓點
6、終止節(jié)點(FinalNode)
分為活動終止節(jié)點(activityfinalnodes)和流程終止節(jié)點(flowfinalnodes)。
活動終止節(jié)點表示整個活動的結(jié)束
而流程終止節(jié)點表示是子流程的結(jié)束。
7、對象(Objects)
8、數(shù)據(jù)存儲對象(DataStore)
使用關(guān)鍵字«datastore»
9、對象流(ObjectFlows)
UML活動圖的對象流是動作狀態(tài)或者活動狀態(tài)與對象之間的依賴關(guān)系,表示動作使用對象或動作對對象的影響。用活動圖描述某個對象時,可以把涉及到的對象放置在活動圖中并用一個依賴將其連接到進(jìn)行創(chuàng)建、修改和撤銷的動作狀態(tài)或者活動狀態(tài)上,對象的這種使用方法就構(gòu)成了對象流。
對象流中的對象有以下特點:
(1)、一個對象可以由多個動作操作。
(2)、一個動作輸出的對象可以作為另一個動作輸入的對象。
(3)、在活動圖中,同一個對象可以多次出現(xiàn),它的每一次出現(xiàn)表面該對象正處于對象生存期的不同時間點。
對象流用帶有箭頭的虛線表示。如果箭頭是從動作狀態(tài)出發(fā)指向?qū)ο?,則表示動作對對象施加了一定的影響。施加的影響包括創(chuàng)建、修改和撤銷等。如果箭頭從對象指向動作狀態(tài),則表示該動作使用對象流所指向的對象。
狀態(tài)圖中的對象用矩形表示,矩形內(nèi)是該對象的名稱,名稱下的方括號表明對象此時的狀態(tài)。
10、分支與合并(DecisionandMergeNodes)
分支與合并用菱形表示
11、分叉與匯合(ForkandJoinNodes)
分為水平風(fēng)向和垂直方向。
對象在運行時可能會存在兩個或多個并發(fā)運行的控制流,為了對并發(fā)的控制流建模,UML中引入了分叉與匯合的概念。分叉用于將動作流分為兩個或多個并發(fā)運行的分支,而匯合則用于同步這些并發(fā)分支,以達(dá)到共同完成一項事務(wù)的目的。
12、異常處理(ExceptionHandler)
當(dāng)受保護(hù)的活動發(fā)生異常時,觸發(fā)異常處理節(jié)點。
13、活動中斷區(qū)域(InterruptibleActivityRegion)
活動中斷區(qū)域圍繞一些可被中斷的動作狀態(tài)圖。比如下圖,正常情況下【ProcessOrder】順序流轉(zhuǎn)到【CloseOrder】,訂單處理流程完畢;但在【ProcessOrder】過稱中,會發(fā)送【CancelOrder】請求,這時會流轉(zhuǎn)到【CancelOrder】,從而訂單處理流程結(jié)束
14、泳道(Partition)
泳道將UML活動圖中的活動劃分為若干組,并把每一組指定給負(fù)責(zé)這組活動的業(yè)務(wù)組織,即對象。在活動圖中,泳道區(qū)分了負(fù)責(zé)活動的對象,它明確地表示了哪些活動是由哪些對象進(jìn)行的。在包含泳道的活動圖中,每個活動只能明確地屬于一個泳道。
泳道是用垂直實線繪出,垂直線分隔的區(qū)域就是泳道。在泳道的上方可以給出泳道的名字或?qū)ο蟮拿?,該對象?fù)責(zé)泳道內(nèi)的全部活動。泳道沒有順序,不同泳道中的活動既可以順序進(jìn)行也可以并發(fā)進(jìn)行,動作流和對象流允許穿越分隔線。
【編輯推薦】