状态机

在工作过程中,意外接触了一个词——“状态机”,这是个什么意思,可以为我们做产品提供怎样的用处?这篇文章就是初识状态机之后的学习感悟。

作为产品,为什么需要学习状态机呢?在刚进入公司的时候,根据公司产品做流程图的时候,发现自己经常会漏了这样或那样的状态,导致整体流程会有问题,后来知道了状态机这样的东西,发现用这幅图就可以很清晰的表达整个状态的流转,当然这个不是做好一款产品的必备品,但是却可以让你更加轻松的同技术等人员交流。

什么是状态机?

据百度百科,就是状态转移图。举个最简单的例子。人有三个状态健康,感冒,康复中。触发的条件有淋雨(t1),吃药(t2),打针(t3),休息(t4)。所以状态机就是健康->(t4)->健康;健康->(t1)->感冒;感冒->(t3)->健康;感冒->(t2)->康复中;康复中->(t4)->健康,等等。就是这样状态在不同的条件下跳转到自己或不同状态的图。

状态机可归纳为4个要素,即现态、条件、动作、次态。这样的归纳,主要是出于对状态机的内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。详解如下:

①现态:是指当前所处的状态。

②条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。

③动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。

④次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。

在阅读了浪子PRD关于状态机的文章后,结合自己的学习总结,我发现在平时的业务过程中,判断即对应状态机理论中的条件,我们做什么操作改变状态即理论中的动作,同时状态必须要有始有终,否则会出现状态卡住,无法继续正常推进。

那么状态机怎样去应用呢?

以物理课学的灯泡图为例,就是一个最基本的小型状态机


这里就是两个状态:①打开开关,灯泡亮,②关闭开关,灯泡灭

可以画出以下的状态机图


如果进度卡住,该怎么办?这里有个比较形象的案例就是淘宝的自动确认收货,卖家发货后状态变为待收货,若买家迟迟不点确认收货的话,那么流程就停止在这里,卖家也迟迟收不到货款,因此,在这里,淘宝做了一个条件,判断时间是否达到15天,如果达到15天,做出确认收货的动作,使得状态得到流转。以小灯泡为例,假设为了节约,小灯泡开了超过8个小时就自动关闭,除非再次做打开开关的操作,画出此时的状态机图如下


但是,

判断不是状态机必要的,如正常小灯泡的两种状态,可以不需要经过判断

起始和终止状态可能是相同的,也可能是不同的,即同一种状态可能是起始状态,也可能为终止状态

在这里以美团外卖为例,制作了一个简单的状态机图


总结

状态机图和业务流程图有些类似,但是又有不同:

1、两种不同的思维方式

2、两者思考的出发点不一样,因而两者所表达的目的也是不同的

3、两者的各个节点都是不同的,流程图为动作,状态机为状态

状态机可以对业务状态进行梳理,一目了然,之后可以根据业务场景不断增加。同时,使用状态机和相关人员进行表达时,也可以更加清晰,提升沟通效率。

你可能感兴趣的:(状态机)