BPEL中的XML元素解析 2

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

< process  name ="NCName"  targetNamespace ="anyURI"  

   queryLanguage
="anyURI" ?

   expressionLanguage
="anyURI"

   suppressJoinFailure
="yes|no" ?

   exitOnStandardFault
="yes|no" ?

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

 

   
< import  namespace ="anyURI"

      location
="anyURI"

      importType
="anyURI"   /> *

 

   
< extensions > ?

      
< extension  namespace ="anyURI"  mustUnderstand ="yes|no"   /> *

   
</ extensions >

 

   
< partnerLinks > ?

      
<!--  Note: At least one role must be specified.  -->

      
< partnerLink  name ="NCName"  

         partnerLinkType
="QName"

         myRole
="NCName"

         partnerRole
="NCName" ?

         initializePartnerRole
="yes|no" ? > +

      
</ partnerLink >

   
</ partnerLinks >

 

   
< messageExchanges > ?

      
< messageExchange  name ="NCName"   /> +

   
</ messageExchanges >

 

   
< variables > ?

      
< variable  name ="BPELVariableName"  

         messageType
="QName" ?

         type
="QName"

         element
="QName" /> +

   
</ variables >

 

   
< correlationSets > ?

      
< correlationSet  name ="NCName"  properties ="QName-list"   /> +

   
</ correlationSets >

 

   
< faultHandlers > ?

      
<!--  Note: There must be at least one faultHandler  -->

      
< catch  faultName ="QName"

         faultVariable
="BPELVariableName" ?

         ( faultMessageType
="QName"  | faultElement ="QName"  )?  >

         activity

      
</ catch >

      
< catchAll >

         activity

      
</ catchAll >

   
</ faultHandlers >

 

   
< eventHandlers > ?

      
<!--  Note: There must be at least one onEvent or onAlarm.  -->

      
< onEvent  partnerLink ="NCName"  

         portType
="QName" ?

         operation
="NCName"  

         ( messageType
="QName"  | element ="QName"  )?

         variable
="BPELVariableName"

         messageExchange
="NCName" ? > *

         
< correlations > ?

            
< correlation  set ="NCName"  initiate ="yes|join|no" /> +

         
</ correlations >

         
< fromParts > ?

            
< fromPart  part ="NCName"  toVariable ="BPELVariableName"   /> +

         
</ fromParts >

         
< scope  > </ scope >

      
</ onEvent >

      
< onAlarm > *

         
<!--  Note: There must be at least one expression.  -->

         (

         
< for  expressionLanguage ="anyURI" ? > duration-expr </ for >

         |

         
< until  expressionLanguage ="anyURI" ? > deadline-expr </ until >

         )?

         
< repeatEvery  expressionLanguage ="anyURI" ? >

            duration-expr

         
</ repeatEvery > ?

         
< scope  > </ scope >

      
</ onAlarm >

   
</ eventHandlers >

   activity

</ process >

这其中
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 ... ...

你可能感兴趣的:(xml)