BPEL4WS和ESB不仅不是相互竞争的,反而是互补的。BPEL定义业务流程,而ESB提供BPEL执行过程中所有需要的服务。下面看一个PXE的BPEL过程无缝迁入到ServiceMix里面的例子
这是在PXE中独立执行时候的配置,我们看到ProcessSVC的Provider里面使用了Protocoladapter.soap这个协议提供。其实bpel更不需要关注提供协议的类型,这些服务全部交给ESB做就行了
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<system-descriptor name="AsyncProcess"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.fivesight.com/pxe/system-descriptor/ http://www.fivesight.com/pxe/system-descriptor/"
wsdlUri="file:main.wsdl"
xmlns="http://www.fivesight.com/pxe/system-descriptor/"
xmlns:proc="uri:com.bptest.process"
xmlns:resp="uri:com.bptest.responder">
<channels>
<channel name="inboundChannel" />
<channel name="callbackChannel" />
<channel name="outboundChannel" />
</channels>
<services>
<service name="ProcessSVC" provider="uri:protocoladapter.soap">
<imports>
<port name="ProcessPORT" type="proc:ProcessPT" channel-ref="inboundChannel"/>
<port name="CallbackPORT" type="resp:CallbackPT" channel-ref="callbackChannel"/>
</imports>
</service>
<service name="ResponderSVC" provider="uri:protocoladapter.soap">
<exports>
<port name="ResponderPORT" type="resp:ResponderPT" channel-ref="outboundChannel"/>
</exports>
</service>
<service name="ProcessSync.BpelService" provider="uri:bpelProvider">
<imports>
<port name="AsyncResponder.Responder" type="resp:ResponderPT" channel-ref="outboundChannel"/>
</imports>
<exports>
<port name="Client.Process" type="proc:ProcessPT" channel-ref="inboundChannel"/>
<port name="AsyncResponder.Caller" type="resp:CallbackPT" channel-ref="callbackChannel"/>
</exports>
</service>
</services>
</system-descriptor>
下面是ServiceMix中的配置。很明显,刚才的provider里面换成了uri:jbi。通过pxe的JBI兼容组件,当业务流程中调用这些组件的时候,自动通过ESB来调用这些服务。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<system-descriptor name="AsyncProcess"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.fivesight.com/pxe/system-descriptor/ http://www.fivesight.com/pxe/system-descriptor/"
wsdlUri="file:./AsyncProcess.wsdl"
xmlns="http://www.fivesight.com/pxe/system-descriptor/"
xmlns:proc="uri:com.bptest.process"
xmlns:resp="uri:com.bptest.responder">
<channels>
<channel name="inboundChannel" />
<channel name="callbackChannel" />
<channel name="outboundChannel" />
</channels>
<services>
<service name="ProcessSVC" provider="uri:jbi" >
<properties>
<property name="namespace"
value="uri:fivesight.com/examples/AsyncProcessJBI" />
</properties>
<imports>
<!-- The following port will be registered as a JBI service endpoint
{uri:fivesight.com/examples/AsyncProcessJBI:ProcessSVC, ProcessPORT}
-->
<port name="ProcessPORT" type="proc:ProcessPT" channel-ref="inboundChannel"/>
<!-- The following port will be registered as a JBI service endpoint
{uri:fivesight.com/examples/AsyncProcessJBI:ProcessSVC, CallbackPORT}
-->
<port name="CallbackPORT" type="resp:CallbackPT" channel-ref="callbackChannel"/>
</imports>
</service>
<service name="ResponderSVC" provider="uri:jbi" >
<properties>
<property name="namespace"
value="uri:fivesight.com/examples/AsyncProcessJBI" />
</properties>
<exports>
<!-- The following port will invoke JBI service endpoint
{uri:fivesight.com/examples/AsyncProcessJBI:ResponderSVC, ResponderPORT}
-->
<port name="ResponderPORT" type="resp:ResponderPT" channel-ref="outboundChannel"/>
</exports>
</service>
<service name="ProcessSync.BpelService" provider="uri:bpel">
<properties>
<property name="compiledProcess" value="AsyncProcess.cbp"/>
</properties>
<imports>
<port name="AsyncResponder.Responder" type="resp:ResponderPT" channel-ref="outboundChannel"/>
</imports>
<exports>
<port name="Client.Process" type="proc:ProcessPT" channel-ref="inboundChannel"/>
<port name="AsyncResponder.Caller" type="resp:CallbackPT" channel-ref="callbackChannel"/>
</exports>
</service>
</services>
</system-descriptor>
分享到:
相关推荐
BPEL4WS,全称为Business Process Execution Language for Web Services,是一种专门用于集成Web服务的规范标准。它旨在通过将现有的Web服务组合成新的服务,来支持复杂的业务流程自动化。BPEL4WS是IBM的WSFL(Web ...
读者可以通过这两份文档深入理解BPEL4WS的工作原理,学习如何编写和部署BPEL流程,并了解如何将它融入到SOA环境中。 总之,BPEL4WS V2.0是构建和执行Web服务业务流程的重要工具,它提供了一种标准化的方式来描述、...
在BPEL4WS中,“伙伴”是指参与业务流程的各个服务角色。每个伙伴都有一组预定义的操作,它们共同协作完成整个流程。 ##### 5.3 服务引用 服务引用是指在一个业务流程中对其他服务的引用。它定义了如何访问外部...
为了使BPEL4WS流程能够在UDDI注册中心正确发布,我们需要定义一套映射规则,将BPEL4WS的相关信息映射到UDDI的模型中。 **2.1.1 BPEL4WS数据模型** BPEL4WS定义了一个抽象层,允许开发者描述Web服务的业务流程,...
### BPEL4WS协议中数据共享问题的研究 #### 摘要 本文针对BPEL4WS协议在流程执行中的数据共享问题处理不足之处,对该协议内容进行了扩展,并提出了“容器池”的概念及其构建模型。通过对实际案例的应用与分析,深入...
IBM developerWorks的一个BPEL教程
BPEL4WS,全称Business Process Execution Language for Web Services,是一种用于构建和执行Web服务集成的业务流程的语言。它由IBM和Microsoft共同提出,旨在标准化Web服务之间的交互和流程执行。BPEL提供了一种...
针对服务流程建模语言BPEL4WS难以满足用户个性化需求也无法适应动态环境变化的问题,提出了一种动态优化BPEL4WS中流程服务的方法。该方法给出了一种Web服务交互代价计算模型,用来评价用户对Web服务的偏好程度以及...
BPEL4WS旨在解决如何将Web服务集成到业务流程中的问题,为Web服务的组合和协调提供了标准化的编程模型。 在《BPEL for Web Services - BPEL and BPEL4WS 2nd》这本书中,读者可以期待深入理解以下几个核心知识点: ...
这种表示方法被称为 Web 服务的业务流程执行语言(Business Process Execution Language for Web Services)(以下简称为 BPEL4WS)。用 BPEL4WS 表示的流程只能通过使用 Web 服务接口来导出和导入功能。
### 过程定义语言XPDL_BPML和BPEL4WS的比较分析 #### 引言 ...而在涉及Web服务集成的场景下,则BPEL4WS可能更为适用。理解这三种语言的特点和区别有助于企业在实施工作流管理系统时做出更加明智的选择。
### BPEL4WS 2.0:一种用于Web服务业务流程执行的语言 #### 概述 《BPEL4WS 2.0》(Web Services Business Process Execution Language Version 2.0)是一份由OASIS(组织为开放标准)发布的规范文档,主要介绍了...
BPEL4WS与基于ECA规则的过程模型的转换对于学习BPEL4WS建模的研究人员是个很好的参考资料。
BPEL4WS的出现是为了应对传统应用系统集成中仅仅依赖标准协议进行简单交互的局限性,它旨在充分利用Web服务作为集成平台的潜能,支持多边、有状态和长期运行的业务交互。 **业务流程集成的挑战** 业务流程集成不...
研究了基于Web服务的业务流程执行语言BPEL4WS(Business Process Execution Language for Web Services)的实现机制和关键技术,在此基础上,结合具体应用分析了BPEL4WS在分布式应用系统中的应用和实现。
本文档将深入探讨WS-BPEL的相关概念、特点以及在JBoss ESB中的应用。 #### 二、WS-BPEL概述 ##### 2.1 定义与作用 WS-BPEL是一种基于XML的语言,用于编写业务流程,特别是那些涉及到多个服务交互的过程。它定义了...