BPEL同类产品分析报告V10ActiveBPEL.docx

上传人:b****6 文档编号:3646238 上传时间:2022-11-24 格式:DOCX 页数:24 大小:539.64KB
下载 相关 举报
BPEL同类产品分析报告V10ActiveBPEL.docx_第1页
第1页 / 共24页
BPEL同类产品分析报告V10ActiveBPEL.docx_第2页
第2页 / 共24页
BPEL同类产品分析报告V10ActiveBPEL.docx_第3页
第3页 / 共24页
BPEL同类产品分析报告V10ActiveBPEL.docx_第4页
第4页 / 共24页
BPEL同类产品分析报告V10ActiveBPEL.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

BPEL同类产品分析报告V10ActiveBPEL.docx

《BPEL同类产品分析报告V10ActiveBPEL.docx》由会员分享,可在线阅读,更多相关《BPEL同类产品分析报告V10ActiveBPEL.docx(24页珍藏版)》请在冰豆网上搜索。

BPEL同类产品分析报告V10ActiveBPEL.docx

BPEL同类产品分析报告V10ActiveBPEL

ActiveBPEL产品分析报告

V1.0

 

中创软件商用中间件股份有限公司

2009.12.31

第1章ActiveBPEL产品概况

本章简单介绍ActiveBPEL产品情况,具体细节在下面各章节进行描述。

1.1.产品版本

ActiveBPELEngineV5.0(开源版本)、ActiveVOSDesignerV7.0(商业版本)。

1.2.产品组成

⏹ActiveBPEL引擎

⏹ActiveBPEL设计器(ActiveVOS)

⏹ActiveBPEL管理工具

1.2.1.引擎

1.2.1.1.遵循规范

表格11ActiveBPEL产品遵循的规范列表

组织或联盟

规范名称

版本

OASIS

WSBPEL

1.1、2.0

WSHumanTask

1.0

BPEL4People

1.0

W3C

WSDL

1.1、1.2

SOAP

1.1、1.2

XML

1.0

WS-Addressing

1.0

XPATH

1.0、2.0

1.2.1.2.开源情况

⏹ActiveBPEL引擎开源,但很少维护。

⏹ActiveBPEL设计器不开源,商业化。

⏹ActiveBPEL提供一个开源版本的管理工具。

1.2.1.3.授权许可

GPLV2。

ActiveBPEL,LLCanditsparentorganization,ActiveEndpoints,Inc.,distributetheActiveBPELenginetechnologyundertheGNUGeneralPublicLicenseversion2licenseGPLv2.YoucanusetheActiveBPELengineunderGPLv2bydownloadingitfromthiswebsite.Alternatively,youcanacquireaCommercialLicensetoActiveEndpoints'ActiveVOSEnterpriseproductbycontactingActiveEndpoints.

ActiveBPELEnginetechnologyisofferedfreeofcharge,ActiveBPEL,LLCdoesnottakeonanyliabilityforperformanceorintellectualpropertymattersforthissoftware.

GPL授予程序接受人以下权利:

●以任何目的运行此程序的自由;

●以学习程序工作机理为目的,对程序进行修改的自由(能得到源代码是前提);

●再发行复制件的自由;

●改进此程序,并公开发布改进的自由(能得到源代码是前提)。

根据GPLv2的相关规定:

只要这种修改文本在整体上或者其某个部分来源于遵循GPL的程序,该修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制。

1.2.2.设计器

1.2.2.1.形态

ActiveVOSDesigner,具有eclipse插件,支持eclipse3.4。

1.2.2.2.开源情况

不开源,商业化,可以下载试用版。

1.2.2.3.授权许可

不能进行二次开发。

1.2.3.管理工具

1.2.3.1.采用框架

JSP。

1.2.3.2.开源情况

可以获取源码。

1.2.3.3.授权许可

GPLV2。

第2章ActiveBPEL引擎

2.1.引擎架构

图表21ActiveBPEL引擎架构图

ActiveBPEL引擎的逻辑视图为:

图表22ActiveBPEL引擎逻辑视图

⏹接口层

接口层是ActiveBPEL的入口点,它依赖于实现层和模型层。

管理接口提供了用户进行管理监控的接口;调试接口提供了远程调试BPEL流程的接口;部署接口提供了用户部署一个BPEL流程的入口;启动接口提供了一个Servlet,配置在web容器的web.xml中,在应用启动时启动BPEL引擎。

⏹实现层

Axis2集成模块利用axis实现消息的发送与接收;BPEL引擎实现了纯BPEL规范,并在expression和bsf方面做了扩展;B4P引擎实现了B4P规范,包括WS-HT和Bpel4People;BPELAdmin模块实现了BPEL的管理监控,其中包括JSP中需要使用的JSP;持久层扩展了XMLDB和Tamino两个xml数据库支持。

⏹模型层

Active模型层主要包括了BPEL的模型和WS扩展的模型。

2.2.引擎功能

2.2.1.规范的实现

表格21BPEL2.0元素的实现情况

完全支持

部分支持

未实现

扩展活动

备注

QueryhandlingforautomaticallycreatingXPathforCopyTotargetsandfordisablingthebpel:

selectionFailurefault

Queryhandling包括创建XPath和禁用SelectionFailure

Suspend,break,andcontinueactivities

suspend:

挂起流程,用于事件捕捉异常;

break:

从一个while跳出,执行下一个活动

continue:

跳出while本次循环,执行while的下次循环

Processlevelcompensation/termination

把这两个标签设置为yes,可以添加补偿和终止活动

Loopbacklinks

根据的WS-BPEL2.0的链接执行规则,一个链向已完成活动的链接不能创建一个控制循环。

此外,不能交叉连接,如在活动中的一个结构化活动的边界,但是,ActiveVOS的Loopbacklinks扩展,使得上述情况在某些条件下是允许的。

Implicitscopevariables

用于使用映射数据简化掉assign活动和流程范围内的变量

ActiveBPEL引擎的最新版本,完全支持WS-BPEL2.0规范(来自网上资料)。

2.2.2.流程部署

2.2.2.1.是否支持热部署

支持热部署。

2.2.2.2.部署监听器类

AeEngineLifecycleWrapper.doStart()

|--doInitialDeployments();//初始化部署,并创建scanner实例

|--startBpelEngine();

|--startScanning();//mFileHandler.startScanning();即调用AeDeploymentFileHandler.startScanning()

AeDeploymentFileHandler.startScanning()

|--getScanner().start();//即调用AeDirectoryScanner.stat()方法,start方法内启动一个线程处理流程部署。

监听器类是在AeDirectoryScanner.stat()方法内创建了一个线程进行监听。

2.2.2.3.热部署实现逻辑

图表23ActiveBPEL引擎热部署序列图

AeDirectoryScanner:

:

scanImpl()监听bpr目录,一旦目录发生变化就调用AeDeploymentFileHandler:

:

onChange(AeScanEvent)方法,然后onChange()调用一系列的handleAdd方法由handleAddInternal(URL,Boolean,AeDeploymentLogger)方法调用AeDeploymentHandler:

:

deploy(IAeDeploymentContainer)方法,此方法通过doBpelDeployment(IAeDeploymentContainer)分别调用deployCatalog()、deployBpel()和deployWebService()来实现Catalog部署、bpel部署和WebService服务部署,以上三个函数的参数都是IAeDeploymentContainer。

2.2.3.流程运行

2.2.3.1.流程实例创建

图表24ActiveBPEL流程实例创建序列图

引擎AeBpelEngine首先把IAeProcessPlan传递给AePersistentProcessManager

其调用AeProcessStateStorage.createProcess(planId,processName),通过AeSQLProcessStateStorageProvider在表aeprocess中创建流程实例,并返回流程实例processId给AeProcessStateStorage,然后再由AeProcessStateStorage把流程实例processId返回给AePersistentProcessManager,由AePersistentProcessManager最后把流程实例AeBusinessProcess返回给AeBpelEngine,流程实例创建完毕。

2.2.3.2.流程实例运行

图表25ActiveBPEL流程实例运行序列图

流程实例创建好以后,流程实例AeBusinessProcess调用其方法executeObject()中的getExecutionQueue().add(AeBusinessProcess)把自己添加到执行队列AeExecutionQueue,通过AeBusinessProcess.getActivity()取出流程实例的AeActivitySequenceImpl活动,该活动的子活动有AeActivityReceiveImpl、AeActivityAssignImpl、AeActivityInvokeImpl、AeActivityAssignImpl、AeActivityReplyImpl活动,这样AeBusinessProcess通过add()方法不断的把活动压入执行队列AeExecutionQueue中,执行队列就不断取出这些活动执行,活动执行完了调用notifyParentOfCompleti()报告自己的父活动自己已执行完,接到通知后,就调用queueNextChild()把下一个子活动传递给AeBusinessProcess,然后AeBusinessProcess调用add()方法把活动放入执行队列,这样往复循环知道所有流程实例活动都执行完,流行实例也执行完毕了。

2.2.4.数据持久化

2.2.4.1.支持的数据库类型

Derby、MySQL、Oracle、SQLServer、DB2。

2.2.4.2.持久化框架

mons.dbutils.QueryRunner

2.2.4.3.表结构

表格22ActiveBPEL表结构说明

表名

设计意图

aealarm

存储pick活动需要警告信息

aeattachment

存储BLOB的附件

aeb4ptask

保持一个任务实例的状态,任务主要状态有未声明,声明,启动,完成等

aeb4ptaskacl

此表包含任务的访问控制列表,Type列0值代表用户,1值代表组

aecoordination

aecounter

计数器,保证流程实例ID、日志实体ID、QueuedReceiveId不重复

aemetainfo

元数据,存储数据库类型和版本

aeprocess

保存流程实例的相关信息,其中ProcessState列保存流程实例的状态(如运行,启动,完成等)

aeprocessattachment

包含流程中任何对变量的附件

aeprocessjournal

存储流程日志实体(共有19种,详情见附五),用于流程恢复

aeprocesslog

流程日志,存储流程运行轨迹

aequeuedreceive

存储接收到的消息

aetransmissiontracker

aeurnvalues

存储URN与URL之间的对应关系

aevariable

与流程相关的变量数据(如processId,locationId,VersionNumber)

QueryRunner结合SQL语句完成持久化的工作。

提供了83条预定义的SQL语句。

2.2.5.流程恢复

图表26ActiveBPEL流程恢复序列图

2.2.6.补偿处理

第三方服务的方法非正常结束如System.exit

(1),服务器异常结束,而且不在aeprocess删掉相应的记录,服务器无法启动

⏹补偿操作是特别的操作,所以对它的调用有一些限制:

1、当作用域正常完成(completesnormally)后它的补偿操作才会起作用,否则调用结果等同于调用

2、在所属于scope的直接上层scope的故障处理器(faulthandler)中调用;

3、在所属于scope的直接上层scope的补偿处理器(compensationHandler)中调用。

图表27ScopeC顺利完成时的补偿

如图2.6所示如果ScopeC不能正常完成(completesnormally)则会执行FaultHandler,这样补偿操作就不会起作用;ScopeD不能正常完成,就执行上一层域ScopeC中定义的补偿操作。

图表29ScopeC不能顺利完成时的补偿

如图2-7所示当ScopeC不能完成执行了FaultHandler之后,ScopeD的不能成功执行,会引起ScopeA的补偿操作。

2.2.7.故障处理

Throw活动的主要属性有错误名称和错误变量。

错误名称又分为流程错误,标准错误,用户自定义错误。

标准错误如下表,所有的这些标准错误在WS-BPEL命名空间下,前缀是bpel对应的URI:

urn:

oasis:

names:

tc:

wsbpel:

2.0:

process:

executable

表格23ActiveBPEL标准错误一览表

错误名称

描述

conflictingReceive

当一个以上进站消息活动同时用到了相同的合作伙伴链接,端口类型,操作和相关集合时抛出此异常。

conflictingRequest

当一个以上的进站消息活动是开放给同一合作伙伴链接,操作和信息交流时抛出此异常

correlationViolation

当在,或中执行的消息上下文不符合规定的相关信息时抛出此异常。

joinFailure

当一个活动的joincondition的值为false,而suppresJoinFailure的属性值为yes时,抛出次异常

mismatchedAssignmentFailure

当不兼容的类型或不兼容的XML信息集结构出现在活动中时抛出此异常。

missingReply

当一个进站消息活动已经被执行并且流程实例或作用域内的实例已经结束而相应的活动还没有被执行时抛出此异常。

错误变量用来保存错误信息,在收到进站错误信息后,在执行catch域内的活动之前,错误处理器将进站错误信息赋值给错误变量,错误信息是定义在错误处理器内的,所以在错误处理器外是无法访问的。

图表210ScopeC不能顺利完成时的FaultHandler

如表2-8所示,中间感叹号节点为faulthandler节点,该节点中可以包含catch也可以包含catchall。

Catch可以捕捉某一特定错误,catchall可以捕捉所有的错误,此图中为catchall。

捕捉到错误之后,引擎按照2-9所示时序图做相应处理。

图表211故障处理时序图

如果一个活动出现异常,它会调用自己的objectCompletedWithFault()来执行异常,如果异常处理是多个活动协同完成的,所有活动顺序进栈,进站后通过调((IAeExecutableBpelObject)aObject.getParent()).childCompleteWithFault()方法找到父节点继续进站直至最后一个活动节点AeActivityScopeImpl,然后近栈的活动出栈依次执行。

2.2.8.数据安全

BPEL基于WebService实现,这就涉及到Web数据安全,引擎使用哪种技术实现安全控制。

2.2.9.引擎扩展

引擎提供了那些扩展功能来满足业务需要。

2.3.引擎性能

2.3.1.测试数据

数据库

MySQL5.0

应用服务器

Tomcat5.0

测试流程

五个节点(receive、assign、invoke、assign、reply)

第三方服务

部署在tomcat5.0上的大小写转换服务

2.3.2.测试结果

1个并发,连续100次发起流程,运行时间11593ms。

