以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Web Services & Semantic Web Services 』  (http://bbs.xml.org.cn/list.asp?boardid=10)
----  BPEL2.0 draft Vs 1.1[转帖]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=10&rootid=&id=26972)


--  作者:laoyao237
--  发布时间:2/6/2006 2:09:00 PM

--  BPEL2.0 draft Vs 1.1[转帖]
看到这里没有BPEL4WS的内容,转一篇别人的东东,觉的有些帮助.顺便也是为了赚分啊....想上FTP下UDDI4J啊....版主太会难为人了啊.....
原贴在http://spaces.msn.com/robindomain/blog/cns!8157A97370E352EA!153.entry?_c11_blogpart_blogpart=blogview&_c=blogpart#permalink
人生是由回忆组成的....

BPEL2.0 draft Vs 1.1(1)

BPEL 2.0草稿(2005.9.1)Vs BPEL1.1

导言:

       上一期简单介绍了BPEL1.1规范,但是1.1的发布已经是2003年5月5日的事了,距今天快30个月了。这段时期,SOA,BPM产品逐渐成熟,企业间信息交互(集成)应用也越来越广泛。同时OASIS也是紧锣密鼓地审议BPEL2.0,可以说2.0已是呼之欲出。

       下面就对BPEL2.0草稿(以下简称2.0)的一些变化做一阐述,希望能对BPEL感兴趣的读者继续学习BPEL有所帮助。

       注意:要理解本文需要了解BPEL1.1规范。

2.0相对于1.1的变化:

1.       在流程(process)上,增加了 exitOnStandardFault 属性,指流程遇到标准故障(非joinFailure)时是否退出。

增加了 <import namespace="uri" location="uri" importType="uri"/>*

        其中 importType 的可选值根据引入的类型而定,如果是XML Schema 则为:

"http://www.w3.org/2001/XMLSchema",如果是WSDL 则为:

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

2.       增加如下节点(activity)

exit

语法:<exit standard-attributes>

        standard-elements

</exit>

               代替1.1中的teminate节点,只用于可执行流程。

if

语法:<if standard-attributes>

     standard-elements

     <condition expressionLanguage="anyURI"?>

          ... bool-expr ...

     </condition>

     <then>
          activity

     </then>

     <elseif>*

        <condition expressionLanguage="anyURI"?>

          ... bool-expr ...

        </condition>
                               activity

     </elseif>

     <else>?

        activity
     </else>
</if>

repeatUntil

              语法:<repeatUntil standard-attributes>

       standard-elements

       activity

       <condition expressionLanguage="anyURI"?>

          ... bool-expr ...

       </condition>

</repeatUntil>

rethrow

        语法:<rethrow/>

               用在 <faultHandler>(<catch> 和<catchAll>元素)中是否抛出故障。

validate

        语法:<validate variables="ncnames" />

               根据变量的数据类型(定义)对其进行校验

extensionActivity

              语法:<extensionActivity>

                            <???? standard-attributes>

                                         standard-elements

                           </????>

</extensionActivity>

引入符合标准(符合standard-attributes和standard-elements)的新节点, 给扩展提供了新方法。

forEach

              语法:<forEach counterName="ncname" parallel="yes|no" standard-attributes>

     standard-elements

     <startCounterValue expressionLanguage="anyURI">

        ...

     </startCounterValue>

     <finalCounterValue expressionLanguage="anyURI">

        ...

     </finalCounterValue>

     activity

</foreach>

3.       删除节点

terminate  替代节点 exit

switch  替代节点 if


节点的功能(语法)变化

receive:  portType属性变为可选的;

               增加了可选属性 messageExchange 用来和一个 reply 相关联

               增加了<fromPart part="ncname" toVariable="ncname"/>*,参看:invoke

                      注意:fromPart和varible属性只可取其一。

reply:    portType属性变为可选的;

增加了可选属性 messageExchange 用来和一个 <receive>, <onMessage> 或者

<onEvent> 相关联

               增加了<fromPart part="ncname" toVariable="ncname"/>*

invoke:   portType属性变为可选的;

               增加了<toPart part="ncname" fromVariable="ncname"/>*

                             提供了构造请求参数(inputVariable)的另一种方式,适用于请求消

                             息是多个part的情形。注意:toPart和inputVariable只可取其一。

                        <fromPart part="ncname" toVariable="ncname"/>*

                             根据返回的消息(outputVariable,在这种情况下,只是一个临时变量)

                             去给某个变量赋值,返回消息必须是含有part的。注意:fromPart

                             和outputVariable只可取其一。

assign:     增加了可选属性 validate="yes|no"?

               增加了子元素(element)<extensibleAssign>, 它和<copy>至少出现其一

onMessage: 同 receive

scope:      去掉了属性 variableAccessSerializable

               增加了属性 isolated="yes|no",用于并发scope中,一个isolated=”yes”的scope

               不能内置于另一个isolated=”yes”的scope中,替代variableAccessSerializable。

               增加了如下可选元素:<partnerLinks>, <terminationHandler>

5.       标准元素(standard-elements)

