原文地址: https://blog.csdn.net/dwarcheng/article/details/52449168
活動圖介紹
1. 簡介
活動圖是uml的動態(tài)模型的一種圖形,一般用來描述相關(guān)用例圖。準確的活動圖定義:活動圖描述滿足用例要求所要進行的活動以及活動間的約束關(guān)系,有利于識別并行活動?;顒訄D是一種特殊的狀態(tài)圖,它對于系統(tǒng)的功能建模特別重要,強調(diào)對象間的控制流程。
交互圖強調(diào)的是對象到對象的控制流,而活動圖則強調(diào)的是從活動到活動的控制流
活動圖是一種表述過程基理、業(yè)務(wù)過程以及工作流的技術(shù)。
它可以用來對業(yè)務(wù)過程、工作流建模,也可以對用例實現(xiàn)甚至是程序?qū)崿F(xiàn)來建模
2. 活動圖示例
下圖是個簡單的活動圖例子,里面包括了大部分活動圖的相關(guān)元素,大家應(yīng)該都能看的差不多吧,有不明白的可以繼續(xù)看,下面有針對各個元素有介紹啦,相信大家看完后面的,看這個圖就不會有問題的。
另外,若想學會畫活動圖,必須先看大量的圖,看明白別人的圖,在慢慢畫,慢慢一個圖形就弄明白了。
其實uml包括了各種各樣的圖形,把每種圖形都會畫啦,基本uml也就會啦。

3. 活動圖與流程圖的區(qū)別
活動圖描述系統(tǒng)使用的活動、判定點和分支,看起來和流程圖沒什么兩樣,并且傳統(tǒng)的流程圖所能表示的內(nèi)容,大多數(shù)情況下也可以使用活動圖表示,但是兩者是有區(qū)別的,不能將兩個概念混淆。

活動圖與流程圖的區(qū)別
⑴ 流程圖著重描述處理過程,它的主要控制結(jié)構(gòu)是順序、分支和循環(huán),各個處理過程之間有嚴格的順序和時間關(guān)系
活動圖描述的是對象活動的順序關(guān)系所遵循的規(guī)則,它著重表現(xiàn)的是系統(tǒng)的行為,而非系統(tǒng)的處理過程。
⑵ 活動圖能夠表示并發(fā)活動的情形,而流程圖不能。
⑶ 活動圖是面向?qū)ο蟮?,而流程圖是面向過程的。
4. 活動圖與狀態(tài)圖區(qū)別
活動圖與狀態(tài)圖都是狀態(tài)機的表現(xiàn)形式,但是兩者還是有本質(zhì)區(qū)別:
狀態(tài)圖著重描述從一個狀態(tài)到另一個狀態(tài)的流程,主要有外部事件的參與。

上圖是一個典型的狀態(tài)圖
活動圖著重表現(xiàn)從一個活動到另一個活動的控制流,是內(nèi)部處理驅(qū)動的流程。

5. 活動圖基本元素
-
初始節(jié)點和活動終點:
5.jpg
實心圓表示初始節(jié)點(只有一個),圓圈內(nèi)加一個實心圓來表示活動終點(可有多個)。
活動節(jié)點:
用來表示一個活動

-
轉(zhuǎn)換:
7.jpg
一條帶箭頭的直線來表示。 一旦前一個活動結(jié)束馬上轉(zhuǎn)到下一個活動(無觸發(fā)轉(zhuǎn)換)。
分支與監(jiān)護條件:
分支是用菱形表示的,它有一個進入轉(zhuǎn)換(箭頭從外指向分支符號),一個或多個離開轉(zhuǎn)換(箭頭從分支符號指向外)。而每個離開轉(zhuǎn)換上都會有一個監(jiān)護條件,用來表示滿足什么條件的時候執(zhí)行該轉(zhuǎn)換。

- 分叉與匯合:
分叉用于將動作流分為兩個或者多個并發(fā)運行的分支,而匯合則用于同步這些并發(fā)分支,以達到共同完成一項事務(wù)的目的。
分叉可以用來描述并發(fā)線程,每個分叉可以有一個輸入轉(zhuǎn)換和兩個或多個輸出轉(zhuǎn)換,每個轉(zhuǎn)換都可以是獨立的控制流。
匯合代表兩個或多個并發(fā)控制流同步發(fā)生,當所有的控制流都達到匯合點后,控制才能繼續(xù)往下進行。

每個匯合可以有兩個或多個輸入轉(zhuǎn)換和一個輸出轉(zhuǎn)換。
匯合將兩條路徑連接到一起,合并成一條路徑。匯合指的是兩個或者多個控制路徑在此匯合的情況。匯合是一種便利的表示法,省略它不會丟失信息。匯合和分支常常成對的使用,合并表示從對應(yīng)分支開始的條件行為的結(jié)束。
分叉和匯合都使用加粗的水平線段表示。

6. 抽象的活動圖示例

UML的活動圖中包含的圖形元素有動作狀態(tài)、活動狀態(tài)、動作流、分支與合并、分叉與匯合、泳道和對象流等。
7. 帶泳道的活動圖
泳道表明每個活動是由哪些人或哪些部門負責完成。

