時序圖(Sequence Diagram)是 UML 中最常見的交互圖,通過描述對象間發(fā)送消息的時間順序顯示多個對象之間的動態(tài)協(xié)作狀態(tài)价脾。
數(shù)序圖的元素稍多于用例圖拂到,有角色(Actors)帅刊、對象(Object)走芋、生命線(Lifetime)、消息(Message)叉寂、激活(Focus of Control)
Actor(角色)& Object(對象)
時序圖的第一步是列出交互中出現(xiàn)的所有角色和對象萍启。
角色:通常指“人”,也可以是組織屏鳍、機器勘纯、系統(tǒng)等等“抽象的人”,和用例圖一樣钓瞭,用小人圖表示
對象:就是與上述“人”對應(yīng)的“物”了屡律,包括所有產(chǎn)品、服務(wù)降淮、設(shè)備等等抽象的物體
時序圖的交互,通常由最左側(cè)的 Actor 發(fā)出搏讶;在我們的銀行 APP 案例中佳鳖,Actor 是客戶;我們就按出場順序媒惕,把這些“人”和“物”從左至右列出來:
Lifeline(生命線)
時序圖的第二步非常機械:給每個角色和對象加上一條生命線系吩。所謂的生命線就是從角色(或?qū)ο螅┮鱿蛳卵由斓奶摼€,表示時序圖存在的時間軸妒蔚。
Message(消息)
有了角色和生命線穿挨,時序圖的基本框架就搭建起來了。我們就可以讓客戶向 APP 發(fā)出第一個消息了——登陸:
消息自然是有來有往的肴盏,發(fā)送出去的消息叫 Request(請求)科盛,反饋的消息成為 Response(響應(yīng))
請求用實心箭頭示意,并在箭頭上方加注說明
響應(yīng)用虛線箭頭表示菜皂,也會加上簡單的返回內(nèi)容
我們登陸的操作贞绵,如上圖所示就是這么幾小步:
客戶輸入用戶名、密碼后點擊登陸
APP 將用戶名恍飘、密碼送往 Auth 服務(wù)驗證
Auth 服務(wù)通過驗證后返回 JWT
APP 向客戶顯示登陸成功
Combined Fragment(組合片段)
但是榨崩,登陸也可能失斍吹妗!也就是說在時序圖上還要添加登陸失敗時的消息反饋母蛛。這時候就得用到組合片段了翩剪;組合片段用來解決交互執(zhí)行中的條件反饋。組合片段長得比較復(fù)雜彩郊,如下圖所示:
組合片段有十幾種前弯,最常用的就是 Alt 片段——抉擇片段,通俗來說就是 if-else 的條件判斷組合焦辅。如上圖所示:
左上角黃色區(qū)域會標明片段的類型
片段中用虛線區(qū)分不同的條件子域
再在子域左上角——綠色陰影區(qū)——注釋條件判斷
最后在各自的條件子域上返回特定響應(yīng)
Focus of Control(控制焦點)
控制焦點又稱激活博杖,是覆蓋在生命線上一段細長的矩形,表示在這個時間段內(nèi)筷登,對象或角色正處于活動狀態(tài)剃根;這有點類似于 java 語言里的大括號{}——作用域。畫激活相對來說比較機械前方,我一般都留到最后加上狈醉。
由上圖可知,APP 的活動態(tài)要長于 Auth 服務(wù)惠险;如果再加上 Bank 服務(wù)相關(guān)的時序活動苗傅,大家能更直觀地感受到服務(wù)運行時長對比。這有什么用呢班巩?先賣個關(guān)子渣慕,我會在之后的文章里給出解答。