狀態機視圖通過對一種對象的可能生命歷史進行建模,描述了對象在時間序列上的動態行為。每個對象被認為是通過檢測事件并對之響應來與外界進行通訊的孤立實體。事件表達了對象可以檢測的變動-對象間的調用或顯示信號、某個值的改變或時間的推移。任何影響對象的事物可以被描述成事件。真實世界發生的事情被建模成外部世界至系統的信號。
狀態指就某個特定類而言,對于發生的事件具有相同性質響應的一系列對象值。換言之,同一狀態的所有對象以相同的方式響應某個事件,即對于給定的所有對象在接收到同一事件時執行相同的動作。而不同狀態的對象可能對相同事件具有不同的響應,執行不同的動作。
狀態機包含由事件連接的狀態。每個狀態對對象生命期中的一段時間建模,該時間內對象滿足一定的條件。當事件發生時,它可能導致遷移的激發,使對象改變至新狀態。當遷移激發時,附屬于遷移的動作可 能被執行。狀態機在UML 中顯示為狀態圖。
在狀態機視圖中,狀態用帶圓角的長方形表示,初始狀態用實心填充的圓表示,結束狀態用實心填充的圓外套一個圓圈表示。

圖6 表示過程實例的狀態機視圖。從圖中可以看出,一個工作流定義的過程實例,在運行時可能有五種不同的過程,分別為初始狀態、就緒狀態、運行狀態、掛起狀態與結束狀態。
一個過程實例在初始時,均為初始狀態(initial state)。根據需要,某個過程實例被創建(create),成為就緒狀態(Ready)。隨后,用戶可以根據需要,選擇就緒狀態的過程實例進行啟動(start),被啟動的過程實例的狀態就變為運行狀態(Running)。處于就緒狀態和運行狀態的過程實例都可以通過取消操作(abort)轉變為結束狀態(end state)。處于運行狀態的過程實例,通過掛起操作(hold),可以轉變為暫時停止的掛起狀態(Holded),同時處于掛起狀態的過程實例也可以通過運行操作(run)轉變為運行狀態。掛起狀態與結束狀態的區別在于掛起狀態并不釋放所占用的資源,因而是可以恢復的。最后,一個處于運行狀態的過程實例如果運行完畢,通過完成操作(finish)轉變為結束狀態。
狀態機可以用于描述用戶界面、設備控制和其它交互式子系統。它們還可用于在生命期中經歷了若干特定階段,每個階段擁有特殊的行為的對象。
5.4 創建活動視圖
活動視圖是用于顯示執行某個計算過程中的運算活動的狀態機的一種特殊形式;顒訝顟B代表了運算執行的狀態:流程的步驟或操作的執行;顒訄D描述了順序和并發活動分組;顒右晥D表達為活動圖。
活動圖包含活動狀態;顒訝顟B表現了過程中語句的執行或工作流中活動的運行。與一般等待狀態等待事件不同,活動狀態等待的是運算的結束。當活動結束時,執行處理到圖中的下一個活動。前一個活動結束時,活動圖中的結束遷移被激發;顒訝顟B通常沒有外部事件的遷移,但它們可以由外圍狀態的事件而被取消。
在活動圖中,用左右兩段是圓弧的長方形表示活動,用較粗的橫線表示活動的分發,用帶有箭頭的線表示活動處理的先后順序。
