BPEL与XPDL的定位区别
Source: http://gocom.primeton.com/blog10263_2403.htm
  根据最近对几个BPEL产品的研究,根据以前对XPDL的了解,分析了BPEL与XPDL在业务目标方面的主要区别。

  定义、缩略语:

  XPDL:The XML Process Definition Language。

  BPEL:Business Process execution Language

  背景描述:

  公司最近交给我的任务之一,是通过分析BPEL的业务目标定位,来帮助我们分析在EOS产品中怎么利用BPEL(BPEL4People,HumanTask),实现产品的“帮助用户快速构建稳定,易用,灵活,易管控的SOA应用”的目标。

  最近两周研究的产品主要有下面几个:

  1)ActiveBPEL(包括Designer和ActiveVOS和ActiveBPEL Server)
  2)Apache ODE

  前期的工作学习中,已经学习过或者使用过的产品有:

  1) IBM Websphere Process Server
  2) JBoss jBPM-BPEL
  3) BEA Aqualogic BPM Suite

  研究的技术和规范内容主要是:

  1)BPEL2.0
  2)BPEL4People 和HumanTask
  3)下载了最新的XPDL2.1规范,重新看了一遍
  4)重新看了一遍BPMN(没有作为重点)

  下面主要讨论的是BPEL和XPDL的业务目标方面的区别,对于技术方面的区别,会根据工作情况,在后面再另外写文档说明。

  1 业务分析人员的视角
  1.1 业务分析人员从用户的视角来做过程建模

  业务分析人员没有能力从系统的视角来对过程做建模,他们建模的结果可以告诉我们的是:用户执行什么样的操作来完成整个过程;他们建模的结果不可以告诉我们的是:系统怎么样对用户的操作做出反应。[请参见jBPM的leader的博客:http://blogs.jboss.com/blog/tbaeyens/2006/07/05/About_BPM_miracles_and_what_you_can_expect_in_real_life.txt]

  我们举个例子来说明上面这段话的意思:对于普元今年做的招聘活动,会有一个流程来对应。对于HR的xiaofang(严格说来,她是一个用户,不是一个业务分析人员;但是业务分析人员的需求也是从她这里获取的)来说,下面这个图她是能够看明白的:

  上面是招聘活动的状态图,业务人员基本可以看懂;但是xiaofang肯定不能告诉我们技术人员说:是的,这个就是我们的流程。因为这个图其实还没有描述“用户执行什么样的操作来完成整个过程”,我们在状态图上加上部分“用户活动”,对xiaofang可能更容易明白一点:

  在图上加的几个注解,可以帮助用户和业务人员和技术人员更好的理解整个流程。上面这个图是状态图和活动图的结合。

  要特别说明的是:业务人员不会去根据系统边界,消息发送,业务对象等内容来思考问题;上面的图中,不会出现“invoke”一个服务的活动(BPEL),也不会出现“自动活动”(xpdl)。

  1.2 业务人员的工具

  业务人员的工具当然首先是vendor提供的产品,但是他们还应该有另外一个工具:简化的BPMN。

  简化的BPMN的第一层含义:首先应该是BPMN。

  比如对于“招聘流程”,其实可以画出多个 上面的那个“状态活动图”:内部推荐的和普通应聘 的“招聘流程”并不相同,初级人员招聘和高级人员招聘也不相同。

  Xiaofang不可能在图中用if…else来表达不同的情况,她只能对内部推荐的情况,画一个图给我们;对普通应聘的情况,画一个图给我们……

  我们不可能对每个情况定义一个流程的,那样就是硬编码而不是BPM了。所以,业务分析人员需要把xiaofang给的几个情况结合考虑,最后用BPMN画的图大概如下:

  是不是比较复杂?有点看不懂?是的,所以我们需要的是“简化的BPMN”。BPMN是一份超过300页的规范。即使业务分析人员决心去掌握所有这些概念,它也是难以思考的。( Michael)这个调查的结论是日常只使用了大约25个BPMN结构。

  不过我从BPEL4People的TC的member那里问到的情况是:BPEL4People定稿后,还将去调整BPMN,应对BPEL领域的新的变化。

  1.3 分析模型与实现模型的鸿沟

  根据上面的图,我们已经得到了分析模型,但是还没有实现模型。

  Alast这些以前专攻XPDL领域的学院派,现在也在做BPMN-BPEL的转换等方面的工作;但是需要说明的是,我们不能要求业务分析人员根据BPMN图,直接得到实现模型。这个已经是业界的共识(请参考bpmn-xpdl-and-bpel 和 BPEL implement等等很多文章)。

  实现模型还是要靠BPEL。

  2 BPEL的业务定位
  前面的招聘流程的例子中,BPEL的图可能是如下:(请参考BPEL)

  我们为图取的名称是“Application Service”,它本质上只实现了一个服务,而不是一个流程。流程在哪里呢?流程已经被业务分析人员用BPMN给画出来了,流程图涉及到多个人多个系统多个活动多个状态;而我们的BPEL服务实现,只是实现了一个或者多个服务,它只管理这些服务的生命周期。

  3 XPDL的业务定位
  实际上,WFMC也认为XPDL与BPEL是不同业务定位的两个标准,它的说明如下:

  How Does XPDL Compare to BPEL?
  BPEL and XPDL are entirely different yet complimentary standards. BPEL is an "execution language" designed to provide a definition of web services orchestration, specifically the underlying sequence of interactions, the flow of data from point-to-point. For this reason, it is best suited for straight-through processing or data-flows vis-a-vis application integration.
  The goal of XPDL is to store and exchange the process diagram, to allow one tool to model a process diagram, and another to read the diagram and edit, another to "run" the process model on an XPDL-compliant BPM engine, and so on. For this reason, XPDL is not an executable programming language like BPEL, but rather a process design format that literally represents the "drawing" of the process definition. Specifically, it has ‘XY" or vector coordinates, including lines and points that define process flows. This allows an XPDL to store a one-to-one representation of a BPMN process diagram. For this reason, XPDL is effectively the file format or "serialization" of BPMN, as well as any non-BPMN design method or process model which use in their underlying definition the XPDL meta-model (there are presently about 70 tools which use XPDL for storing process models.)

  WFMC用了些什么名词来形容XPDL呢?design format,process diagram,BPMN,DRAWING….等等。

  WFMC认为BPEL才是“执行语言”,而认为XPDL主要用来“建模”。实际上通过前面的分析我们也很容易就明白:XPDL领域主要还是利用了活动图,状态图和FSM等元素;这些元素的结合很容易用来表达一个流程的建模模型;但是--------我们的平常的做法,就是直接拿这个建模模型来作为了执行语言。

  我们这样做有什么缺点呢?

  首先,我们用XPDL表达了流程的建模模型,但是我们为了让它可执行,加入了太多的业务人员不能理解的元素,导致业务人员不能直接使用它;

  其次,我们用XPDL表达了可执行的元素,为了容易“建模”,加入了很多“活动”等“建模”元素,这些元素一般会需要去配置很多的属性,而这些属性是干扰和影响“执行”的。

  XPDL就是一个建模和执行的混合体,是一个分析和实现的混合体。

  4 总结
  就算我们前面的分析是正确的,但是我们已经用XPDL很久了,我们是否要用BPEL呢?

  这个还是需要我们另外花很多的时间去研究和证明的,下面是目前的看法,具体怎么做需要大家一起来判断分析:

  1) 个人认为XPDL其实不算是个标准(支持它的vendor都非常小,而且支持得到底怎么样,说不清楚)
  2) 用BPEL当然也是“遵徇了WFMC模型”的 (就如很多国内厂商的宣传一样)
  3) 的支持vendor就比较多,而且都是比较大的公司和组织BPEL
  4) 其实IBM以前也支持XPDL的(教材里面的FileNet,非常的XPDL);但是,现在基本很少听到有人提到它了;从IBM的态度我们也应该能够找到我们的方向(从另外说明了一点:IBM大力做BPEL不是因为纯商业原因,因为它做XPDL也比我们强)
  5) 集成应该是BPM的一大主力方向,集成是BPEL的最大优势。(具体为什么,需要再做具体的分析比较)

