BPM和BPEL
由于前面的文中提到——BPEL是业务流程组织的设计图,而WSDL则是连接服务的粘合剂,这两种语言从不同的层次连接了SOA架构中的服务,在SOA架构中起到了至关重要的作用。因此我打算写一篇关于BPEL和WSDL的文章,对它们进行讨论。
我败了,事情的起因一家软件公司向我们推销自己的工作流管理软件,他们使用的基本框架是SOA,而上层连接工作(业务)流则是以WFMC为标准,于是就有了一些争论,就像我前面写的一样模糊,工作流(workflow)和业务流(business Process)究竟有什么差别?如果说工作流有WFMC作为标准,那么业务流的BPEL又是什么呢?会议上我犯了一个错误——把BPEL与workflow对应起来,回头想想觉得不对劲,于是就有了一天的搜索,思索。
新技术的出现总有其原因,BPM(business Process Management)与workflow究竟有什么样的联系?WFMC是否应当与BPEL相对应呢?BPEL在SOA架构中是否必须?
关于BPM和workflow在网上总是争吵不休,就像地质里一样谁嘴巴大谁有理。总的来说,BPM是在workflow基础上提出的,BPM是面向的整个企业层的,拥有一个包括业务流程发现,设计,执行,监管和优化的完整的生命流程,网上有些人说BPM就是EAI + workflow,于是 梁宝先 先生就写了一篇BPM ≠ Workflow+EAI的文章,文中详细讨论了BPM生命周期中的各个阶段,说明了BPM > Workflow+EAI,大家有兴趣可以看看。
我的错误在于对BPEL的认识上,那天软件公司介绍了自己的工作流执行引擎,而当时我已经知道BPEL能够在符合其规范的软件中执行,于是我问他们为什么不使用BPEL而用自己定义的符合WFMC规范的表示流程,介绍人回答说BPEL是业务流程间信息交互的描述标准,我没有反驳,因为在这个回答中他忽略了BPEL的执行意义,我猜想到他可能把BPEL和BPML混淆了。说到这可以谈一下业务之间的连接是否必须使用BPEL,我的答案是不必,但是会有一些副作用,按照软件公司的办法以WFMC连接业务并使用统一的数据流执行引擎也是可以的,但是你得开发这个引擎,而且你的描述标准是自己的,在企业间协作的时候势必需要转换。现在符合BPEL规范的平台已不断推出,微软甚至打算在vista系统中部署BPEL执行组件。BPEL是什么?仅仅是一套连接业务流程的交换标准?它的名字就是定义,execution language:它是一种语言,它可以执行,它是描述业务流程的script,它甚至符合pi演算,在这些层面上它与那个被称为描述语言的WSDL绝然不同了。