<结构活动 --- Structure Activity>
结构化的活动规定了一组活动发生的顺序。他们描述了业务流程是怎样通过把它执行的基本活动组成结构而被创建的,这些结构表达了涉及业务协议的流程实例间的控制形式、数据流程、故障和外部事件的处理以及消息交换的协调。
BPEL4WS的结构化的活动包括如下:
1. 活动间一般的顺序控制由 sequence、switch 和 while 来提供; 2. 活动间的并发和同步由 flow 来提供;
3. 基于外部事件的不确定的选择由 pick 来提供;
我们可以用一般的方法来递归地使用结构化的活动。需要理解的要点是结构化的活动可以被任意的嵌套和组合。
5.2.1
语言结构:
sequence:主要用于定义一组将按顺序调用的活动。
除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,sequence活动还包括: “ activity + ”。
“Activity+”是嵌套在sequence中的一个或一组按先后顺序被执行的活动,当sequence中的最后一个活动完成后,该sequence活动也就完成了。 5.2.2
语言结构:
switch:主要用于实现分支。
除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,switch活动还包括: 1. A. Condition:分支条件,一般用布尔表达式描述(bool-expr); 项目名称: B. Activity: 分支下的具体活动; 2. otherwise:Case活动之外的另一个分支,可写可不写,缺省默认存在; A. Activity: otherwise分支下的活动; Switch活动是以各种不同形式的条件行为组成的结构化活动,即switch活动里可以根据不同的行为分成几个活动分支。 Switch活动由 case 元素定义的一个或多个条件分支的有序列表组成(每个case里面有一个布尔表达式bool-expr的条件),最后可跟,也可以不跟一个 otherwise 分支。以 switch 活动中的 case 分支的出现顺序来考虑它们。即条件是 true 的第一个分支被选择,并被作为该 switch 的被执行的活动。如果有条件的分支都未被选择,那么 otherwise 分支将被选择。如果 otherwise 分支未被显式地指定,那么有 empty 活动的 otherwise 分支将被认为存在。当被选中的分支里的活动完成后,switch 活动也就完成了。 5.2.3 语言结构: while:主要用于定义循环。 除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,while活动还包括: 1. Condition:while执行条件,布尔表达式描述(bool-expr); 2. Activity: 嵌套在while里的活动; While活动支持指定在while里的活动的反复执行,活动重复至给出的while条件的布尔表达式(condition=\)值为false。即只要给出的while条件的布尔表达式的值为true,就一直执行嵌套在while里的活动,反之,跳出while活动,while结束。 5.2.4 语言结构: flow:主要用于定义一组将并行调用的活动。 除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,flow活动还包括: 1. Links链接 Page 28 项目名称: Name:每个link的名称,对应于活动基本属性中source和target元素中的linkName; 2. Activity+ 一组并发的活动 activity+ 是一组嵌套在flow中的并行的活动。同时为了定义任意的控制结构,可以在并行的活动中使用链接(link),每个link 都有一个名称(linkName),flow 活动的所有链接必须在 flow 活动中被分开定义。 Flow活动的标准元素中的source 和 target被用来链接两个活动,即每个链接(有相应的linkName区别不同的链接)是从源(source)活动开始到目标(target)活动结束,其中链接的源必须指定链接名的 source 元素,链接的目标必须指定链接名的 target 元素。source具有transitionCondition属性,该属性是判断链接状态(linkStatus)是true还是false,链接状态是true时,可以立即执行相应的target活动,反之不执行。如果 transitionCondition 属性被省略,那么默认该属性存在且默认其值为true。 5.2.5 语言结构 pick:主要用处是它能够选择多个替换路径之一。 除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,pick活动还包括: 1. createInstance:流程实例创建与否,是个布尔值,为yes时,创建流程实例;反之不创建,缺 省值为no; 2. onMessage+ :一个或多个onMessage分支组成的事件信息。各个onMessage是互相排斥的,只有 一个分支能够被选择,包含的属性有: A. partnerLink=\:描述两个web services之间的接口关系; B. portType=\: 端口类型; C. operation=\: 调用操作; D. variable=\: 变量; E. 相关集属性组,correlation:单个相关集,set=\:相 Page 29 项目名称: 关集集合名称;initiation:是否实例话该相关集,值是布尔值,为yes时,相关集被实例化,反之,不实例化,缺省值为no。 F. Activity:嵌套在onMessage里的活动; 3. onAlarm* :0个或多个onAlarm组成的警报事件组,当onMessage触发时,onAlarm不执行,当 createInstance 值为yes时,onAlarm不能存在。 主要包含的属性如下: A. for=\: 警报的时间长度,是一个长度表达式; B. until=\:警报时间点; C. activity:嵌套在onAlarm里的活动; 其中,时间长度和时间点两个只有一个存在,用时间长度表达则不存在时间点表达, 反之亦然。 Pick 活动等待一组事件(在onMessage中定义的)中的一个事件的发生,然后执行与发生的事件关联的活动。事件的发生总是相互排斥的(某流程接收到接受消息,或者接收到拒绝消息,但不可能同时接收到这两个消息),即各个onMessage之间是互相排斥的,只有一个分支能够被选择,当 pick 活动接受处理一个事件后,pick 将不再接受其它事件。 当业务流程的实例的创建是由于接收到一组可能的消息中的一个消息而发生时,可以使用 pick 的特殊形式。在这种情况下,pick 本身的 createInstance 属性的值是 yes(这个属性的缺省值是 no)。在这种情况下,pick 中的事件必须都是进站的消息,每一个等同于属性为 \的 receive。对于这种特殊情况,不允许出现警报。pick活动是有警报事件的(onAlarm定义的),它定义了一组经过多长的时间段或者在某个时刻,onMessage事件不发生时则执行onAlarm警报事件。 项目名称: <特殊活动 --- Scope> 语言结构 Scope活动为嵌套在其中的活动提供故障处理功能和补偿处理功能。scope 可以提供故障处理程序、补偿处理程序、数据变量和相关集。 除了活动的标准属性(见3.1.5)和标准元素(见3.1.6)之外,scope活动还包含: 1. variableAccessSerializable: 序列化作用域,值为yes或no; 2. variables? : 作用域内的变量,只在该作用域内有效; 3. correlationSets? : 相关集集合; 4. faultHandlers? : 故障处理功能; A. catch活动 catch活动,被定义的每个 catch 活动能拦截某种故障(由全局唯一的故障 QName 和有与该故障关联的数据的变量来定义)。如果没有故障名,那么 catch 将拦截全部有适合类型的故障数据变量的故障。故障变量是可选的,这是因为故障可能没有与之关联的额外数据。如果只有故障QName,那么 catch 将拦截全部有适合类型的故障QName的故障。 Activity,catch子句下的活动,这个是唯一的,但是activity里面是可以嵌套的。 B. catchAll活动 catchAll 子句可被用来捕获所有未被特定的 catch 处理程序捕获的故障,可有可无。 Activity,catchAll子句下的活动,这个是唯一的,但是activity里面是可以嵌套的。 5. compensationHandlers?:补偿处理功能; A. activity:执行补偿处理的活动; 6. eventHandlers?:事件处理功能; 项目名称: 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库BPEL 简明开发手册(6)在线全文阅读。
相关推荐: