理清楚狀態機,也將理清楚產品的業務邏輯
產品的業務功能設計基本上都離不開業務狀態的流轉。隨著業務的推進,一個業務對象會從一個狀態轉變到另一個狀態,這種狀態的流轉就是狀態機(State Machine)。本篇我們來講講如何進行狀態機設計,相信看完后,你將梳理清楚了業務的狀態及其流轉條件。
在產品設計中,很多業務對象會有多個狀態,通過狀態機可以很好地梳理單個業務對象業務狀態如何流轉。同時,對于多個關聯的業務對象,也可以實用狀態機和流程圖結合的方式,梳理業務環節上的多個業務對象的狀態流轉以及他們之間如何相互影響。
01 前言
產品的業務功能設計基本上都離不開業務狀態的流轉,比如訂單狀態會有:待付款、待發貨(已付款)、已發貨、已完成、已評價、已取消等等狀態。隨著業務的推進,一個業務對象會從一個狀態轉變到另一個狀態,這種狀態的流轉就是狀態機(State Machine)。狀態機在業務流轉的產品設計中非常重要,如果梳理清楚了業務的狀態及其流轉條件,那么整個產品的業務邏輯就會非常清晰。本篇我們來講講如何進行狀態機設計。
02 什么是狀態機
我們先來看下面的訂單狀態機圖,然后再來講狀態機的具體定義。
從上面的圖我們可以看到這是訂單的業務狀態流轉圖。
這里有一個起始狀態,就是待付款,這是在用戶下單后形成的。然后有三個結束狀態,已取消、已完成和已評價。
為什么已完成也是結束狀態,是因為用戶評價不是必要的環節。
這里我們就得到了狀態機的第一個關鍵要素:狀態機由若干個不重疊的狀態組成,狀態機中至少有一個起始狀態和一個結束狀態。
然后我們也會看到,狀態和狀態之間是通過一條單向的線條連接的,這里引出了狀態機的一個特征:狀態機是有個有向圖。最后,線條上注明了一個動作,這是促發狀態改變的動作,也就是狀態的改變是由外部的動作促發的。
結合上面的例子,我們就得到了狀態機的定義:狀態機是一個有向圖形,由一組狀態和一組相應的動作組成。狀態機通過響應一系列動作而運行。
03 如何在產品設計中使用狀態機
了解到狀態機的定義,我們來看看如何在產品設計中使用它。這里分下面幾個步驟:
- 列舉某個業務對象的狀態,這里需要使用 MECE 原則,即窮盡而不重復,將業務對象的所有狀態都列舉出來。比如上面的訂單狀態圖,其實我們就遺漏了已退款、部分退款這兩個狀態。
- 梳理哪些狀態是起始狀態,哪些狀態是結束狀態,以確定業務的開始和結束。
- 確定狀態直接的流轉次序,并且列出促使狀態流轉的動作,也就是具體的業務行為。
- 確定每個具體業務行為需要提交的數據和產生的數據,即業務行為的輸入輸出。
實際簡化出來就是“定狀態、理流程、明數據”三個要點。我們再舉一個我們產品開發的任務管理的例子。對于產品開發任某個需求點,通常會經過需求評審到上線的過程。我們按照上面的步驟進行一下狀態機的分析:
- 狀態列舉:整個過程有待評審、被駁回、待開發、開發中、待測試、待驗收、已上線7個狀態。
- 待評審屬于起始狀態,被駁回、已上線屬于結束狀態。
- 狀態的流轉圖如下:
每個業務行為的輸入輸出如下表所示。
04 狀態機與流程圖的區別
我們看上面的產品開發的任務管理狀態機圖其實并不是特別合理,我們可以看到不同的狀態的流轉其實的業務動作是一樣的,比如評審不通過和通過實際上的行為應該是評審。
之所以會出現這個情況,是因為實際上這里揉和了多個業務對象:需求、開發任務、測試任務等等。
這種需要描述多個對象的狀態機的情況,那么應該結合流程圖來做,如下圖所示。
這種方式可以將業務對象的狀態變化和業務流程串聯起來,會更好地知道哪些狀態受關聯的業務環節影響,比如需求的開發中狀態就依賴開發任務的確認開始動作。
可以看到,狀態機和流程圖某些方面是類似的,都是用來描述業務流轉,但是二者也存在明顯的不同,狀態機更關注的業務環節中某個對象自身的狀態變化,而流程圖更適合描述整個業務的環節的不同行為如何銜接各個業務對象。
也就是,狀態機關注的范圍相對會更小一些。
如果一個業務對象的狀態流轉無法通過作用于自身的業務行為表示,就可以引入相關業務對象的狀態機和流程圖來共同繪圖表示。
由于同時繪制多個業務對象的狀態機圖可能會很復雜,因此建議將主路徑用強調出來,這樣可以很清晰地知道主流程如何流轉。
05 總結
本篇介紹了狀態機在產品設計中的應用,通過狀態機可以很好地梳理單個業務對象業務狀態如何流轉。同時,對于多個關聯的業務對象,也可以實用狀態機和流程圖結合的方式,梳理業務環節上的多個業務對象的狀態流轉以及他們之間如何相互影響。
實際我們產品設計過程中就可以采取“定狀態、理流程、明數據”的方式去梳理業務。
作者:產品海豚灣;公眾號:產品海豚灣(ID:pm-dophin-bay)
本文由@產品海豚灣 原創發布于人人都是產品經理,未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
畫的好好
好多地方語法有問題,很難理解作者想表達的意思
簡單來說就是通過狀態機這個工具可以梳理某個業務對象的狀態,以及通過什么業務行為觸發狀態的變化。