InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Tom Baeyens谈过程虚拟机

作者 Gavin Terrill 译者 胡键 发布于 2008年5月4日

领域
语言 & 开发,
架构 & 设计,
过程 & 实践,
企业架构
主题
编制 ,
SOA ,
Java ,
架构 ,
企业架构 ,
工作流/业务流程管理 ,
业务流程建模 ,
业务流程管理
jBPM PVM Logo随着jBPM过程虚拟机(Process Virtual Machine)最近alpha测试版的发布,JBoss距离实现一个支持多定义语言的过程执行语言的目标又进了一步。这次发布也标志着jBPM受到关注的增多,最近还提供了一个更新站点。InfoQ就这个项目,以及PVM如何改变BPM领域采访了项目的带头人Tom Baeyens。

InfoQ:您能向InfoQ的读者介绍一下PVM概念的历史和目的吗?

Tom:过程虚拟机(Process Virtual Machine)是我们在jBPM探索过程中核心概念的最终产物。

jBPM一开始使用被称为jPDL的单一过程语言,但是在成为JBoss一部分后不久,用户就一直问我们是否也能支持BPEL。那时我意识到jPDL实现和BPEL有许多重叠的地方。自从那时起,我们就一直从过程语言特殊部分中抽取公共部分。

jBPM 3已经有了能工作的全部概念,它能运行多种过程语言,如天生就支持jPDL和BPEL。但是缺点是它仍是一个大代码库,不是真正的模块。因为BPM和工作流领域完全都是各自为政,多种过程语言的需要日益明显。因此,我们需要一个更模块化的方法。

那就是过程虚拟机出现的原因。它是一个用来构建和执行过程图的代码库。过程语言的本地实现可以构建于过程虚拟机之上。此外,它可以运行在任何Java环境之内,不论它是标准Java、企业Java,还是SEAM或Spring。

InfoQ:为什么这很重要?

Tom:一方面,业务过程管理(BPM)和工作流领域完全都是各自为政。有很多针对特定用例和环境的不同类型的过程语言。这和领域特定语言(DSL)有些相似;不是一门语言就可以把全部事情都搞定。目前,所有这些语言都有一套自己的单片式(monolithic)引擎,这并不实用,而且它们也很难包含到一个应用之中。

过程虚拟机提供了一个简单的统一结构来使这些过程语言运行在一个核心技术之上。

另一方面,Java领域也同样是分裂的。与那些必须在一个单独服务器上隔离运行的传统过程引擎不同,过程虚拟机可以内嵌到你的应用中运行,不管什么Java环境。这大大降低了使用过程技术的项目的门槛,因为过程持久化可以被透明地与应用持久化集成。

InfoQ:应用开发人员需要使用过程虚拟机本身工作吗?

PVM UML Classes Tom:绝大多数的应用开发人员不用使用过程虚拟机本身工作,而是使用构建在它之上的一种过程语言,如jPDL、BPEL或XPDL。

但是,应用开发人员了解过程虚拟机基本概念还是很重要的。就像开发人员为了使用关系数据库而需了解表、列、主键和SQL查询基本概念一样,他们需要了解过程虚拟机概念,如过程定义、执行异常和异步延拓(continuation)。

InfoQ:Bull现在已经与JBoss合作来支持PVM概念——你们在和其他合作伙伴共事吗?

Tom:Bull的确和我们就过程虚拟机进行合作。他们贡献了过程虚拟机中的一些基础功能,并主导BPEL和XPDL活动实现。还有些其他公司尚在联络中,但是很遗憾我们还不能透露他们。但是我们看到明显的迹象表明,过程虚拟机将巩固BPM领域中的Java的势力。

InfoQ:到现在为止,有哪些主要挑战是你们不得不克服的?

Tom:目前关于分析、实现和服务编制存在的混淆。对于过程虚拟机的应用,我们注意到了3个清晰分离的用例。让我们来讨论它们,并强调哪种过程语言最适合哪个用例:
  1. 对实现的分析:这是当今单纯的(pure-play)BPM套件的目标。从一个分析图开始,然后将其转换成可执行的软件。许多传统厂商试图用大量魔法掩盖分析过程图和可执行软件间的重大区别。

    这暗示着:图是负责需求的非技术人员和负责自动化的技术人员之间重要的沟通工具。但是大体上,没有技术手段能够从非技术人员的输入产出可用于生产环境的软件。

    要使分析人员和开发人员之间能够协作,可执行过程语言就必须足够灵活完全匹配分析图。像可自定义活动实现和事件监听器这样的特性对于确保分析人员在图变得可执行之后仍能认出它来说至关重要。jPDL非常适合这个用途。它还提供了一个与Java技术的清晰集成,一个开发人员喜欢的简洁、易读的XML语法。XPDL也支持这个用例。XPDL的语法更加复杂和缺乏可读性,但是它的移植性更好,因为更多的厂商正在采用这种标准,虽然缓慢但是稳定。

  2. 异步Java架构:就使用异步架构来说,Java的确没提供吸引眼球的解决方案。事实上,这是个大麻烦。

    一方面,企业平台有用于异步消息的JMS和EJB定时器。但是,那些都非常的底层。你需要很多部署描述符来支持一个长期运行的过程,非常麻烦。而且接下来,关于事物如何关联的整体视图完全不见了。通过jPDL,这个整体视图清晰可见,而且热部署就像做饼一样容易。只需在一个图形工具中重新配置图中的变迁(transition)并重新部署,而不是花上好几个小时书写麻烦的企业部署描述符。

    另一方面,标准Java平台完全不支持异步架构。jPDL和标准Java平台结合得非常紧密,它利用了来自过程虚拟机的工作执行器(job executor)来提供异步延拓(continuation)和定时器。

    因此现在,由于有了基本的过程虚拟机基础设施,一个单一jPDL过程就可捕获人、Java代码和其他事物的异步编制,并可使那个逻辑在标准和企业Java环境间可移植。

  3. 服务编制:对于服务编制来说,BPEL已经广泛被接受,并成为被支持的标准。它操作在企业服务总线(ESB)级别,因此它是一种集成技术。一个BPEL过程可以(过分简化的)被认为是Web服务级别的脚本。WSDL服务可通过BPEL被描述成粗粒度的服务。

InfoQ:读者可以在哪里找到关于PVM的更多信息?

Tom:首先,6月6号在都柏林会举办一个jBPM社区日的活动。这是一次jBPM核心开发人员、合作伙伴、客户和其他只是想更多了解jBPM的人之间绝佳的沟通机会。活动是免费的,在一个周五下午。欲知详情,请查看jBPM社区日Wiki页或发邮件至dublin@jbpm.org

其次,对于那些缺乏耐心的读者,这儿有一个已经手把手地解释如何使用它来构建活动和开始运行它的PVM手册

最后,这儿还有一篇InfoQ文章“过程组件模型:下一代工作流?”,它已于最近发布,给出了关于这一主题的更多背景资料。

查看英文原文:Tom Baeyens on the Process Virtual Machine

译者 胡键 热心开源技术,《开源技术选型手册》作者,《SOA实践指南》译者。目前致力于Groovy/Grails的研究和推广。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。