本文重點介紹 UML 活動圖的概念。UML 活動圖是 UML 用來對系統的動態行為進行建模的另一個常用工具。它描述了活動的順序,並顯示了從一個活動到另一個活動的控制流。UML 活動圖本質上是一個流程圖。

UML 活動圖概述
儘管 UML 活動圖和狀態圖都是狀態機的表示,但兩者之間存在本質區別:
- UML 活動圖關注從一個活動到另一個活動的控制流,這是一個內部處理驅動的流;
- 而狀態圖則關注從一個活動到另一個活動的控制流。描述從一種狀態到另一種狀態的流程,主要涉及外部事件的參與。
UML活動圖和流程圖的區別
- 流程圖側重於處理過程的描述。它的主要控制結構是順序、分支和循環。每個加工過程之間都有嚴格的順序和時間關係。
- UML 活動圖描述了對象活動的順序關係所遵循的規則。它關注系統的行為而不是系統的過程。
- UML 活動圖可以表示並發活動的情況,但流程圖不能。
- UML 活動圖是面向對象的,而流程圖是面向過程的。
實際上,您可以使用基本的活動圖來表示流程圖,類似於等效圖:

UML 活動圖的圖形表示
在 UML 中,UML 活動圖表示為圓角矩形。
活動圖符號總結
符號描述UML符號
Activity—— 用於表示一組動作

行動 - 要執行的任務

控制流 - 顯示執行順序

對象流—— 顯示對像從一個活動(或動作)到另一個活動(或動作)的流。

初始節點—— 描繪一組動作或活動的開始

活動最終節點—— 停止活動(或動作)中的所有控制流和對象流

對象節點 - 表示連接到一組對象流的對象

決策節點—— 代表一個測試條件,以確保控制流或對象流只沿著一條路徑前進

合併節點—— 將使用決策節點創建的不同決策路徑重新組合在一起。

分叉節點—— 將行為拆分為一組並行或併發的活動(或動作)流

加入節點—— 將一組並行或併發的活動(或動作)流重新組合在一起。

泳道和分區—— 一種將同一參與者在活動圖上執行的活動分組或將活動分組在單個線程中的方法

更多活動圖示例
活動圖 – 為文字處理器建模
下面的活動圖示例描述了文字處理通過以下步驟創建文檔的工作流程:
- 打開文字處理包。
- 創建一個文件。
- 將文件保存在其目錄中的唯一名稱下。
- 鍵入文檔。
- 如果需要圖形,請打開圖形包,創建圖形,然後將圖形粘貼到文檔中。
- 如果需要電子表格,請打開電子表格包,創建電子表格,然後將電子表格粘貼到文檔中。
- 保存文件。
- 打印文檔的硬拷貝。
- 退出文字處理包。

活動圖示例 – 流程訂單
給定與處理訂單的工作流相關的問題描述,讓我們使用活動圖對描述進行可視化建模:
流程訂單 – 問題描述
一旦收到訂單,活動就會分成兩組平行的活動。一方填寫並發送訂單,另一方處理賬單。
在填寫訂單方面,交貨方式是有條件地決定的。根據情況執行隔夜交割活動或定期交割活動。
最後,並行活動結合起來關閉訂單。
下面的活動圖示例以圖形形式可視化流程。

活動圖示例——學生註冊
這個 UML 活動圖示例描述了大學中學生註冊的過程,如下所示:
- 申請人想入讀大學。
- 申請人遞交一份填寫好的報名表副本。
- 登記員檢查表格。
- 註冊商確定表格已正確填寫。
- 註冊商通知學生參加大學概況介紹。
- 註冊商幫助學生參加研討會
- 註冊商要求學生支付初始學費。

活動圖——Swinlane
泳道是一種將同一參與者在活動圖或活動圖上執行的活動分組或將活動分組在單個線程中的方法。以下是用於對員工費用提交進行建模的 swinlane 活動圖示例:

Swinlane 和非 Swinlane 活動圖
下面的活動圖示例描述了使用沒有 swinlane 的活動圖會見新客戶的業務流程。

下圖描述了使用帶有 swinlane 的活動圖會見新客戶的業務流程。
