产品之术:一目了然的状态机图

21 评论 66933 浏览 193 收藏 6 分钟

什么状态机图,它的使用场景是什么?文章为你解读。

一、什么是状态机?

做产品的时候,我们总能遇到一些比较复杂的逻辑问题。

比如状态的转换,字段状态的确认,权限的控制,状态的对应。

而普通的流程图,或时序图,更侧重于流程和动作的描述,对于对象和状态的解读缺乏直观。

这里我们推荐一种方式,就是画一个简单的状态机图:

那么什么是状态机呢?状态机我们将的一般是指有限状态机:

有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。[1]

有限状态机,又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。[1]

有限状态机可以将复杂的逻辑简化为有限个稳定状态,在稳定状态中判断事件。其中有限不是指有限次处理,而是有限个稳定状态,并且有限状态机是一个闭环系统,可以用有限的状态处理无尽的事务。

有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。

二 状态机图怎么画?

基本元素

当你需要描述一个对象或系统的行为状态时,相比于直接的语言描述,更推荐使用状态机表或状态机图的形式。

首先我们看一下基本元素:

做需求时,至少要了解以下四种元素:起始、终止、状态、历史状态。

再加上动作和条件,我们就可以完成一个状态机图了:

所以对于状态机图来说,基本要用到6个元素:

  1. 起始
  2. 终止
  3. 状态
  4. 历史状态
  5. 动作
  6. 条件

对于历史状态的使用,我们可以参考下面的案例。

比如我们举个简单的例子,一个洗衣机的快洗模式状态图:

遇到断电的时候,机器是有缓存的,所以跳出流程恢复流程之后,是会回到历史状态。

状态机表怎么画?

首先我们看下下面这张状态机图,展示了一张简单的单审批人文件的状态流转情况。

那么如何把他写成表呢?这里有多种写法,区别于纵坐标的不同,我们举两种:

左侧的纵坐标为初始状态,横坐标为终止状态。

右侧的纵坐标为动作条件,横坐标为终止状态。

那么对于动作比较多且复杂的情况下,可以考虑采用右侧的表格,这样会比较一目了然。

三 使用场景

  • 在讲解逻辑的时候,或泳道图过于麻烦的时候,你可能会用到状态机图。
  • 可能很多你提出的需求,工程师都会自己去把他画成状态机图来方便编码。
  • 所以能为别人多做一步,别人就对你多一份感激。
  • 在梳理需求的时候,状态机图也是一个帮助思维思考的好工具。
  • 状态机图更是一个代入感很强的表现形式。

比如我们可以画一个状态机图来展示某岗位的一生:

最后希望这个岗位的同事都能够做到逻辑清晰,身体健康。

#专栏作家#

花生酱先生,人人都是产品经理专栏作家,微信公众号:产品之术。金融业资深产品经理,对职涯规划与个人发展有丰富经验,产品涉猎广泛,ERP、金融领域较多。

本文原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自 Pixabay,基于 CC0 协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 您好,请教下,如果有很多种状态,多个状态有一定的业务逻辑。比如一个建筑,是由未建设、建设中、已建成、建成未管理、建成已管理、未经营、已经营;是拆成3个状态(建设状态、管理状态、经营状态)还是用一个状态呢?

    来自四川 回复
  2. 最后这个图的终点只有养伤。。
    思考ING

    来自香港 回复
  3. 最后这个图感觉被冒犯到了

    来自北京 回复
    1. ~~

      来自北京 回复
  4. get新技能 😐

    来自陕西 回复
  5. 这是什么字体,好看

    来自广东 回复
  6. 我会清晰注明作者和出处的,谢谢了大佬

    来自广西 回复
  7. 您好,大佬,请问我能转载收藏吗

    来自广西 回复
  8. 新技能get

    来自北京 回复
  9. 新技能get

    来自北京 回复
    1. 谢谢!

      来自广东 回复
  10. 写的很好

    来自广东 回复
    1. 谢谢!

      来自广东 回复
  11. 很棒的分享 请问文章中的图是用什么软件画的呢

    来自广东 回复
    1. 是keynote做的,ppt也可以

      来自广东 回复
    2. 谢啦~

      来自广东 回复
    3. 线条上文字是如何加的?

      来自江苏 回复
    4. 直接选中输入文字

      来自上海 回复
  12. mark

    回复
    1. 谢谢

      回复
    2. vv

      回复