BPEL与XPDL的定位区别相关推荐

  1. 基站定位和GPS定位区别

    什么是GPS全球卫星定位系统 全球卫星定位系统(Global Positioning System),简称GPS.简单地说,这个系统是由覆盖全球的24颗卫星组成,它可以保证在任意时刻,地球上任意一点都 ...

  2. VSG惯量支撑和一次调频的功能定位区别

    一些关于VSG惯量支撑和一次调频的介绍看我前两篇文章,也可以看这个论文,我的这些文章就是总结的这篇论文:大电网中虚拟同步发电机惯量支撑与一次调频功能定位辨析_秦晓辉 控制规律上 惯性支撑是微分反馈控制 ...

  3. position:relative与position:absolute的定位区别

    CSS2.0 HandBook上的解释: 设置此属性值为 absolute 会将对象拖离出正常的文档流绝对定位而不考虑它周围内容的布局.假如其他具有不同 z-index 属性的对象已经占据了给定的位置 ...

  4. GPS、LBS、AGPS、WIFI、iBeacon定位区别

    相关文章: GPS概述(定位原理.系统组成及工作频段) 目录 一.GPS定位 二.LBS(基站)定位 三.AGPS定位 四.WIFI定位 五.iBeacon(蓝牙)定位 一.GPS定位 原理:接收机接 ...

  5. *p++和*(p++)的区别_同是华为顶级旗舰,P系和Mate系谁最值得购买?明白这点很重要!...

    近两年,华为手机凭借P系列和Mate系列的优异设计和销量口碑,已经毫无争议地成为了国产品牌高端代表.同时,华为自身也牢牢占据住中国大陆市场份额第一名宝座,在全球名次中以微弱差距排在第三,与第二名的苹果 ...

  6. Dubbo与SpringCloud的架构与区别

    Dubbo与SpringCloud的架构与区别 Dubbo架构图 SpringCloud 架构图 总结 框架 Dubbo SpringCloud 服务注册中心 Zookeeper Spring Clo ...

  7. 微型计算机的 I3 I5是,电脑i3和i5有什么区别

    很多人在挑电脑的时候,对于酷睿处理器的选择不是很明白,目前市场上流行的处理器为酷睿i3和i5两大系列处理器,那么电脑i3和i5有什么区别?差距有多少呢?下面为大家科普下,一起来看看. 酷睿i5:可以看 ...

  8. 在VC 6.0里Win32 Application和Win32 console Application的区别

    我们用Visual C++在创建工程的时候有Win32 Application和Win32 console Application,下面我们就了解下他们的区别. 在VC 6.0里Win32 Appli ...

  9. FAT16和FAT32文件定位

    FAT16 FAT文件系统的数据结构中有两个重要的结构:文件分配表和目录项. FAT16整体结构由DBR扇区.FAT表.根目录和数据区组成.下面将详细介绍. DBR扇区结构 其也称为引导扇区,由跳转指 ...

  10. 小程序与服务号的区别

    小程序与服务号是并行体系,同属于微信生态圈.企业要做好.做大一个服务号,基础就是获取大量目标用户的关注,即获得大量粉丝.服务号与用户存在关注和订阅的关系,业界通过粉丝数量判断该服务号的价值. 小程序与 ...

