
| TechTarget中国:浅析XPDL与BPEL现状 |
|
|
|
[其他 2010年2月] 【TechTarget中国原创】实践派的XPDL XPDL(XML Process Definition Language)的缩写,是由Workflow Management Coalition(WFMC)所提出的一个工作流描述规格,使用XML文件让不同的工作流程软件间交换商业流程定义。XPDL是一个通用的框架,据WFMC认证列表统计目前全球约有80个厂商支持该标准,包括我们熟悉的IBM、BEA(Oracle)、Tibco相关流程产品,目前XPDL的最新版本是2.1(2008年4月23日approve version)。 WFMC为实现不同工作流产品间互交换,给定了5类接口规范(Interface),其中我们讨论的XPDL是其Interface1。XPDL给定了流程定义间进行相互转换的XML Schema元模型,这个XML Schema可理解为与运行控制无关的描述结构,为设计流程和运行流程提供了形式上的可分离,这样无论开发者使用Java、.Net还是轻量级的PHP、Python语言,采用有限状态机还是Petri网,只要外部接口符合XPDL规范,那么就可以保持相同的表示形式和互操作,这就为厂商间标准合规性验证提供了一个通用的描述框架,更重要的是XPDL对不支持的厂商个性场景提供了扩展,这个扩展框架约束能够保证流程对外表现形式的一致性。正是这个定位使得XPDL在与十几年中出现的众多潜在新兴竞争标准之争中仍然保持旺盛的生命力,并催生了不同竞争活力的工作流产品。对于实现XPDL规范的工作流产品,目前一个通常的方式是采用BPMN进行建模,以XPDL为持久格式,由厂商实现的流程引擎执行该描述。 XPDL的主要元模型包括了过程活动、转移连接弧(可理解为规则)、参与者(过程活动所需的资源,在XPDL中参与者模型被抽象为一个分配对象,可能是现实世界的人也可以是一个系统或服务)、程序声明(过程活动调用的IT应用程序或接口服务,例如一个人工任务的交互表单、Web服务)和工作流相关数据(运行期间持久化的流程实例控制数据)。 BPEL(Business Process Execution Language)的缩写,直意为业务过程执行语言,是一种基于XML的,用来描写业务过程的编程语言,被描写的业务过程的每个单一步骤则由Web服务来实现,这个描述本身也由Web服务提供,即BPEL模型本身也被当做Web服务来使用。BPEL在过去很长一段时间被视为未来工作流标准的“新贵”,经过八年的发展,目前BPEL规范已在Oracle、IBM等厂商SOA产品中提供支持,可以说是新贵变”老”贵了。 BPEL是一种基于块(Block)的结构化编程语言,可以在符合BPEL标准的引擎上执行,作为一门简单的编程语言,包括了基本的顺序(Sequence)、选择(Switch)和循环(While)程序语言控制结构,与XPDL工作流实例不同,BPEL通过因为 receive和 pick活动提供进入流程的入口点,利用一个特定于消息的 XPath 表达式匹配从 WSDL相关消息集合(Correlation Set)的实例中定位实例操作。在BPEL中,一个流程可以调用其他服务,也可以响应来自客户端的请求(receive和 pick)。也就是说BPEL流程实例既可以作为服务的请求者,也可以扮演服务的提供者。 XPDL与BPEL是完全不同且互补的标准,BPEL是一个“执行语言”,旨在提供一个Web服务编排定义,BPEL的定义关注一个进程以Web服务和XML数据集成为主的可执行。而XPDL则是一个与开发者相关实现无关的流程过程描述规范和交换接口,在工作流结构完整性方面XPDL较为成熟,但XPDL未在基于SOA架构下的服务编排方面给定更多标准化的交换格式,大部分BPM厂商均以XPDL扩展语法提供私有的扩展,而此部分正是BPEL所努力的,虽然BPEL已经向其不擅长的人工流程和非Web Service服务编排领域拓展规范,但仍然需要在非集成领域的流程规范方面向XPDL老大哥学习,比如在面向BPM业务分析师视角,目前BPEL2.0尚缺失对过程模拟规范的制定。
下表数据来自个人对2010年初各BPM厂商提供的软件版本中对XPDL/BPEL导入导出的试用评估,请以BPM厂商说明为准,这里仅供参考。可以看出,无论是“老”贵的BPEL还是老资历的XPDL,在市面上很长一段时间将仍然并行在各个工作流产品中,面对这两个存在一定竞争关系的流程标准,BPMN至少已成赢家,XPDL和BPEL标准之争似乎在学术界已有落音,但是在2010年面对市场的商业化产品进程上,两者将继续不分伯仲,各领风骚。
|


