工作流与业务流程管理到底有何不同?如果说有前对它们之间的不同的感觉都是量上的差异,那么通过对近一段时候我所接触的一项目的总结,对它们之间的不同应该说有了质的差异上的感觉。
一般的说法,Workflow是一个技术上的概念,而BPM是一个管理上的概念(在IBM等这些可恶的大公司的忽悠下,BPM也在技术化),这一点我最新的认识是:workflow是一种技术上进行业务流程管理的方法(注意仅仅是一种),主张业务流程管理建模、运行、控制、管理的过程。第一步一定是建模,因此workflow的相关规范(如XPDL、BPMN等等)都首先在讲如何建模,第二步是运行控制,因此workflow的相关规范也在试图定义一些标准化的流程驱动接口(虽然一直没有为大家所共认的真正的标准)。而业务流程管理强调的不仅仅是正向的过程,也包括结果以及结果的反作用,而且就正向的过程来说,workflow技术所提供的流程管理过程也仅仅是一种实现的方法而已,而非唯一的选择。事实上,许多企业的业务流程管理是侧重于对运行结果的分析,而非建模。对BPM来说,建模实际上是提供了一个生产过程计划的模板,做一个具体的生产计划时按此模板来说就可以了。而对很多企业来讲,生产计划的制订有时候可能不需要模板,或者说模板只需提供一个可选的活动范围,活动之间的顺序可以不计划(在生产过程中随时决定),也可以根据需要重新计划。由于计划的方式不同,也导致了流程运行过程的驱动方式也不一定是workflow所规范的一种方式。也就是说,bpm的引擎要能够处理比workflow的引擎更灵活,更复杂的流程驱动方式。无论计划从何而来,经过一段时间的运行之间,bpm的正向过程的最后一个步骤是BAM,也就是对运行过程中所采集的各项指标的分析,这一点也workflow所没有规范的。
也许正因为bpm的这些特点,所以bpm与soa才走得越来越近,以至于IBM等等这些公司一提BPM,就要讲SOA,就要讲应用的整合、服务的整合。