研究工作流及其相关技术的人一定知道这个组织——工作流管理联盟(简称WfMC,Workflow Management Coalition),其成立于1993年。作为工作流技术标准化的工业组织,WfMC提出的工作流系统参考模型(Reference Model)无疑为各家工作流软件厂商的系统设计规划提供了最权威的参考,乃至标准。下面就是这个参考模型:
首先,最重要的部分就是中间的工作流引擎,可以说它就是整个工作流系统的心脏,因为所有的工作流系统都要使用工作流引擎来:
1、为运行中的流程实例解释我们的流程定义——这些定义一般都是由接口1获得的。
2、组织调度流程的实例,推进工作流程的前进,这包括条件流转、分支聚合、父子流程……
3、处理工作任务的分配、接受、提交等行为。——为无论是人工干预或自动执行的任务,提供计算的支持。
4、管理调用其他的4个接口——这可能包括解释工作流程定义中的一些脚本。
工作流引擎做的工作就像心脏把血液不断的送到我们身体的各个部分一样,关于工作流引擎是如何架构和设计的,这相当复杂,不过我会在以后的文章和大家讨论。
然后,说说工作流系统“身体”的五个部分吧,也就是五个接口:
接口1——流程定义工具,前面提到过我们使用它来定义业务流程,所谓的业务流程定义一般来说就是一段XML,它遵循XPDL(Xml Process Define Language)标准或BPEL(Business Process Execution Language)标准或厂商自定义的标准等等。事实上你就可以把它理解为一个产生XML的图形化建模工具。这种图形化建模工具各个厂商的技术实现可谓五花八门,国内的一些厂商,例如西安协同采用的是java swing,joinwork使用的是flash,而我做的工作流系统使用的是ActiveX;国际上的一些开源项目,如jBPM使用的是基于Eclipse的插件,Shark Workflow使用的则是JAWE——一种基于Java技术实现的XPDL建模工具。当然,它们的目的都是——产生XML形式的流程定义。
接口2——工作流客户端应用,这很有意思,当我们的业务流程设计好了、运行起来了,那么我们——人如何与工作流引擎交互呢?这时候,工作流引擎就通过接口2,为我们提供各种各样的工作/任务列表、工作表单、流程列表以及一些查询功能。我们通过这个接口,就可以办理任务、填写表单……从而与工作流引擎沟通。
接口3——应用程序执行服务,工作流引擎通过这个接口去执行一些外部的或面向专门职能领域的应用程序,例如财务系统、报表系统等,让这些第三方系统参与进来,从而完成定义的工作流程。这看起来就像EAI(——Enterprise Application Integration)的特性,而事实上它也可以说就是Workflow EAI。同时我们也可以发现接口2和接口3的界定很模糊,难道接口2提到的工作列表不能算是外部的应用程序么?没错!这个问题确实存在,这也就是为什么荷兰工作流大师Aalst在其著作中写道“建议每个应用程序都由此‘应用程序执行服务’打开”的原因,他是在建议统一这两个接口么?我也不知道。总之,接口3在标准化方面众口不一。
接口4——与其它工作流系统的定制/交互服务,用来处理若干自治工作流系统之间的工作交换,例如案例转移、工作项外包等等。事实上,WfMC组织的初衷是想通过这个接口来连接各个不同的工作流引擎/系统,使它们在一个统一的标准下工作和交流。想法是好的,但是,由于种种原因吧,个人认为是商业利益的因素以及WfMC还没有强大到能“号令江湖,莫敢不从”的地步,所以到目前为止,接口4基本不被支持,也就是说,各大厂商的工作流产品并不能用同一种语言对话。
接口5——管理和监控工具,虽然很多工作流系统(特别是开源工作流系统)实现的最简单部分的就是这个接口,但我认为最能体现工作流系统在管理上应用价值的就是这个部分,它主要被用来搜集管理信息,这包括诸如工作流系统功能管理工具、流程实时监视和控制工具以及工作效率分析和流程覆盖面分析等各种商业智能工具,这为提升企业的管理能力、优化重组企业的业务流程、分析企业内部的工作效率瓶颈等提供了重要的量化数据支持。俗话说“工业化解放人类的体力,信息化解放人类的智力”,这个接口提供的功能不正是解放了企业领导和决策者们智力的么,而这正是信息化的初衷,工作流的最终价值所在。而传统的工作流系统在这个接口上的“短板”,正为BPM(Business Process Management)这个概念的支持者提供了攻击工作流系统的口实,BPM系统在这个接口上的强化成了很多人认为“Workflow系统”不等同于或弱于“BPM系统”的最重要原因,事实上,不过是些概念而已,如过眼云烟……
总结一下,五大接口各自强调了什么?接口1——(流程)定义;接口2——强化工作列表和应用程序集成;接口3——(外部应用程序的)参与;接口4——(不同工作流系统间的)连接;接口5——搜集管理信息。
还有一些补充观点:
接口3和接口5标准化工作进展较为缓慢。
接口3和接口4问题很多,主要是什么问题?还不就是流程和工作任务的事务、回滚(包括被动退回和主动取回的任务)问题,在这两个问题上如何处理、怎么处理好、如何保持原子性或如何进行“补偿”,都是很有些发挥空间的。