首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

软件资讯设计 工具 系统 开发 安全 办公 陶吧 IT教育 Vista频道 | 下载中心酷我音乐盒 腾讯QQ
天极网 > 开发频道>BPEL过程组件

BPEL过程组件

2008-01-04 10:48作者:佚名出处:论坛整理责任编辑:方舟

  相关集(Correlation Sets)

  相关集(Correlation Sets)用一组特定的数据,来关联和标定一个BPEL过程实例。因为本质上BPEL是一个分布式的消息系统,不像分布式的对象系统,可以通过Instance ID来标识实例。BPEL是通过交换消息里面的一些属性值来标识的。而相关集可以不需要Instance ID就可以识别BPEL过程实例,对许多需要保持会话状态的BPEL业务需求来说,是非常有用的。

  下面用一个日常生活中的实例进一步说明这个问题。

  假设一个小学一个班级有30个学生。小学校长想知道每个学生的数学、语文和英语的成绩。小学校长准备了30个空白信封,每个信封里面有一张白纸让相应的老师填入成绩。

  1.没有相关集的情形

  小学校长直接将30个空白信封先交给了数学老师,数学老师在信封里的白纸上填好数学成绩交回给校长。

  小学校长接着将这30个信封交给语文老师,希望在原有数学成绩的基础上再填上语文成绩。语文老师没法完成此工作,因为信封上没有标志,语文老师无法知道哪个学生对应哪个信封。

  2.有相关集的情形

  小学校长首先将30个空白信封上标上学生的姓名和学生证号码,交给数学老师,数学老师就可以根据信封上的标志分别填上每个学生相应的数学成绩,然后交给语文老师;语文老师就可以根据信封上的标志分别填上每个学生相应的语文成绩,然后交给英语老师;英语老师就可以根据信封上的标志分别填上每个学生相应的英语成绩。这样每个学生的各科成绩就都填进去了。

  上面实例中的信封相当于BPEL的一个实例,信封上的学生的姓名和学生证号码相当于一个相关集。

  在BPEL中设置相关集比较复杂,下面以房屋贷款的实例来说明在BPEL中设置相关集的过程思路,下面以顾客姓名“name”数据建立相关集。

  首先需要建立“相关属性”如下:

<definitions name="properties"

targetNamespace="http://example.com/houseloanCorrelation.wsdl"

xmlns:tns="http://example.com/ houseloanCorrelation.wsdl"

xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"

xmlns="http://schemas.xmlsoap.org/wsdl/">

<!-- define correlation properties -->

<bpws:property name="name" type="xsd:string"/>

</definitions>

  接下来需要在WSDL中定义“相关属性”。因为同一个属性名,比如“name”,它可能是请求变量的参数,也可能是响应变量的参数,还有路径的关系,因为变量在SOAP消息中是树状的数据结构。所以这里需要用<bpws:propertyAlias>标签从请求消息中得到“name”值。

<?xml version="1.0" encoding="UTF-8"?>

<definitions targetNamespace=" http://example.com/messageCorrelation.wsdl "

xmlns:tns=" http://example.com/messageCorrelation.wsdl "

xmlns:cor="http://example.com/houseloanCorrelation.wsdl"

xmlns="http://schemas.xmlsoap.org/wsdl/"

……

xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">

<types>

<xsd:schema>

<xsd:complexType name="getLoanQuoteRequest">

<xsd:sequence>

<xsd:element name="name" type="xsd:string" />

</xsd:sequence>

</xsd:complexType>

……

</xsd:schema>

</types>

<message name="getLoanQuoteRequest">

<part name="payload" type="typens:getLoanQuoteRequest" />

</message>

<message name="getLoanQuoteResponse">

<part name="payload" type="typens:getLoanQuoteResponse" />

</message>

……

<bpws:propertyAlias propertyName="cor:name"

messageType="tns: getLoanQuoteRequest " part=" payload "

query="/ getLoanQuoteRequest /name"/>

……

</definitions>

  接下来在BPEL中定义相关集:

<correlationSets xmlns:cor="http://example.com/houseloanCorrelation.wsdl">

<correlationSet name="HouseLoanCor" properties="cor:name "/>

</correlationSets>

  进而在BPEL的< receive>活动中调用相关集:

<bpel:receive name="request" partnerLink="HouseLoanBroker"

portType="tns:HouseLoanBroker" operation="getLoanQuote" variable="request">

<correlations>

<correlation set=" HouseLoanCor " initiate="yes">

</correlations>

</bpel:receive>

  这样就将房屋贷款的流程实例和相关集关联起来了。

进入 最权威的Windows 7论坛 查看网友讨论

软件频道最新更新

热点推荐

IT嘉年华

编辑推荐

软件下载

热门
推荐

网友关注

软件
资料
游戏

装机推荐

文章排行

本周
本月
最新更新
天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络