`
kungstriving
  • 浏览: 131374 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Apache ODE研究一(ODE架构介绍)

    博客分类:
  • BPEL
阅读更多

这篇文章大部分内容翻译自ODE主页http://ode.apache.org/

最后一部分,对于使用ODE+Tempo等其他第三方工具构建业务流程执行系统做了一个简单叙述。

 

Apache ODE引擎架构设计

1.  编写目的

该文档描述Apache ODEOrchestra Director Engine)引擎的系统架构,对于后期的系统扩展做好准备。

下面的部分将从较高层次介绍ODE的系统整体架构,首先将先对ODE的设计目标进行一个简单描述,然后再介绍各种ODE组件以及它们之间是如何交互的,最后是对本项目BPEL引擎模块的一个初步设想。

2.  ODE的设计目标

ODE的开发目标是建立一个可靠的、轻型的、可嵌入的能够管理长时间运行流程的组件,该流程由BPEL流程描述语言定义。开发核心是创建一些小模块,这些小模块具有很小的互相的依赖性,通过很容易的组装这些组件可以构成一个完整的BPM系统。

3.  模块

ODE系统架构的关键模块包括ODE BPEL编译器、ODE BPEL运行时、ODE数据访问对象(DAOs)、ODE集成层(ILs)和用户工具。下面的这张图从较高层次上表示了这些不同组件之间的关系。

ODE 架构

 

1 ODE模块关系图

这个整体关系可以这样认为:“编译器将BPEL文档转化成为可以被BPEL运行时库执行的格式,执行时通过一种可靠的方式进行,它依赖于一个持久化方式(通过DAOs);运行时库在集成层的上下文环境总执行,该集成层将引擎与外界更宽广的执行环境相连接”。

3.1 ODE BPEL编译器 

ODE BPEL编译器负责将BPEL源文件(BPEL流程描述文件、WSDL文件以及Schemas)转化成一个编译好的、适合于引擎执行的流程表示形式。编译器的输出不是一个“好的”编译好的表示形式,就是一系列的错误信息,表明该源文件的问题。

编译好的BPEL流程表示是一个对象模型,该模型在结构上和底层的BPEL流程文档是一样的。然而,编译好的流程表示已经解析了大量BPEL文档中的命名引用(例如变量名),将所需要的WSDL文件以及类型信息,还有产生的大量的结构(像default compensation handlers)内化(internalized)。该编译好的文件(一个扩展名为.cbp的文件)是唯一一个BPEL运行时所需的文件。

3.2 ODE BPEL引擎运行时

ODE BPEL运行时就是bpel-runtime模块,提供对于执行编译好的BPEL流程所需的功能。运行时模块通过提供对于各种不同BPEL结构的实现,来执行流程运行的工作。运行时模块同时还实现了一些必须的逻辑上的功能,像决定何时一个新的实例需要被创建,以及一个新到来的message应该被发送到那个实例中等。最终,运行时模块还实现了流程管理API,这些API使用外层用户用来和流程进行交互的。

为了达到在不可靠环境下,可靠地执行流程的目的,运行时模块依赖于DAOs模块来提供相关的持久化功能。对于这些DAOs的实现是可以被定制的,但是一般情况下都是由一个事务关系型数据库来充当的。关于DAOs的更多细节将在下一小节中详细叙述。

运行时模块对于BPEL结构的实现是通过ODEJava Concurrent ObjectsJacob)框架来实现的。Jacob提供了一个应用级的并发机制(它并不是依赖于线程)同时包括一个透明的处理流程中断和持久化流程状态的机制。JacobJava对于ACTORS[Agha]并行模型实现的一个很大的组成部分,同时还有很多的流程代数学特征,像pi的演算。本质上,Jacob提供了一个持久虚拟机来执行BPEL结构。

3.3 ODE 数据访问对象(DAOs

ODE 的数据访问对象(DAOs)处于BPEL运行时模块与底层数据源交互过程的中间位置。一般情况下,该数据源是一个JDBC的关系型数据库:目前,这个DAOs是通过OpenJPA数据访问库(Data access library)来实现的。你也可以创建一个特定的DAO实现,它使用另外一种不是JDBC的方式的机制来达成数据持久化目的,但是在这里并不提供这样的实现。BPEL引擎的运行时要求DAO对象能够处理以下的这些持久化事件:

1)        活动的实例——跟踪哪些实例已经被创建

2)        消息路由——哪个实例在等待哪个消息

3)        变量——对于每一个实例的BPEL流程变量的值

4)        伙伴链接——对于每个实例的BPEL伙伴链接的值

5)        流程执行状态——Jacob的持久化虚拟机的连续状态

关于OpenJPA/JDBC DAO实现,它们用来实现上面这些功能的关系结构在图1中已经表明。

3.4 ODE集成层

ODE BPEL引擎运行时不能在一个真空中存在:它自己是无法影响任何与外部世界的交互的。关于这一点,它是依赖于ODE的集成层(ILs)。在执行环境中集成层是嵌入在运行时中的。例如,目前ODE提供对于AXIS2JBI的集成层。集成层的最基础的功能是提供跟运行时的一个通信通道(communication channels)。AXIS2的集成层通过使用AXIS2的库来达到这一目的,这样可以使得运行时通过Web Service调用进行通信。JBI的集成层通过将运行时绑定到JBI的消息总线上来达到这一目的。

此外对于通信,一个集成层通过一个线程调度机制提供运行时,同时管理运行时的生存周期(例如,配置和启动运行时)。

4. CSSP引擎设计初步设想

如果采用Apache ODE引擎作为本项目的引擎原型系统进行开发,主要的工作将包括以下几个部分:

1)        对于BPEL4People实现的集成

根据目前了解情况Intalio公司的Tempo工作流框架实现了B4P(同时还包括BPELXformsWebService等)规范,而且已经加入到了他们公司的BPMS产品中,该产品的BPEL4WS的实现就是ODE,所以证明了ODE+Tempo集成的可行性。但该产品并没有完全开源。但是Tempo部分完全开源,可以获得其源代码。但是针对BPEL4People的设计器目前还没有看到,所以该部分的设计器的实现将是很大的工作。

ActiveBPEL的源代码组织结构上来看,B4W的实现和B4P的实现时完全分开的,也就是说一个流程要么是B4W的,要么是B4P的,不同的流程会分发到不同的实现中去执行。我们也可以学习这种方式,设计好的流程根据其设计种类,其执行实现也不同,即就是B4W的通过ODE来实现,B4P的通过Tempo来实现。这样或许可以解决BPEL4People的集成问题。

2)        对于Eclipse-BPEL设计器的改造

首先是对于用户可用性的改造,包括汉化、活动名称的改变、一些BPEL术语的解释等,这些还都是表面活动。然后,就是与流程部署的集成,可以在设计完成之后,直接就可以部署该流程;与引擎生存周期管理的集成,像是引擎的启动、停止、重启等操作。最后,还需要加入对于执行的流程实例的监控,包括可以重启某个实例、停止实例执行、检查实例的中间执行状态等。

对于流程设计人员,该设计器将是其最主要的工作平台,但是不光是一个设计平台,它最终是一个All-In-One的一个软件,包括了以上所提到的各个部分。

3)        对于服务动态绑定模块的扩展

该部分的主要工作将在引擎中进行。目前,我的解决方案是:在流程部署描述符中添加特定标签,来指示该流程是否需要动态绑定;动态绑定的流程部署的时候,可以不用WSDL文件,只需要在部署描述文件中描述该WSDLurl便可以,流程在执行过程中再获取该WSDL然后发送SOAP消息。

4)        对于分布式流程执行的探索研究

该部分目前还只是术语探索阶段,暂时没有解决方案。

ODE的优势:

1)        开源,文档相对较为齐全

2)        Eclipse-BPEL设计器、TempoB4P的一个实现)结合相对比较紧密,集成难度相对较小

Eclipse-BPELSVN上来看,它的下一版本将会与ODE集成,设计完的流程可以直接部署到ODE引擎中,还有就是IBMDeveloperworks网站上对于BPEL流程设计的教程也是通过ODE+EclipseBPEl的方式来进行描述的。

还有就是ODE,以及Tempo最初都是源于同一个公司Intalio,而且该公司也已经发布了一个ODE+Tempo+BPMN-modeler的产品。

3)        JBI的集成较为简单,因为ODE的实现就考虑到了JBI集成问题。

ODE的劣势:

 

  • 大小: 13.9 KB
6
0
分享到:
评论
2 楼 kungstriving 2010-01-27  
zuowangxi 写道
你好!你的这篇文章确实不错!
但是不是很详细,我有很多不懂,可以请教你不?
“AXIS2的集成层通过使用AXIS2的库来达到这一目的,这样可以使得运行时通过Web Service调用进行通信。”这句话怎么理解?
也就是怎么运行时通过Web Service进行调用通信呢????
希望得到您的回复,谢谢!


您好,谢谢你的赞赏
您说的这句话我可能没有说的太明白,就是说ODE与外部的Web服务进行通信的时候,是使用现成的Axis2的类库进行的,是由ODE调用Axis2的功能发送SOAP消息,至于发送到哪个URL,发送什么样的参数,则由ODE通过BPEL语言定义文件指定。
不知道这样说明白没?^_^
1 楼 zuowangxi 2010-01-22  
你好!你的这篇文章确实不错!
但是不是很详细,我有很多不懂,可以请教你不?
“AXIS2的集成层通过使用AXIS2的库来达到这一目的,这样可以使得运行时通过Web Service调用进行通信。”这句话怎么理解?
也就是怎么运行时通过Web Service进行调用通信呢????
希望得到您的回复,谢谢!

相关推荐

    Apache ODE - 1.架构介绍

    ### Apache ODE 架构详解 #### 一、概述 Apache ODE (Orchestration Director Engine) 是一款基于BPEL (Business Process Execution Language) 的开源业务流程管理系统。其核心功能在于提供一个轻量级、可扩展且...

    apache ode 入门

    2. **Apache ODE架构** Apache ODE由多个组件构成,包括: - **部署单元(Deployment Unit)**:包含BPEL流程的定义。 - **引擎(Engine)**:解析并执行BPEL流程。 - **存储库(Repository)**:存储流程实例、...

    Apache ode介绍

    ### Apache ODE 详细介绍 #### 一、Apache ODE 概述 Apache ODE (Orchestration Director Engine) 是一款基于 Java 的开源 BPEL (Business Process Execution Language) 引擎,它诞生于 2007 年 7 月 18 日,作为 ...

    bpel入门实例(组合加减法运算)

    Apache ODE(OpenESB Decoupled Engine)是一个开源的BPEL执行引擎,它实现了WS-BPEL 2.0规范,为开发者提供了实现和执行BPEL流程的平台。 Apache CXF则是一个全面的服务开发框架,支持多种Web服务标准,如SOAP、...

    VxBPEL_ODE:增强可变性的服务组合引擎

    本文中介绍的VxBPEL_ODE引擎,是通过扩展广受认可的开源BPEL引擎Apache ODE实现的,它支持VxBPEL服务组合的执行。开发者讨论了开发VxBPEL_ODE时的关键问题,并通过三个现实生活中服务组合的例子来评估和比较它与先前...

    BPEL整合WEBService服务的一个完整案例

    - **技术框架**:Eclipse-BPEL 和 Apache ODE - **服务器**:Tomcat 6.0 - **JDK**:1.6 - **服务实现**:Apache CXF 2.2.5 #### 创建服务步骤详解 1. **创建Java项目与接口**: 首先,创建一个名为“AddService...

    基于C++的BPEL流程引擎原型的设计与实现.pdf

    论文首先对Apache ODE的JACOB组件进行了深入研究,分析了其处理并发活动和调度控制的方法。并发活动的管理是流程引擎设计的关键,因为它涉及多个活动的同步和协调。论文详细描述了JACOB是如何通过通信通道机制来处理...

    ESB产品说明

    ServiceMix集成了许多优秀的开源项目,如Apache ActiveMQ、Apache CXF、Apache Camel、Apache ODE及Apache Geronimo等,这使得用户可以轻松构建复杂的集成逻辑。LogicBlaze公司是ServiceMix的主要贡献者之一,同时...

    ofbiz 4.0开发文档

    文档还会涵盖OFBiz的工作流系统,它基于Apache ODE(OpenDESL)。理解工作流定义语言(WSDL)和BPEL(Business Process Execution Language)对于管理复杂的业务流程至关重要。开发者将学会如何定义、部署和监控工作...

    代码博客:Portal paracriaçãode blogs

    总的来说,"代码博客"项目是一个用Java开发的博客平台,它提供了用户友好的博客创建和管理功能,其源代码可能包含了完整的前后端架构,适合开发者学习和二次开发。通过解压并研究"codeblog-master",我们可以深入...

    介绍SOA ESB Mule的企业服务总线PPT

    - **BPEL实现**:Apache ODE是基于Java的开源BPEL引擎,能够执行BPEL描述的业务流程,实现业务流程自动化。它支持长期运行和短期运行的过程,采用Apache 2.0许可证。 #### 四、总结 Mule作为一个强大的ESB平台,为...

    基于C++的BPEL流程引擎原型的设计与实现.docx

    本文作者在深入研究了Apache ODE(一个流行的BPEL流程引擎)的基础上,对其实现机制进行了细致的分析,特别是关于如何处理并发活动以及调度控制的问题。 #### 2. 技术选型 - **C++语言选择**:鉴于C++在性能方面的...

    BPEL商业流程建模

    **BPEL商业流程建模**是面向...此外,了解相关的工具和技术,如Eclipse BPEL Designer或Apache ODE等,也有助于提升开发效率和流程质量。通过不断的实践和学习,可以掌握创建高效、灵活且可维护的BPEL流程的关键技能。

    BPEL 1.0 vs 2.0

    1. **源码**: 虽然BPEL本身是一种规范,而不是源码,但可能指的是用于实现BPEL引擎的开源代码库,如Apache ODE或Oracle BPEL PM,这些引擎可以解析并执行BPEL流程。 2. **工具**: BPEL的开发和管理通常依赖于特定的...

    SOA培训-intalioBPMS.pptx

    **SOA(面向服务架构)**是IT领域中一种重要的设计模式,它强调将复杂的系统分解为一组可重用的服务,这些服务具有清晰的边界、独立的功能,并通过标准的接口进行交互。在SOA中,服务是业务能力的体现,它们可以被...

    BPEL相关集 bpel相关集合

    ODE(Orchestrations for the DEployment Environment)是Apache提供的一款开源BPEL引擎,它实现了BPEL规范,提供了部署和执行BPEL流程的环境。在ODE中,相关集合的管理和使用是其核心功能之一,它为开发者提供了...

    BPEL Execution Engine

    BPEL执行引擎有多种实现,如Oracle's BPEL PM(Process Manager)、IBM WebSphere Process Server的BPEL引擎以及Apache ODE(OpenESB Data Engine)。这些实现都提供了API和工具集,使得开发者能够集成BPEL流程到...

    bpel思想详解-----

    2. **创建流程定义**:使用BPEL编辑器(如Apache ODE或Oracle BPEL PM)编写XML流程定义文件,声明变量、活动和合作伙伴链接。 3. **实现服务交互**:配置活动以调用或响应外部服务,定义消息结构和转换规则。 4. ...

    BPEL流程编排发布实例

    开发BPEL流程通常需要使用专门的工具,如Oracle BPEL Process Manager、Apache ODE或IBM WebSphere Lombardi Edition等。这些工具提供了图形化界面,便于创建、测试和部署BPEL流程。 5. **发布与执行** 创建完...

    BPM Essentials with Open Source

    如JBoss jBPM、ActiveBPEL、Intalio/Apache ODE等开源项目,在功能与性能上已达到甚至超越了部分商业产品。 ### BPM与SOA的融合 BPM与SOA的结合被视为企业信息化建设的未来趋势。SOA强调服务的封装与重用,而BPM则...

Global site tag (gtag.js) - Google Analytics