浅析XPDL与BPEL现状

日期: 2010-02-01 作者:王楠 来源: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服务)和工作流相关数据(运行期间持久化的流程实例控制数据)。
WFMC工作流联盟是一个活跃了十五年的民间组织,官方宣称有超过300个成员,在欧洲、美洲及亚太设有指导委员会,每隔三年举办一次大规模的工作组会议,XPDL除了得到大部分国际工作流厂商和Opensource支持外,在中国也有不少工作流厂商支持该标准。
 
  “老”贵的BPEL 

  BPEL(Business Process Execution Language)的缩写,直意为业务过程执行语言,是一种基于XML的,用来描写业务过程的编程语言,被描写的业务过程的每个单一步骤则由Web服务来实现,这个描述本身也由Web服务提供,即BPEL模型本身也被当做Web服务来使用。BPEL在过去很长一段时间被视为未来工作流标准的“新贵”,经过八年的发展,目前BPEL规范已在Oracle、IBM等厂商SOA产品中提供支持,可以说是新贵变”老”贵了。
 
  BPEL基于Web Service的WSDL建立,相关标准还包括XML Schema、XPath、WS-Addressing等SOA标准。最初的BPEL标准被定位于大规模分布式商业应用下的服务编程语言,不支持人机对话的人工流程,BPEL所描写的过程仅与Web服务通信,而这些Web服务却可以提供与用户的信息交换,但它们不是用户本身。BPEL从2002年提出后也是在不断更新,在随后加入了一些重要扩展规范,例如BPELJ(允许BPEL XML中加入Java程序段,需要澄清的是BPEL不仅能够执行Web服务,还可以通过厂商扩展调配JCA、JMS等)、BPEL4People和WS-HumanTask(虽然在分布式商业应用中广泛采用了Web服务,但是缺乏人员交互是应用于真实世界业务过程的一大差距,这个扩展使BPEL能够兼顾基于角色的人工活动编排过程)。可以说BPEL在构建符合标准的SOA架构中占据重要位置,是编排Service的杀手锏,但目前市面提供的BPEL产品在解决企业非流程集成场景方面仍有明显不足,我认为BPEL如果不出意外,肯定会成为工业界中业务集成方面的标准语言,如果成为完整的工作流工业标准目前还差一些。 

    BPEL是一种基于块(Block)的结构化编程语言,可以在符合BPEL标准的引擎上执行,作为一门简单的编程语言,包括了基本的顺序(Sequence)、选择(Switch)和循环(While)程序语言控制结构,与XPDL工作流实例不同,BPEL通过因为 receive和 pick活动提供进入流程的入口点,利用一个特定于消息的 XPath 表达式匹配从 WSDL相关消息集合(Correlation Set)的实例中定位实例操作。在BPEL中,一个流程可以调用其他服务,也可以响应来自客户端的请求(receive和 pick)。也就是说BPEL流程实例既可以作为服务的请求者,也可以扮演服务的提供者。
 
  XPDL与BPEL的区别关系 

  XPDL与BPEL是完全不同且互补的标准,BPEL是一个“执行语言”,旨在提供一个Web服务编排定义,BPEL的定义关注一个进程以Web服务和XML数据集成为主的可执行。而XPDL则是一个与开发者相关实现无关的流程过程描述规范和交换接口,在工作流结构完整性方面XPDL较为成熟,但XPDL未在基于SOA架构下的服务编排方面给定更多标准化的交换格式,大部分BPM厂商均以XPDL扩展语法提供私有的扩展,而此部分正是BPEL所努力的,虽然BPEL已经向其不擅长的人工流程和非Web Service服务编排领域拓展规范,但仍然需要在非集成领域的流程规范方面向XPDL老大哥学习,比如在面向BPM业务分析师视角,目前BPEL2.0尚缺失对过程模拟规范的制定。 

XPDL与BPEL的区别关系


    不分伯仲,各领风骚

  下表数据来自个人对2010年初各BPM厂商提供的软件版本中对XPDL/BPEL导入导出的试用评估,请以BPM厂商说明为准,这里仅供参考。可以看出,无论是“老”贵的BPEL还是老资历的XPDL,在市面上很长一段时间将仍然并行在各个工作流产品中,面对这两个存在一定竞争关系的流程标准,BPMN至少已成赢家,XPDL和BPEL标准之争似乎在学术界已有落音,但是在2010年面对市场的商业化产品进程上,两者将继续不分伯仲,各领风骚。

厂商比较

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

作者

王楠
王楠

相关推荐