“activity”标记可以是以下任一个:
•
<receive>
•
<reply>
•
<invoke>
•
<assign>
•
<throw>
•
<terminate>
•
<wait>
•
<empty>
•
<sequence>
•
<switch>
•
<while>
•
<pick>
•
<flow>
•
<scope>
•
<compensate>
在下面的段落中将介绍以上每个元素的语法。
<receive>
构造允许业务流程阻塞等待匹配消息的到达。
<receive partner="ncname" portType="qname" operation="ncname"
container="ncname" createInstance="yes|no"?
standard-attributes>
standard-elements
<correlations>?
<correlation set="ncname" initiation="yes|no"?>+
</correlations>
</receive>
<reply>
构造允许业务流程发送消息以回复通过 <receive> 接收到的消息。一个 <receive> 和一个 <reply> 组合为流程构成了在 WSDL portType 上的请求-响应操作。
<reply partner="ncname" portType="qname" operation="ncname"
container="ncname" faultName="qname"?
standard-attributes>
standard-elements
<correlations>?
<correlation set="ncname" initiation="yes|no"?>+
</correlations>
</reply>
<invoke>
构造允许业务流程调用由伙伴在 portType 上提供的单向或请求-响应操作。
<invoke partner="ncname" portType="qname" operation="ncname"
inputContainer="ncname" outputContainer="ncname"?
standard-attributes>
standard-elements
<correlations>?
<correlation set="ncname" initiation="yes|no"?
pattern="in|out|out-in"/>+
</correlations>
<catch faultName="qname" faultContainer="ncname"?>*
activity
</catch>
<catchAll>?
activity
</catchAll>
<compensationHandler>?
activity
</compensationHandler>
</invoke>
<assign>
构造的用途是用新的数据来更新容器的值。一个 <assign> 构造可以包括任意数量的基本赋值。赋值活动的语法是:
<assign standard-attributes>
standard-elements
<copy>+
from-spec
to-spec
</copy>
</assign>
其中 from-spec 标记和 to-spec 标记的各种选项是:
<from container="ncname" part="ncname"? query="queryString"?/>
<from partner="ncname" serviceReference="myRole|partnerRole"/>
<from container="ncname" property="qname"/>
<from expression="general-expr"/>
<from> ... literal value ... </from>
<from opaque="yes"/>
<to container="ncname" part="ncname"? query="queryString"?/>
<to partner="ncname"/>
<to container="ncname" property="qname"/>
<throw>
构造从业务流程中生成故障。
<throw faultName="qname" faultContainer="ncname"? standard-attributes>
standard-elements
</throw>
<terminate>
构造使您能够立即终止业务流程。
<terminate standard-attributes>
standard-elements
</terminate>
<wait>
构造允许您等待一段给定的时间或等到某一时刻。您必须指定其中一个到期条件。
<wait (for="duration-expr" | until="deadline-expr") standard-attributes>
standard-elements
</wait>
<empty>
构造允许您在业务流程中插入
“
no-op
”
指令。例如,这个构造可被用于并行活动的同步。
<empty standard-attributes>
standard-elements
</empty>
<sequence>
构造允许您定义一组按词法顺序先后被执行的活动。
<sequence standard-attributes>
standard-elements
activity+
</sequence>
<switch>
构造允许您从一组分支中只选择一个执行分支。
<switch standard-attributes>
standard-elements
<case condition="bool-expr">+
activity
</case>
<otherwise>?
activity
</otherwise>
</switch>
<while>
构造允许您指定反复执行一个活动,直到某个成功条件被满足。
<while condition="bool-expr" standard-attributes>
standard-elements
activity
</while>
<pick>
构造允许您阻塞等待某一个合适的消息的到达或超时警报响起。当其中一个触发器触发后,相关的活动被执行,pick 也就完成了。
<pick createInstance="yes|no"? standard-attributes>
standard-elements
<onMessage partner="ncname" portType="qname"
operation="ncname" container="ncname">+
<correlations>?
<correlation set="ncname" initiation="yes|no"?>+
</correlations>
activity
</onMessage>
<onAlarm (for="duration-expr" | until="deadline-expr")>*
activity
</onAlarm>
</pick>
<flow>
构造允许您指定一个或多个被并行地执行的活动。为了定义任意的控制结构,可以在并行的活动中使用链接。
<flow standard-attributes>
standard-elements
<links>?
<link name="ncname">+
</links>
activity+
</flow>
<scope>
构造允许您定义嵌套活动,这个嵌套活动有和自己关联的故障处理程序和补偿处理程序。
<scope containerAccessSerializable="yes|no" standard-attributes>
standard-elements
<faultHandlers>?
... see above under <process> for syntax ...
</faultHandlers>
<compensationHandler>?
... see above under <process> for syntax ...
</compensationHandler>
activity
</scope>
<compensate>
构造被用来在已正常完成执行的内层作用域上调用补偿。您只能从故障处理程序或另一个补偿处理程序中调用这个构造。
<compensate scope="ncname"? standard-attributes>
standard-elements
</compensate>
请注意上面所指的
“
standard-attributes
”
是:
name="ncname"?
joinCondition="bool-expr"?
suppressJoinFailure="yes|no"?
它们的缺省值如下:
•
name
没有缺省值(也就是说,未命名)
•
joinCondition
目标为这个活动的所有链接的活跃状态的逻辑或。
•
suppressJoinFailure No
上面所指的
“
standard-elements
”
是:
<target linkName="ncname"/>*
<source linkName="ncname" transitionCondition="bool-expr"?/>*
其中
“transitionCondition”
属性的缺省值是
“true()”
,这是缺省表达式语言
XPath 1.0
中的真值函数