BPEL是使用 Web 服务定义和执行业务流程的语言,通过其能够很好的编排web服务,因此在SOA大兴其道的今天,BPEL成为流程编排方面的标准。在其之前的两年时间,我主要涉及的是传统意义上的人工工作流,即WFMC的一套标准。

其实怎么说呢,感觉这两个标准产生的背景和应用的场景还是有很多差异的。下面简单的和大家探讨一下,有不妥之处,请大家批评指正:)。


1、WFMC,接触了两年多的时间,做的就是基于WFMC标准的工作流管理系统。其出现的背景就是办公以及公文流转吧。国外的一些传统EAI厂商(Tibco、webmethod等)在这方面作的还是很不错的。而国内主要应用在OA及其他办公场景,不否认这其中也有很多中国特色的东西,比如流程规则比较特殊等等(银狐兄在blog中有很多分析)。其实从WFMC本身来讲,其范围还是很大的。在实现的角度讲不但在人工工作流即交互层面并且可以调度Web服务。而其目前大多这类系统仅应用在人工工作流方面。


2、BPEL主要定位在整合Web服务的标准。本质上来说他是IBM的WSFL和Microsoft的XLANG的结合物。WSFL 支持图形化的流程,而XLANG在结构化构造方面有独到的方法,而BPEL4WS正是吸取了两者的优点,同时摒弃了一些复杂繁琐的部分,形成了一种较为自然的描述商业活动的抽象高级语言。而其整合Web服务的特点整合迎合了SOA的趋势,在加上各大厂商的大力推广,已成为事实上的标准,目前ws-bpel2.0标准正在由Oasis维护。其主要特点是整合web服务,在人工流程方面基本是弱的。但是各大厂商像Oracle、IBM、BEA在其产品中都加入了人工活动的节点。以适应更广泛的场景。由于BPEL只有统一的调用接口即WebService.因此为了调用其他像EJB、Java、JMS等服务,必须先将其包装成web服务然后再调用,这样大大影响了执行效率。像Oracle等都采用了web服务调用框架(WSIF)来调用webservice、ejb、java等。目前IBM和BEA还共同提出了一个BPELJ的私有标准,目的也是解决上述的问题。


总而言之,在应用中采用哪种标准的流程编排工具,需要结合具体的应用场景。不过在SOA的大势下,web服务的标准和基础环境的逐渐成熟,感觉BPEL会成为一种事实上的标准。