本文作者從工作實踐出發,結合案例等分享了關于狀态定時的相關知識,供大家一同參考和學習。
在産品設計過程中,經常會遇到一些狀态定義的場景。比如訂單有待付款、待發貨、待收貨等,商品有上架、下架等,課程有待上課、上課中、已上課等。
有些狀态可能隻用于前端展示,而另一些狀态,可能跟業務流程有很強的關聯,不同狀态對應着不同的系統功能、業務流程。合理地定義狀态,是好的産品體驗和順暢的業務流程的保障。
我做過算法工程師,現在是教育行業的後台産品經理。我覺得技術背景對于我在進行狀态定義時,有一定的幫助。本文根據自己遇到的幾次狀态定義的需求,來談談如何定義狀态。
文章結構比較簡單,包括背景、如何定義狀态、實例三部分。如何定義狀态的正文部分,會将理論和實例結合。實例部分則給出完整例子。
如何定義狀态當需要定義一個狀态時,首先要問自己:“為什麼要定義這個狀态?”也就是明确目的。
定義訂單狀态,是因為用戶需要知道訂單狀态的信息,同時後台系統也需要訂單狀态來做不同的動作。定義商品的上架、下架,是為了控制商品在商城裡的展示、售賣。定義課程狀态,是為了數據統計、篩選等。
我發現一些産品有堆砌狀态的現象。所謂堆砌狀态,就是先把狀态做了,然後去想這個狀态能用在什麼地方。
比如針對課程,設計了凍結操作,凍結後課程的狀态會從正常切換到凍結狀态。但凍結狀态對應什麼動作呢,并沒有設計。問其為什麼如此設計,回答說大家都這麼設計,先把這個狀态定義了,把這個功能做了,将來肯定會用到。
當然,确實會存在一些常規設計,或者說不用多想就可以進行的設計。但更多的時候,應該是遇到一個問題、一個場景,需要用到一個狀态來解決這個問題、處理這個場景的時候,我們再來定義狀态、設計功能。
(1)狀态定義
首先要注意,狀态分兩類,一類是系統自動判定得到的狀态,比如課程的待上課、上課中、已下課狀态,系統可以通過比較當前時間和課程的開始、結束時間,自動判定得到。一類是人為操作得到的狀态,比如課程的上架、下架,需要人為點擊功能按鈕,進行狀态的切換。
系統判定的狀态需要有明确的定義。不同狀态之間應該是互斥的,不應該出現某些情況下即可以判定為狀态A,又可以判定為狀态B。比如課程待上課、上課中、已下課的狀态定義為,當前時間小于課程開始時間是待上課,系統時間大于課程開始時間、小于課程結束時間是上課中,當前時間大于課程結束時間是已下課,三者互斥。
而人為操作得到的狀态,與其說狀态定義,不如說狀态設定更合适一些,但為了統一描述,文中都稱為狀态定義。
人為操作得到的狀态的設定,需要的不是定義,而是設定原則或者說依據,不能毫無章法,想到什麼就是什麼。比如最簡化的例子,商品的上架和下架,設置原則是商品是否要售賣,商品要售賣,則對應上架狀态,商品不賣了,則對應下架狀态。
(2)狀态對應功能
狀态定義不是目的,隻是手段。通過定義狀态,使得系統、用戶可以根據不同的狀态值,進行不同的系統動作、人為動作,這才是目的。
所以每個狀态除了有明确的定義,有設定原則,更要有相應的功能設計,這甚至比狀态定義更重要。
狀态的定義可能出現冗餘,或者定義之後發現通用性欠佳,僅能用到極少數地方。但如果隻定義了狀态,沒有相應的功能設計,等于舍本逐末。甚至可能因為功能設計的得不夠嚴謹,狀态間沒有形成邏輯閉環,導緻整體設計無效。
比如商品的上架、下架。上架對應的功能可能有,用戶在前端看到商品顯示已下架,且沒有購買入口按鈕。
後台系統某些商品篩選結果列表中,不展示下架狀态的商品。以及後台系統商品列表中,下架狀态商品對應的操作中,應該有“上架”操作按鈕,即可以通過點擊上架按鈕,将商品從下架狀态切換至上架狀态。
功能設計最重要的是考慮周全,這不容易,但有一定規律。常見的與狀态相關的功能設計有這麼幾類,包括前端展示、篩選、狀态切換操作按鈕、系統判定規則等。可以以此作為大的方向,結合自家系統的實情進行設計。
(3)展示
狀态對應的前端展示屬于功能裡設計中的一項,之所以獨立成題,是因為展示是用戶直接能看到的部分,所以需要考慮清楚每種狀态下,各端應該如何展示。
比如商品下架後前端商品的展示,是在列表頁展示商品,但進入詳情頁後提示商品下架,還是不在列表頁中展示商品,這是需要明确設計的。
不同的狀态間會互相切換,如果是系統判斷得到的狀态,要明确狀态切換的節點,即滿足什麼條件時,會從一個狀态切換到另一個狀态。
而人為操作得到的狀态,要注意狀态切換閉環的問題,比如狀态A、B、C三者之間可以互相切換,需要設計操作按鈕,使得從A可以切換到B,從B可以切換到C,而且還可以從C切換到A,而不是從B切換到C之後,發現沒法重新切換到A或者B了。
比如最簡單的例子,操作人在後台系統中,通過點擊上架按鈕,将商品切換為上架狀态後,上架按鈕處應該顯示下架按鈕,這樣操作人才能通過點擊下架按鈕将上架狀态的商品切換為下架狀态。
實例這裡舉一個課程狀态的例子。教育行業中,課程即是商品,課程的狀态類似商品的狀态。這裡我們按照前文中的講解,一步步來定義課程狀态。注意,實例做了大量簡化,僅用來說明狀态定義過程。
通過課程狀态,定義課程的整個生命周期,為不同生命周期對應的功能提供判定依據。
(1)狀态定義
課程的狀态屬于人為操作得到的狀态,所以需要考慮好每個狀态設定的原則。
(2)狀态對應功能
注意,所有功能除了整體功能描述外,一定要給出具體功能設計。比如當整體功能描述為“可編輯内容屬性”時,應該給出具體功能設計:課程标題編輯框可編輯,課程類型選擇框可選擇等。這裡為了簡化,隻給出整體功能描述。
(3)展示
注意最後一個狀态切換,課程狀态切換為停止招生後,操作按鈕從停售按鈕切換成了上架按鈕,也就是說可以點擊上架按鈕重新上架,這樣就形成了狀态切換的閉環。
本文由 @像西澤一樣 原創發布于人人都是産品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!