状态机与工作流的关系
状态机在计算机历史上是最成功理念之一。图灵围绕这个概念创建了一个计算的模型,并成功地成为计算机科学之父。Mealy,Moore,Harel和其他扩展自此理念的理论家,影响了数据逻辑、实时、嵌入式的工程,这些设计都引入了状态机和状态图。
状态机的理念也很自然地使用于许多当前的企业应用,特别是面向流程的应用。面向流程应用的一个显著的特征就是随着时间的流逝从一个状态迁移到另一个状态,换句话说,其进度从一个里程碑到另一个里程碑,最终到达最终目标。这里举一个财政资金拨付的例子,如一笔资金,从“在国库”状态,通过单位申请支付后,状态变成“申请中”状态,相关职能处室看到此申请信息,审核后,状态变成“已审核”,顺利下达的话,进入支付环节,状态变成“已支付”状态。以财政应用为例,可以看出,业务建模的方式取决于你以何种视角来看待业务需求,任何面向流程的应用中,建模者完全可以对每种业务类型中的业务单据进行状态识别,建模出状态机的转换细节,以此作为业务的需求。这明显是一种以数据为中心的建模方式,状态描述的是业务中的数据状态,简单,但又不利于对总体业务以纯流程视角的方式进行审视。纯流程视角建模还要建模控制流,以控制流为主,在控制流过程中携带相应的数据流(或专业点称之为“流程上下文”)。
这里要注意一点,其实说明了什么都可以数据都可以将之抽象出来成为几个状态,然后就将之说为状态机,这是错误的。要成为与面向流程应用相对应的状态机必须要满足几个条件:1)状态机的运行在时间跨度上是长时间的 2)状态机有持久化机制。
如果仅仅就状态机来说,其要完成实现面向流程应用,还是缺少企业应用集成技术的,这是显而易见的。同时说来,纯状态机只是通过声明状态以及转换来描述一个流程,而工作流来说则是描述一个流程应该如何运转,有静态的概念也有动态的概念,比如工作流更强调对流程实例的管理,所以工作流来说在状态机基础上更面向业务流程本身,更适合业务分析者理解。
这里给出几点遐想,作为笔记。