BPEL中的XML元素解析 2

上一篇文章开了一个小头,这次继续写一些自己读WS-BPEL2.0的心得体会,供大家分享
业务逻辑Business Process单独进行定义,该部分主要使用以下的XML元素,以及嵌套关系,其中这个并不是标准的XML只是为了方便说明其中的关系和结构
其中
?表示(0或1)
*表示(0或更多)
+表示(1或更多)

None.gif < process  name ="NCName"  targetNamespace ="anyURI"  
None.gif
None.gif   queryLanguage
="anyURI" ?
None.gif
None.gif   expressionLanguage
="anyURI"
None.gif
None.gif   suppressJoinFailure
="yes|no" ?
None.gif
None.gif   exitOnStandardFault
="yes|no" ?
None.gif
None.gif   xmlns
="http://schemas.xmlsoap.org/ws/2004/03/business-process/" >
None.gif
None.gif 
None.gif
None.gif   
< import  namespace ="anyURI"
None.gif
None.gif      location
="anyURI"
None.gif
None.gif      importType
="anyURI"   /> *
None.gif
None.gif 
None.gif
None.gif   
< extensions > ?
None.gif
None.gif      
< extension  namespace ="anyURI"  mustUnderstand ="yes|no"   /> *
None.gif
None.gif   
</ extensions >
None.gif
None.gif 
None.gif
None.gif   
< partnerLinks > ?
None.gif
None.gif      
<!--  Note: At least one role must be specified.  -->
None.gif
None.gif      
< partnerLink  name ="NCName"  
None.gif
None.gif         partnerLinkType
="QName"
None.gif
None.gif         myRole
="NCName"
None.gif
None.gif         partnerRole
="NCName" ?
None.gif
None.gif         initializePartnerRole
="yes|no" ? > +
None.gif
None.gif      
</ partnerLink >
None.gif
None.gif   
</ partnerLinks >
None.gif
None.gif 
None.gif
None.gif   
< messageExchanges > ?
None.gif
None.gif      
< messageExchange  name ="NCName"   /> +
None.gif
None.gif   
</ messageExchanges >
None.gif
None.gif 
None.gif
None.gif   
< variables > ?
None.gif
None.gif      
< variable  name ="BPELVariableName"  
None.gif
None.gif         messageType
="QName" ?
None.gif
None.gif         type
="QName"
None.gif
None.gif         element
="QName" /> +
None.gif
None.gif   
</ variables >
None.gif
None.gif 
None.gif
None.gif   
< correlationSets > ?
None.gif
None.gif      
< correlationSet  name ="NCName"  properties ="QName-list"   /> +
None.gif
None.gif   
</ correlationSets >
None.gif
None.gif 
None.gif
None.gif   
< faultHandlers > ?
None.gif
None.gif      
<!--  Note: There must be at least one faultHandler  -->
None.gif
None.gif      
< catch  faultName ="QName"
None.gif
None.gif         faultVariable
="BPELVariableName" ?
None.gif
None.gif         ( faultMessageType
="QName"  | faultElement ="QName"  )?  >
None.gif
None.gif         activity
None.gif
None.gif      
</ catch >
None.gif
None.gif      
< catchAll >
None.gif
None.gif         activity
None.gif
None.gif      
</ catchAll >
None.gif
None.gif   
</ faultHandlers >
None.gif
None.gif 
None.gif
None.gif   
< eventHandlers > ?
None.gif
None.gif      
<!--  Note: There must be at least one onEvent or onAlarm.  -->
None.gif
None.gif      
< onEvent  partnerLink ="NCName"  
None.gif
None.gif         portType
="QName" ?
None.gif
None.gif         operation
="NCName"  
None.gif
None.gif         ( messageType
="QName"  | element ="QName"  )?
None.gif
None.gif         variable
="BPELVariableName"
None.gif
None.gif         messageExchange
="NCName" ? > *
None.gif
None.gif         
< correlations > ?
None.gif
None.gif            
< correlation  set ="NCName"  initiate ="yes|join|no" /> +
None.gif
None.gif         
</ correlations >
None.gif
None.gif         
< fromParts > ?
None.gif
None.gif            
< fromPart  part ="NCName"  toVariable ="BPELVariableName"   /> +
None.gif
None.gif         
</ fromParts >
None.gif
None.gif         
< scope  dot.gif > dot.gif </ scope >
None.gif
None.gif      
</ onEvent >
None.gif
None.gif      
< onAlarm > *
None.gif
None.gif         
<!--  Note: There must be at least one expression.  -->
None.gif
None.gif         (
None.gif
None.gif         
< for  expressionLanguage ="anyURI" ? > duration-expr </ for >
None.gif
None.gif         |
None.gif
None.gif         
< until  expressionLanguage ="anyURI" ? > deadline-expr </ until >
None.gif
None.gif         )?
None.gif
None.gif         
< repeatEvery  expressionLanguage ="anyURI" ? >
None.gif
None.gif            duration-expr
None.gif
None.gif         
</ repeatEvery > ?
None.gif
None.gif         
< scope  dot.gif > dot.gif </ scope >
None.gif
None.gif      
</ onAlarm >
None.gif
None.gif   
</ eventHandlers >
None.gif
None.gif   activity
None.gif
None.gif
</ process >
None.gif

这其中
queryLanguage表示在整个流程中的查询语言默认值为"urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0", 表示使用ws-bpel2.0并附加XPath1.0
expressionLanguage. 表示在<process>中使用的默认表达语言该属性的默认值为"urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"
... ...

一个ws-bpel可以使用如下的标签定义:

·         <receive>允许业务过程等待相匹配的消息到达,当消息到达时该活动才可以完成,其中的<portType>是可选的,但是当<portType>以后<portType>的InputValue的类型必须和<partTypeLink>中的对应规则相符messageExcage属性也是可选的,可以与一个<replay>活动相关联.

·         <reply>允许业务过程发送一个消息来回复来自于IMA的邦定消息,IMA的类型包括<receive>,<onMessage>,<onEvent>,与<recieve>相仿<messageExchange>同样用来关联消息获得方,包括上面说的三种类型

·         <invoke> 允许业务流程产生一个单方面的或者是应答式的活动,这主要根据<portType>的定义

·         <assign>主要用来在业务流程中分配变量的值

·         <throw>产生错误并将错误抛出

·         <exit>

·         <wait>用于使业务流程等待一段时间

·         <empty>表示不进行任何操作,这对并行操作的活动非常有帮助

·         <sequence>用来定义一组活动顺序发生

·         <if>可定义活动的条件状态

·         <while>循环,与高级语言中的while相仿

·         <repeatUntil>另一种循环,与高级语言中的until相仿

·         <forEach>循环,C#有相同的定义形式

·         <pick>用来等待一组消息中的任何一个到达,或者到达超时时间以后开始激发

·         <flow>用来定义并行发生的动作

·         <scope>用来定义嵌套的活动

·         <compensate>该标签必须使用在错误处理句柄中,用来在发生错误的时候进行补偿操作

·         <compensateScope> 同上,但是只能发生在特定的内部<scope>中

·         <rethrow>也必须在错误处理句柄中使用,抛异常

·         <validate>通过变量相关的XML或者WSDL验证变量的值

·         <extensionActivity>通过该标签扩展用户自己的活动

continue ... ...

转载于:https://www.cnblogs.com/lisugar/archive/2006/08/16/478729.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值