以文本方式查看主题 - 计算机科学论坛 (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)
导言: 上一期简单介绍了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> </then> <elseif>* <condition expressionLanguage="anyURI"?> ... bool-expr ... </condition> </elseif> <else>? activity
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"/>* 变为: <targets>? <joinCondition expressionLanguage="anyURI"?>? ... bool-expr ... </joinCondition> </targets>
<sources>? <transitionCondition expressionLanguage="anyURI"?>? ... bool-expr ... </transitionCondition> </source> </sources>
6. WSDL扩展 partnerLinkType的结构变为: <plnk:partnerLinkType name="ncname"> 即把原来的role中portType元素变为它的一个属性
property数据类型由原来的只能是简单类型(type属性标识)变为可以为复杂类型(element属性标识)
propertyAlias的结构变为: <bpws:propertyAlias propertyName="qname" 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中的访问方式,不知道是两种形式可以 共用,还是什么情况,可能需要到正式规范出台才可得知。 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 |