由原来的:

        <target linkName="ncname"/>*
              <source linkName="ncname" transitionCondition="bool-expr"?/>*

        变为:

              <targets>?

   <joinCondition expressionLanguage="anyURI"?>?

     ... bool-expr ...

   </joinCondition>                   
   <target linkName="ncname" />+

</targets>

<sources>?
   <source linkName="ncname">+

      <transitionCondition expressionLanguage="anyURI"?>?

        ... bool-expr ...

      </transitionCondition>

   </source>

</sources>

6.       WSDL扩展

partnerLinkType的结构变为:

<plnk:partnerLinkType name="ncname">
          <plnk:role name="ncname" portType="qname"/>
          <plnk:role name="ncname" portType="qname"/>?
     </plnk:partnerLinkType>

即把原来的role中portType元素变为它的一个属性

property数据类型由原来的只能是简单类型(type属性标识)变为可以为复杂类型(element属性标识)

       propertyAlias的结构变为:

<bpws:propertyAlias propertyName="qname"
               messageType="qname"? part="ncname"?

               type="qname"? element="qname"?>

           <query queryLanguage="anyURI"?>?

           ... queryString ...

           </query>

</bpws:propertyAlias>

即增加了两个可选属性(数据类型以不限于只是以前的messageType) ,并把原来

的query属性变为一个元素。

7.       partnerLink 增加了可选属性 initializePartnerRole="yes|no",这个属性只是用来修饰partnerRole(如果没有,则不起作用),如果为yes, 表示在第一次调用此partnerLink提供的服务时,要初始化它的endpoint reference, 否则不要初始化。

8.       标准故障

增加了bpws : invalidVariables; 发生在 validate 节点中

增加了bpws : missingRequest; 发生在 reply节点中,当不存在partnerLink, operation, and

               messageExchange相同的接收消息节点(receive, onEvent, onMessage)

增加了bpws : forEachCounterError; 发生在 forEach 节点中,当计算初始值和终止值出

              错时。

9.       变量(variable)访问语法结构的变化

由原来的<from variable= ncname ........> 变为:$ncname。

        如果variable的类型是element,例如(命名空间忽略,下同):

<variable name="AStatus" element="e:StatusContainer" />

如果要访问StatusContainer中的statusDescription,访问语法为:

$Astatus/e:statusDescription

              如果variable的类型是messageType,例如:

                     <message name="StatusMessage">

   <part name="StatusPart1" element="e:StatusContainer"/>

   <part name="StatusPart2" element="e:StatusContainer"/>

</message>

<variable name="StatusVariable" messageType="e:StatusMessage" />

如果要访问StatusPart2中的statusDescription,则语法为:

$StatusVariable.StatusPart2/e:statusDescription

如果variable的类型是简单类型,则$变量名直接表示一个字符串(string),数字

(float)和布尔值(boolean)。

也就是说,对于复杂类型,$变量名在XPath中被绑定到文档元素(document

element)。

变量访问的变化带来的变化是赋值(assign)节点中<copy>元素的变化。

注意:在草稿中所给的示例片段中依然看到1.1中的访问方式,不知道是两种形式可以

共用,还是什么情况,可能需要到正式规范出台才可得知。


10.       相关集(correlation)

correlation的initiate属性增加了可选值“join ”,它的意思是:

        当这个相关集没有初始化时,此刻初始化;

        当这个相关集已经初始化的时候,进行校验。

11.       bpws命名空间由 http://schemas.xmlsoap.org/ws/2003/03/business-process/

变为:http://schemas.xmlsoap.org/ws/2004/3/03/businessprocess/

      总结:

             从总体上的修改来看,2.0的可扩展性变得更强了,这一点无论是从引入的新节点,还是在流程中增加的新属性都可得到印证,而且引入的新节点使得流程语义的表达更加灵活,此外一些元素包括属性的命名也更加规范。相信2.0标准的推出必将对业界产生重大影响。

             本文也只是在参看了2.0的草稿基础上完成的,还没有进行深入的研究,因此,总结难免会有遗漏或有失偏颇,敬请读者批评指正。

      参考文献:

1.       Web Services Business Process Execution Language Version 2.0(Committee Draft, 01

September 2005)

http://www.oasis-open.org/committees/download.php/14616/wsbpel-specification-draft.htm

2.       Business Process Execution Language for Web Services version 1.1

http://www.ibm.com/developerworks/library/ws-bpel/


--  作者:letitbe
--  发布时间:2/6/2006 5:43:00 PM

--  
最近正在研究这个,谢谢楼主了
--  作者:micro_sandal
--  发布时间:2/26/2006 6:16:00 PM

--  
偶也在做这方面的工作,呵呵
--  作者:jpro
--  发布时间:3/3/2006 11:24:00 AM

--  
嗯,刚来就看到了一个
--  作者:cjjcx1
--  发布时间:4/17/2007 10:40:00 AM

--  
thks
--  作者:hanyonghua6
--  发布时间:1/10/2011 6:46:00 PM

--  
你好,我的qq是394454950可否加为好友,有些BPEL的问题想向您请教
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms