BPN模型是Petri网的一个扩展模型,用于描述BPEL活动和流程。在这里,我们要特别指出:
(1)所有的BPN模型都是从一个开始库所开始,由一个终止库所结束,并且开始库所的前向集和终止库所的后向集都是空集;
(2)每个库所都包含一组变量,也叫作Token集,这个Token集通过变迁从一个库所移动到另一个库所并且它们的值通过变迁中的操作被改变;
(3)每个变迁都包含一个操作,操作中包含操作名、端口名和服务名;
(4)活动中的条件和表达式被视为计算操作,并且计算操作中还包含权重值t和f,通过权重值计算操作选择移动到后面的哪一个库所。
定义4.12 BPEL进程模型BPN=(ps,pe,P,T,F,W,V,OP),其中:
(1)ps是BPN的开始库所,pe是BPN的终止库所,ps∈P∧pe∈P;
(2)P={p1,p2,…,pm}是库所的一个有限集;
(3)T={t1,t2,…,tr}是变迁的一个有限集,且∀t∈T,·t≠∅∧t·≠∅;
(4)F⊆(P×T)∪(T×P)是库所与变迁之间的流关系;
(5)W:F→{t,f,∅}是库所与变迁之间弧权重的映射,权重的缺省值是∅;
(6)V={v1,v2,…,vk}是变量的一个有限集,对于∀1≤i≤k,都有vi=(vname,vtype,vvalue,partj),并且在vi中,vname表示变量vi的名字,vtype表示变量vi的类型,vvalue表示变量vi的值,partj表示vi所属的变量名;
(7)Part={part1,part2,…,partl},且对于∀1≤j≤l,都有partj=(namej,typej,valuej),此外,l表示Part中元素的个数,namej表示partj的名字,typej表示partj的类型,valuej表示partj的值;
(8)OP={op1,op2,…,opn}是操作的一个有限集,且对于∀1≤i≤n,都有opi=(opn,port,service),其中opn表示操作名,port表示包含操作opn的端口名,service表示包含端口port的服务名;
(9)对于∀1≤i≤m和∀1≤j≤k,pi.vj表示变量vj存在于库所pi中;
(10)对于∀1≤i≤r,ti.op表示操作op属于变迁ti。
4.4.3.1 基本活动建模
基本活动的BPN模型见图4.5。
定义4.13 receive模型BPNrec=({ps,pe},{trec},{(ps,trec),(trec,pe)},{∅},{v},{oprec})
图4.5 基本活动的BPN模型
当一个消息被操作oprec接收且消息的值被分配给库所pe中的变量v时,活动receive被激活。
定义4.14 reply模型
一个reply活动被用于发送一个响应给一个之前被receive活动接收的请求,且该响应仅适用于同步交互,其中变量v被用于存储输出消息。
定义4.15 invoke模型
invoke活动的操作opinv可能是一个同步的请求/响应操作,也可能是一个异步的单向操作。一个异步调用仅要求一个输入变量vi,且没有一个响应作为该调用操作的一部分;而一个同步调用不仅要求有输入变量vi也要求有输出变量vo,且vi.vtype=vo.vtype。
定义4.16 assign模型
assign活动被用于将消息通过操作copy从输入变量Vi复制到输出变量V o。
定义4.17 wait模型(www.xing528.com)
wait活动描述了一个某一时间段或到达一个特定期限的延迟。当条件cnd被满足时,即W=t时,流程移动到下一个库所pe,否则流程将在库所ps等待条件被满足。
定义4.18 throw模型
当流程需要发送一个明确的内部故障信号时,throw活动被激活。该活动被要求提供故障的名字Vf.vname,并且能够有选择的提供故障数据Vf.value。
定义4.19 empty模型
BPEL商业流程经常需要活动empty以使流程不执行任何活动。
4.4.3.2 结构活动建模
结构活动的BPN模型见图4.6。
定义4.20 sequence模型BPNseq={bi|1≤i≤n}seq,其中:
一个sequence活动被用于连接不同的活动块并按顺序执行这些活动块,一个活动块可以是一个基本活动,也可以是一个包含基本活动的结构活动。对于一个sequence活动,活动块bi的终止库所中的变量应与bi+1的开始库所的变量相对应(主要指变量类型、端口类型相一致),如果不存在相对应的变量则该活动无效。
图4.6 结构活动的BPN模型
定义4.21 switch模型BPNswc={(ci,bi)|1≤i≤n}swc,其中:
Switch活动包含多个条件活动块,这些活动块被依次检查其执行条件是否被满足。如果条件c1被满足,则活动块b1被执行,否则检查条件c2是否被满足;如果{bi|1≤i≤n-1}的条件都未被不满足,则执行活动块bn。
定义4.22 while模型BPNwhl={(c,b)k}swc,其中:
(1);
(2)P=P′∪{ps,pe};
(3)T=T′∪{t}且t.op=c;
(4);
(5);
(6)V=V′;
(7)OP=OP′∪{c};
(8)k表示循环次数。
循环活动迭代地执行活动块b,直到给定的条件c不再被满足。
定义4.23 flow模型BPNflw={bi|1≤i≤n}flw,其中:
Flow活动中包含一组并发执行的活动块,当所有的活动块都执行结束后该活动完成。
定义4.24 pick模型BPNpck={(ei,bi)|1≤i≤n}pck,其中:
Pick活动由一组分支活动块组成,每一个分支包含一个活动块。当与某一分支相关联的事件发生时,该分支中的活动块被执行。需要注意的是,当pick已经执行某一分支中的活动块时,其他活动块则不再通过pick被执行;当活动pick超时时,最后一个活动块bn被执行,事件en表示超时事件。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。