第五章:流程设计方法论——成为机器的奴隶,或是制造腐败
文档大纲
一、流程的本质
二、流程的要素
1、驱动力模式
2、任务和状态
3、节点
(1)验证机制
(2)驳回机制
4、监管机制
三、流程的设计模式
1、面向状态(谁做都行,以事为中心)
H2、面向节点(不是谁都能做的,以人为中心)
3、面向状态还是面向节点,这是个问题。
四、流程模型
1、箭头模型
2、层叠模型
(1)层叠模型有两种:
(2)反馈机制
3、水池模型
4、模型的混合使用
五、多层流程的设计
1、单一任务,多层状态
2、单一主任务,多重子任务
3、两种多层流程设计的方式各有优缺点
零几年的时候,我曾经在国内的一家头部互联网企业工作。当时,公司内部使用一套工单系统来实现工作协同。那个时候,不像现在,有很多的协同工具可以选择。所以,那套工单系统曾被我仔细研究。
也就是那个时候,我开始关注流程的设计和管理。
在后来的很多年里,我曾经做过很多流程类的产品,甚至也做过流程引擎。
前几年曾经专门复盘过这些流程类的产品,最后,搞出来自己的一套流程设计方法论。
可能不像很多方法论那样高度抽象,但胜在简单实用。至少对于大多数流程的设计来说,基本上可以拿来就用。
一、流程的本质
流程的本质就是事物状态的有序化。
任何事物,按照一定的标准,都可以用一系列的状态来标注。而这些状态的有序化便形成了流程。
二、流程的要素
1、驱动力模式
被动模式和主动模式。
任何一个流程的运转都是有自己的驱动力的。
被动模式的驱动力来源于上一个流程节点,也即是上一个节点驱动下一个节点。(简单理解:任务从上一个执行人转给下一个执行人,下一个执行人被动执行。)
主动模式的驱动力来源于流程节点本身,或者叫自驱动。
不同的驱动力模式,决定了流程设计的时候如何选择流程模型。
流程设计是必须要考虑整个流程的驱动力模式的。否则,很可能会造成,你设计的流程,“不好用”、“不合理”、“太麻烦”。。。。。。
在同一个流程中,主动模式和被动模式可以混合使用。主要看具体的事务和场景。
2、任务和状态
一个流程的流转,是需要一个状态化的东西来统筹整个流程的,这就是任务。任务的状态的有序变化形成了流程。
一个任务,可以是一个文档、一个票据、一个订单、一个工单、一个卡券等等。
一个流程只能有一个任务。或者只能有一个主任务,在流程中可以被拆分成多个子任务分别执行。
3、节点
节点就是执行人。
也就是,每一个任务的状态的具体执行者。可以是人,可以是程序,也可以是机器设备等等。
一个节点可以只执行一个状态,也可以执行多个状态。这主要取决于流程的设计模式(详见后边的“三、流程设计模式”)。
对于每一个节点来说,状态的切换,并不一定会伴随节点的切换,但节点的切换一定会伴随状态的切换。这算是一个流程设计的原则。
而对于每一次节点的切换,都会需要相应的验证机制,以及有可能会用到的驳回机制。
(1)验证机制
每一次节点的改变,都会执行验证。
- 前置验证:
有的是在节点切换之前验证当前节点的执行结果,通过验证,则切换下一个节点。
- 后置验证:
在节点切换之后验证上一个节点的执行结果,如果不能通过验证,则执行驳回机制。
(2)驳回机制
如果流程的验证机制是后置验证,那么就必须要有驳回机制。驳回机制就是验证上一个节点提交的任务不合格,而退回给上一个节点的机制。具体的验证标准、规范、退回方式、驳回后要如何处理等,都是需要在设计流程的时候考虑的。
4、监管机制
每一个流程都应该有监管机制。监管机制主要有两种。
- 记录型监管
最简单,也是最基本的监管机制,就是将记录任务的执行过程,即任务状态的变化和每个状态的属性和执行结果等。出了问题,便可以追溯原因。
- 实时监管
实时监管流程的每一个状态的执行情况,发现不合规之处,可立即介入。
三、流程的设计模式
1、面向状态(谁做都行,以事为中心)
这个比较常见。重状态,轻节点。我们大多数见到的和做的流程都是这样的设计模式。
先做什么事情,然后得到一个什么状态,然后再做什么事情,再得到一个什么状态,然后再通过图像识别,得到一个什么状态,然后再做什么事情,得到一个什么状态。。。。。。
流程中的所有节点(人、程序、机器等)围绕着一件事、一个机械化的步骤,按照固定的规则在做各自负责的事情。
你可以把它理解成“流水线”。
2、面向节点(不是谁都能做的,以人为中心)
这种比较少见。轻状态,重节点。
任务先交给谁,能得到一个什么结果,然后再交给谁,能得到一个什么结果,然后再交给哪个机器,能得到一个什么结果,然后再交给谁,能得到一个什么结果。。。。。。。
一般来说,在一些非标准化、节点产出的结果差异较大的情况下,或是在一些松散的组织和流程中,才会考虑使用。
在互联网产品中,不多见。目前,主要是在一些协同办公产品中会用到。
3、面向状态还是面向节点,这是个问题。
或许,上帝之所以会存在,是因为这个世界不完美的原因吧。
一个流程的设计,无论面向状态还是面向节点,都不可能设计出一个绝对完美的流程。
面向状态的终极,人类终将成为程序和机器的奴隶。
面向节点,很容易会造成权利的集中和腐败的产生。
所以,最后,流程要使用什么样的设计模式,还要看具体的业务场景。适合的才是最好的。