10个并发,连续10次发起流程,运行时间319050ms,成功执行95次,失败5次。

第3章ActiveBPEL设计器

3.1.流程设计器概况

 

3.2.流程设计器功能

3.2.1.流程设计

3.2.2.流程部署

3.2.3.流程导入导出

3.2.4.断点调试

第4章ActiveBPEL管理工具

4.1.Web服务管理

4.2.流程管理

4.2.1.流程定义管理

4.2.1.1.流程定义查看

4.2.1.2.流程定义部署

4.2.1.3.流程定义禁用

4.2.1.4.流程定义激活

4.2.1.5.流程定义卸载

4.2.2.流程实例管理

4.2.2.1.流程实例查看

4.2.2.2.流程实例运行图查看

4.2.2.3.流程实例历史图查看

4.3.流程分析

4.3.1.流程数据分析

4.3.1.1.流程定义统计

4.3.1.2.流程实例统计

4.3.2.业务数据分析

4.4.日志管理

4.4.1.引擎启动日志

4.4.2.部署日志

4.4.3.日志导出

第5章产品特征

5.1.优势

5.1.1.引擎

⏹支持或部分支持大多数BPEL2.0元素。

⏹实现BPEL4People及WS-HumanTask规范。

⏹代码质量相对可靠。

⏹使用Apache子项目DB/UtilAPI(QueryRunner)进行数据库持久化。

⏹强大的流程恢复功能(BPEL规范)。

⏹支持补偿处理和故障处理(BPEL规范)。

5.1.2.设计器

⏹功能强大并且易用,提供了图形化开发和调试功能(可为我们的产品提供参考)。

5.1.3.管理工具

⏹提供了基本的管理功能,如日志查看,服务、流程管理,流程实例管理及流程图查看等(可为我们的产品提供参考)。

5.2.劣势

5.2.1.产品源码及授权许可

⏹引擎开源。

⏹管理工具开源。

⏹设计器不开源,商业化。

⏹授权许可使用GPLV2。

由于ActiveBPEL具有以上特征,所以基于ODE进行二次开发需要有所顾虑,开源的代码只能供参考,不能基于它来进行二次开发及产品发版等。

附一ActiveBPEL引擎调试环境搭建

附二ActiveBPEL引擎源码模块介绍

附三ActiveBPEL流程定义介绍

1.流程定义形式

.bpr包。

2.组成部分介绍

bpr文件包括如下信息:

1.   bpel文件夹里有bpel流程定义文件(.bpel)

2.  wsdl文件夹里有bpel流程中使用的wsdl文件(.wsdl)

3.   resources文件夹包含wsdl中使用的本地XSD文件和XSL文件

4.   META-INF文件夹包含程部署描述符(.pdd文件)、catalog.xml文件、MANIFEST.MF文件

下面是一个流程示例:

图表01ActiveBPEL流程定义bpr包结构图

图表02ActiveVOS设计器工程结构图

附四ActiveBPEL数据库配置指南

⏹ActiveBPEL引擎MySQL数据库安装 :

1装数据库和驱动

首先安装数据库MySQL(如Mysql5.0.18)和相关的JDBC(如mysql-connector-java-5.0.3-bin.jar)驱动,并且保证有权限做数据库操作。

并且要把文件拷贝到${CATALINA_HOME}/common/lib下。

2建库建表

启动安装好的数据库,执行\activebpel\dist\sql\activebpel\ddl目录下的ActiveBPEL_MySQL.sql语句,在数据库中创建名为ActiveBPEL的数据库,同时创建基本表。

3设置数据源

打开${CATALINA_HOME}\conf目录下的tomcat-users.xml文件,增加一个“admin”的角色,,然后增加一个角色为admin的新用户。

增加数据源的操作如下:

3.1重启Tomcat,并访问它的管理页http:

//localhost:

8080/admin/ 

3.2输入用户名和密码

3.3按照以下顺序点击左侧的Frame,并找到如下路径下的DataSource,

Server\Service\Host\Context(/active-bpel)\Resources\DataSources

3.4从thelistofDataSourceActions中选择"CreateNewDataSource"

3.5按如下数值配置DataSource信息:

              

JNDI=jdbc/ActiveBPELDB

DataSourceURL=jdbc:

mysql:

//127.0.0.1:

3306/ActiveBPEL

JDBCDriverClass=org.gjt.mm.mysql.Driver

UserName=root

Password=admin

3.6按保存按钮,并一定注意要提交(上方有一个Commit按钮)。

4修改aeEngineconfig.xml文件

将activebpel/dist/conf下的aeEngineConfig-Persistent.xml文件拷贝到%CATILINA_HOME%\bpr目录下,并且重命名为aeEngineconfig.xml,原来的aeEngineconfig.xml文件则被覆盖掉。

  并在该文件中修改”databas

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1