您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 使用BPEL 构建 Web 服务网络
使用BPEL构建Web服务网络【2005-12-2709:47】【】【Oracle】受不断成熟的Web服务标准的鼓舞,越来越多的组织正在协作环境中使用Web服务。BPEL正快速成为为实现企业间协作而编排这些Web服务的平台。BPEL为构建在线市场或协作网络的公司提供了引人瞩目的好处,即基于标准的方法和松散耦合的流程集成。而Web服务提供的激动人心的新功能却隐藏着某些风险。在许多情况下,如果在设计时未解决某些技术和管理难题,则合作伙伴关系将会破裂或集成成本飙升:·合作伙伴必须事先进行充分的协商,约定根据特定标准开展业务。传输协议、交互目的、消息格式以及业务约束必须实现清晰地通信。·连接网络必须是一个简单的过程;协作网络主要通过不断壮大取得成功。·用户必须在运行时轻松地找到业务服务,否则将在很大程度上无法实现面向服务体系结构(SOA)这一承诺。(服务信息库在这方面很有用。)如果开发人员无法轻松地找到和重用服务,则这些服务本质上就算不存在。·合作伙伴应能够实时监控Web服务。最终用户应能跟踪特定订单的进度,并且贸易合作伙伴应能诊断业务流程中的特定瓶颈。如果协作网络在托管环境中运行,这些难题将变得更为棘手。在该模型中,合作伙伴将他们原有应用程序提供的功能公开到Web服务中,并将此Web服务发布到集中的信息库中。主机负责编排复杂的业务流程,后者反过来利用合作伙伴的Web服务。在BPEL指南的这一部分中,我将把欧洲航天局(ESA)项目(来自Spacebels.a.的小组参与了该项目)作为一个案例分析,介绍与这些挑战相关的体系结构注意事项。此外,我还将介绍该项目如何利用BPEL作用域、BPEL域和OracleBPEL流程管理器API构建一个“易于合作伙伴使用的”协作网络。ESA网络概述ESA已着手制定一个战略性计划,旨在完全基于开放标准创建一个BPEL驱动的服务提供商协作网络。该网络称作服务支持环境(SSE)网络,它组合第三方的地球观测(EO)和地理信息系统(GIS)服务,提供增值的复合型服务。SSE是一个不断壮大的网络,目前包括遍布9个不同国家/地区的20多个合作伙伴。如图1所示,SSE是一个支持BPEL的网络的简单实现。ESA充当中介,它使用各种Web服务标准(如SOAP、WSDL、WS-Addressing、WS-Inspection等)为不同合作伙伴之间基于流程的协作提供支持。该网络在集中星型拓扑环境中运行:服务提供商使用OracleBPELDesigner将不同类型的地球观测和GIS服务集中到一个信息库中,从而创建了一个不断扩大的服务目录。图1SSE体系结构SSE提供执行以下任务所必需的基础架构·承载和管理充当可用服务目录的中央信息库·在中央目录内部注册和搜索服务·在OracleBPEL引擎内部执行短期和长期的业务流程·使合作伙伴能够使用OracleBPEL流程管理器控制台监控Web服务的执行最终用户通过浏览可用服务目录请求特定服务。SSE根据请求调用相关的业务流程。该业务流程调用Web服务(运行在服务提供商处)来完成请求。SSE支持同步和异步的交互模型。ESA广泛使用OracleBPEL流程管理器API来为提供商和最终用户提供最大程度的灵活性和易用性体验。设计Web服务网络开放标准正在不断改变集成的规则。BPEL提供了一个以流程为中心的跨企业集成方法,因此可以使用BPEL流程流定义合作伙伴集成。SOA与BPEL的这一组合为构建松散耦合的协作网络提供了一个前所未有的良机。集中星型(SSE采用的方法)是一个广泛使用的网络拓扑,组织通过它与各种合作伙伴建立连接。网络也可以采用单向对等模型。这种情况下,每个合作伙伴都为Web服务安全性和供应提供了一个平台。现在,我们来看网络设计的四个方面:·设置接口关系·简化合作伙伴支持·创建集中的服务注册表·为合作伙伴和最终用户提供自助监视功能设置接口关系。协作网络设计从定义参与规则开始。这些规则指定在业务流程中交换的消息、这些消息的交换顺序以及该消息的物理属性。要正确通信,所有合作伙伴都必须能够回答以下问题。·交互的目的—是请求报价还是订单?·消息格式-消息是如何编码的?·词汇—应如何构造消息,以便其他各方可以理解和处理它们?·业务约束-应在多长时间内响应请求?·通信渠道-是否应把消息加密?为帮助合作伙伴回答以上问题,ESA公布了一个接口控制文档来定义这些术语。本文档正式确定了在多个ESA赞助的项目中建立、改进和验证的技术集成规则。基于消息的SOAP(通过HTTP或HTTPS实现安全通信)是SSE服务器与服务提供商之间采用的通信协议。(对于本文档,我们将分析WS-Security的用法。)Web服务定义语言(WSDL)是唯一一个绑定了所有实体的接口协定;服务提供商必须创建一个WSDL文件,用于描述它的SOAP接口并使其他合作伙伴可以访问该接口。WSDL文件中包含的某些信息是固定的,但必须提供以下信息:·根据选定的交互模型(搜索、RFQ、订购)选择的操作·服务的物理位置·服务XSD模式的导入为便于服务、一致性和消息转换的比较,ESA要求使用XSD模式表示XML有效载荷。SSE还要求使用主XSLT文档来确保表示层中的一致性。必须按如下所示在每个服务中导入模板样式表:xsl:stylesheetversion=1.0xmlns:xsl=:oi=!--Importstatements--xsl:importhref=./SSE.xsl/!--ApplythetemplatefortherootelementfromSSEstandardtemplate--xsl:templatematch=/xsl:apply-imports//xsl:template...xsl:apply-imports使用从SSE样式表中导入的模板规则处理根节点。注册该服务时,服务提供商提供XML模式、WSDL和XSLT文件的URL。SSE强制使用文档样式的SOAP。该方法允许使用XML模式对输入服务和服务输出的数据进行详细的指定并验证传入和传出的消息。ESA采用的方法为打算构建一个合作伙伴数量有限的Web服务网络的公司提供了一个便捷解决方案。随着网络规模的增长,将需要引入新的消息格式、通信规则、安全性以及传输机制。简化合作伙伴的参与。任何网络的壮大都离不开合作伙伴的轻松参与。下列因素将对此过程产生很大的影响。·与集线器的集成-合作伙伴如何创建和提交他们的Web服务?集线器能否支持不同的传输协议?·流程管理-不同合作伙伴流程之间是否有清晰的界限?合作伙伴能否修改它的业务流程而不影响整个网络的可靠性?能否使用元数据定义即时生成流程?SSE通过降低对服务提供商的技术要求成功稳固了与其合作伙伴的联系。ESA通过分发合作伙伴连接软件、划分开发平台以及自动代表合作伙伴生成流程流实现了该目标。例如,为加快集成流程的速度,ESA分发了SSEToolbox,这是一个在SSE与服务提供商的现有系统间充当接口的免费工具包。基于SunJavaWebServicesDeveloperPack的SSEToolbox提供了一个支持各种后端集成机制(如FTP、文件交换、JDBC、调用JavaAPI、HTTP等)的XML脚本语言。它还自动生成注册服务所需的WSDL文件。不同的合作伙伴将多个服务提供给中央信息库。开发和部署环境的划分使合作伙伴间的更改互不影响。SSE通过在OracleBPEL流程管理器中使用BPEL域有效地利用了划分功能。BPEL域使开发人员或管理员能够将OracleBPEL流程管理器的单个实例划分为多个虚拟BPEL沙箱。BPEL域由一个ID标识,并由一个口令保护。当服务提供商在SSE上注册时,将调用OracleBPEL流程管理器API自动创建一个BPEL域保存服务定义文件。以下是一个createDomain方法示例:/***Createnewdomainspaceforaserviceprovidertoholdher/hisservicesworkflow*definitionsfilesin**@paramdomainNameTheIdtoidentifythedomain*@parampasswordThepasswordusedtologintothecorrespondingdomain*@exceptionRemoteExceptionSystemcommunicationerror*@exceptionWorkflowExceptionThrownifanyerrorhappensontheserverthatpreventthedelete**/publicvoidcreateDomain(StringdomainName,Stringpassword)throwsRemoteException,WorkflowException{if(ml.isDebugEnabled())ml.debug(EntercreateDomain(domain=+domainName+password=+password);/***checkifthebeingcreateddomainexist?*/try{Locatorlocator=newLocator(domainName,password);ml.info(Stopcreatingdomain:+domainName+becauseithasalreadyexisted.);thrownewWorkflowException(1019);}catch(com.oracle.bpel.client.ServerExceptione){;}try{//obtainthedomainadminpasswordfromthesystemconfigurationSSE.propertiesfileStringdomainAdminPassword=SystemConfigurationInfo.getProperty(WorkflowConstant.BPEL_DOMAIN_ADMIN_PASSWORD);ServerAuthauth=ServerAuthFactory.authenticate(domainAdminPassword,localhost);if(ml.isDebugEnabled())ml.debug(obtainauthenticationok);//Createserverobject...thisisourserviceinterface//Serverserver=newServer(auth);//DomainidisnewDomain,thepasswordismyPasswordif(ml.isDebugEnabled())ml.debug(createserverinstanceok);//MapdomainProperties=newHashMap();domainProperties.put(Configuration.DATASOURCE_JNDI,SystemConfigurationInfo.getProperty(CommonConstant.DEFAULT_BPELDOMAIN_DS_JNDI));domainProperties.put(Configuration.TX_DATASOURCE_JNDI,SystemConfigurationInfo.getProperty(CommonConstant.DEFAULT_BPELDOMAIN_DS_JNDI));if(ml.isDebugEnabled())ml.debug(createdomain-dsjndipropertykey/value:+Configuration.DATASOURCE_JNDI+/+SystemConfi
本文标题:使用BPEL 构建 Web 服务网络
链接地址:https://www.777doc.com/doc-1584878 .html