最新文章

  1. ckks方案优化最好的_网站优化关键词怎么选?好的关键词长什么样?
  2. Qt VS Tools用不了解决方法
  3. 广电宽带业务发展的四种策略
  4. java项目中的classpath
  5. pythonui自动化测试平台_django+appium实现UI自动化测试平台(开源部分,可定制开发)...
  6. quartz 表达式解析 详解
  7. raster | R中的栅格操作符(上)[翻译]
  8. VUE2中axios的使用方法
  9. Java的JDK以及maven环境变量配置
  10. 微信小程序使用QQ音乐API完整实例
  11. Git廖雪峰 常用命令总结
  12. 特殊回文数 C++解法
  13. M3U8文件简介及在线播放器
  14. colojure语言基础入门
  15. 网易云音乐歌单或歌曲封面提取
  16. php面向对象开源_回到学校:5个面向学生和老师的开源程序
  17. java基础练习题(for,switch,while,基本数据类型和引用数据类型的联系)
  18. BZOJ3681: Arietta
  19. oracle rac 宕机频繁,Oracle rac宕机分析故障处理
  20. 【点云路标提取】一个用于点云道路标志提取,分类和完善的的深度学习框架

热门文章

  1. Spark应用启动报错:Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
  2. poj 2586 Y2K Accounting Bug
  3. 基于32feet.net对Broadcom(Widcomm)蓝牙开发
  4. SendGrid -- Stressful Subject
  5. 如何将JPG转换成PNG格式呢?
  6. mysqlError: Can't connect to MySQL server on 'localhost' (10061)
  7. MySQL原理与实践(四):由数据库事务引出数据库隔离级别
  8. phpstudy安装yar扩展
  9. 我的世界Java种子算法_Minecraft:说说“种子”的使用和原理吧
  10. 用EasyHMI做的工程示例一览