每個泳道代表特定含義的狀態(tài)職責的部分。在活動圖中,每個活動只能明確的屬于一個泳道,泳道明確的表示了哪些活動是由哪些對象進行的。
每個泳道都有一個與其他泳道不同的名稱。
每個泳道可能由一個或者多個類實施,類所執(zhí)行的動作或擁有的狀態(tài)按照發(fā)生的事件順序自上而下的排列在泳道內(nèi)。

在活動圖中泳道區(qū)分了負責活動的對象,它明確地表示了哪些活動是由哪些對象進行的。
在包含泳道的活動圖中每個活動只能明確地屬于一個泳道
上圖是一個未采用泳道的活動圖

上圖是采用泳道技術(shù)后的活動圖
從兩幅圖的對比中,我們可以了解泳道技術(shù)是非常重要的,可以更明確表達出活動圖的意圖。
泳道將活動圖中的活動化分為若干組,并把每一組指定給負責這組活動的業(yè)務(wù)組織,即對象。

泳道區(qū)分了負責活動的對象,它明確地表示了哪些活動是由哪些對象進行的。
在包含泳道的活動圖中,每個活動只能明確地屬于一個泳道。
在活動圖中,泳道用垂直實線繪出,垂直線分隔的區(qū)域就是泳道。

在泳道上方可以給出泳道的名字或?qū)ο?對象類)的名字,該對象(對象類)負責泳道內(nèi)的全部活動。
泳道沒有順序,不同泳道中的活動既可以順序進行也可以并發(fā)進行。
動作流和對象流允許穿越分隔線。
8. 帶對象流的活動圖
用活動圖描述某個對象時,可以把涉及到的對象放置在活動圖中,并用一個依賴將其連接到進行創(chuàng)建、修改和撤銷的動作狀態(tài)或者活動狀態(tài)上,對象的這種使用方法就構(gòu)成了對象流。


對象流是動作狀態(tài)或者活動狀態(tài)與對象之間的依賴關(guān)系
對象流表示動作使用對象或者動作對對象的影響。
對象流中對象的特點:
⑴ 一個對象可以由多個動作操縱;
⑵ 一個動作輸出的對象可以作為另一個動作輸入的對象;
對象流中對象的特點:
⑶ 在活動圖中,同一個對象可以多次出現(xiàn),它的每一次出現(xiàn)表明該對象正處于對象生存期的不同時間點。
在活動圖中,對象流用帶有箭頭的虛線表示。
如果箭頭從動作狀態(tài)出發(fā)指向?qū)ο?,則表示動作對對象施加了一定的影響。
施加的影響包括創(chuàng)建、修改和撤銷等。如果箭頭從對象指向動作狀態(tài),則表示該動作使用對象流所指向的對象。
狀態(tài)圖中的對象用矩形表示,矩形內(nèi)是該對象的名稱,名稱下的方括號表明對象此時的狀態(tài)。
還可以在對象名稱的下面加一個分隔欄表示對象的屬性值。
9. 信號發(fā)送和接收
發(fā)送信號與接收信號

10. 引腳
是一個對象節(jié)點,代表活動連接輸入、輸出值的連接點
未找到圖片
用來標明每個活動節(jié)點所需輸入的數(shù)據(jù)或者所產(chǎn)生的數(shù)據(jù)(建模業(yè)務(wù)流時則可表示產(chǎn)生或者消耗的資源)
11. 擴展區(qū)
表示重復或循環(huán)
未找到圖片
12. 輔助活動圖
當活動圖過于復雜時可以用活動的分解來處理
未找到圖片
一個活動可以分為若干個動作或子活動,這些動作和子活動本身又可以組成一個活動圖。
不含內(nèi)嵌活動或動作的活動稱之為簡單活動;
嵌套了若干活動或動作的活動稱之為組合活動,組合活動有自己的名字和相應(yīng)的子活動圖


活動圖繪制要點
⑴ 識別要對工作流描述的類或?qū)ο?。找出負責工作流實現(xiàn)的業(yè)務(wù)對象,這些對象可以是顯示業(yè)務(wù)領(lǐng)域的實體,也可以是一種抽象的概念和事物。找出業(yè)務(wù)對象的目的是為每一個重要的業(yè)務(wù)對象建立泳道。
⑵ 確定工作流的初始狀態(tài)和終止狀態(tài),明確工作流的邊界。
⑶ 對動作狀態(tài)或活動狀態(tài)建模。找出隨時間發(fā)生的動作和活動,將它們表示為動作狀態(tài)或活動狀態(tài)。
⑷ 對動作流建模。對動作流建模時可以首先處理順序動作,接著處理分支與合并等條件行為,然后處理分叉與匯合等并發(fā)行為。
⑸ 對對象流建模。找出與工作流相關(guān)的重要對象,并將其連接到相應(yīng)的動作狀態(tài)和活動狀態(tài)。
⑹ 對建立的模型進行精化和細化。

