首页 理论教育 基于Pi演算的服务交互行为描述研究成果

基于Pi演算的服务交互行为描述研究成果

时间:2023-10-31 理论教育 版权反馈
【摘要】:定义3.14如果服务s1和s2之间的所有交互路径均为有效交互路径,则服务s1和s2是完全兼容的。至此,两个服务之间的交互结束。

基于Pi演算的服务交互行为描述研究成果

3.3.3.1 兼容性的相关概念

定义3.10 给定服务s1和s2,以及两个服务对应的服务视图SV1=(s1,IV1,BV1,fIB)和SV2=(s2,IV2,BV2,fIB),则两个服务之间的一个交互因子可以表示为一个三元组∞=(p-,p+,M),其中:

(1)img,属于发送消息操作;

(2)img,属于接收消息操作;

(3)p-和p+要满足p∈IV1.P∩p+∈IV2.P或p-∈IV2.P∩p+∈IV1.P;

(4)M=fm(p-)是操作p-发送的消息集合,且满足M⊆fm(p+)。

从上面的定义可以看出,交互因子中两个类型的操作互为对偶。其中,p+为null表示两个服务交互时,一方发出消息后另一方无法接收,交互失败。因此,交互因子不仅可以表示两个服务之间交互成功,也可以表示两个服务之间交互失败。这里,引入ϑ(∞,s)函数表示服务s在交互过程中的操作。

定义3.11 给定服务s1和s2,以及两个服务对应的服务视图SV1=(s1,IV1,BV1,fIB)和SV2=(s2,IV2,BV2,fIB),则两个服务之间的一条交互路径为一个交互因子有序队列IP=〈∞1,∞2,…,∞n〉,且满足:

(1)∞i.p+≠null (1≤i≤n-1);

(2)PQs1=<ϑ(∞1,s1),ϑ(∞2,s1),…,ϑ(∞n,s1)>为SV1的操作序列;

(3)PQs2=<ϑ(∞1,s2),ϑ(∞2,s2),…,ϑ(∞n,s2)>为SV2的操作序列;

(4)服务s1和s2按照有序队列IP交互后均结束或无法继续交互。

上面的定义给出的条件保证了两个服务都是从起始状态开始进行交互,直至交互结束或交互无法再继续下去。

定义3.12 服务s1和s2的一条交互路径IP=〈∞1,∞2,…,∞n〉上的消息序列IS=〈∞1 M,∞2 M,…,∞n M〉是交互路径IP产生的交互消息链。

定义3.13 服务s1和s2的一条交互路径IP=〈∞1,∞2,…,∞n〉为有效交互路径需同时满足以下两个条件:

(1)服务s1参与的交互路径IP的操作组成的操作序列PQs1=<ϑ(∞1,s1),ϑ(∞2,s1),…,ϑ(∞n,s1)>为SV1的完全操作序列;

(2)服务s2参与的交互路径IP的操作组成的操作序列PQs2=<ϑ(∞1,s2),ϑ(∞2,s2),…,ϑ(∞n,s2)>为SV2的完全操作序列。

以上两个条件保证了两个服务根据交互路径进行交互之后,两个服务均能到达结束状态。

定义3.14 如果服务s1和s2之间的所有交互路径均为有效交互路径,则服务s1和s2是完全兼容的。

定义3.15 如果服务s1和s2之间存在一条有效交互路径,则服务s1和s2是局部兼容的。

从完全兼容和局部兼容这两个定义可以看出,如果两个服务是完全兼容的,则这两个服务一定是局部兼容的;反之,如果两个服务是局部兼容的,则这两个服务不一定是完全兼容的。

定义3.16 如果服务s1和s2是完全兼容或者局部兼容的,则称这两个服务是可兼容的。

定义3.17 如果服务s1和s2之间存在n条交互路径,且有效交互路径的数量为m,则这两个服务的兼容度为ῶ(s1,s2)=m/n(0≤ῶ(s1,s2)≤1)。

ῶ(s1,s2)=1表示两个服务是完全兼容的;ῶ(s1,s2)=0表示两个服务在任何情况下均无法完成正常的交互;0<ῶ(s1,s2)<1表示两个服务在某些情况下是可以正常交互的,兼容度越大则说明两个服务在交互过程中成功的可能性也越大。

3.3.3.2 交互行为描述

订票服务、客户代理和机票数据服务间的交互如图3.6所示。

图3.6 订票服务、机票数据服务与客户代理之间的交互

首先,将3个服务拆分成每两个服务之间的交互。从图3.6可以看出,机票数据服务和客户代理都只和订票服务交互,而订票服务在从状态B到状态D之间只和机票数据服务交互。那么就可以将订票服务中状态B到状态D设定为订票服务的一个子服务Agency-B′。下面先描述机票数据服务与订票服务子服务Agency-B′之间的交互过程,如图3.7所示。

机票数据服务Data与订票服务子服务Agency-B′之间存在两种可能的交互过程,如图3.7所示。

图3.7 订票子服务与机票数据服务之间的交互

(1)Agency-B′在初始状态B通过操作AB1向Data发送消息Get之后进入状态C;Data在初始状态B从AB1接收到消息Get之后进入状态C。检查机票数据信息之后,如果存在客户请求的机票信息,则Data在状态C通过AB2向Agency-B′发送消息Tic进入结束状态D。至此,两个服务之间的交互结束。(www.xing528.com)

(2)Agency-B′在初始状态B通过操作AB1向Data发送消息Get之后进入状态C;Data在初始状态B从AB1接收到消息Get之后进入状态C。检查机票数据信息之后,如果不存在客户请求的机票信息,则Data在状态C通过AB3向Agency-B′发送消息NTc进入结束状态D。至此,两个服务之间的交互结束。

通过上述描述的交互过程,可知如下结果(这里用A代表Agency-B′,B代表Data):

(1)上述交互过程(1)中的交互因子为∞1=(A.AB 1,B.AB 1,{Get})和∞2=(B.AB 2,A.AB 2,{Tic}),且ϑ(∞1,A)=AB 1,ϑ(∞1,B)=AB 1,ϑ(∞2,A)=AB 2,ϑ(∞2,B)=AB 2;

(2)交互过程(2)中的交互因子为∞1=(A.AB 1,B.AB 1,{Get})和∞2=(B.AB 3,A.AB 3,{NTc}),且ϑ(∞1,A)=AB 1,ϑ(∞1,B)=AB 1,ϑ(∞2,A)=AB 3,ϑ(∞2,B)=AB 3;

(3)IP1=<∞1=(A.AB 1,B.AB 1,{Get}),∞2=(B.AB 2,A.AB 2,{Tic})>为过程(1)的交互路径,IP2=<∞1=(A.AB 1,B.AB 1,{Get}),∞2=(B.AB 3,A.AB 3,{NTc})>为过程(2)的交互路径;

(4)因为在过程(1)中PQA=<A.AB 1,A.AB 2>是SVA的完全操作序列,且PQB=<B.AB 1,B.AB 2>是SVB的完全操作序列,所以IP1是有效交互路径;

(5)因为在过程(2)中PQA=<A.AB 1,A.AB 3>是SVA的完全操作序列,且PQB=<B.AB 1,B.AB 3>是SVB的完全操作序列,所以IP2是有效交互路径;

(6)因为服务A和B之间的所有交互路径均为有效交互路径,所以服务A和B是完全兼容的,兼容度ῶ(A,B)=1。

至此,可以将服务A和B都表达成相应的进程PA和PB

两个服务之间的交互可以表达成如式3.6所示的组合进程P(A,B)

接下来描述订票服务Agency和客户代理Client之间的交互过程。先将订票子服务看成一个状态B′来讨论,如图3.8所示。

订票服务Agency与客户代理Client之间存在两种可能的交互过程:

(1)Client在初始状态A通过操作AC1向Agency发送消息Req之后进入状态B′;Agency在初始状态A从AC1接收到消息Req之后进入状态B′。检查机票数据信息之后,如果存在客户请求的机票信息,则Agency在状态B′通过AC3向Client发送消息Acc进入结束状态E。至此,两个服务之间的交互结束。

图3.8 订票服务与客户代理之间的交互

(2)Client在初始状态A通过操作AC1向Agency发送消息Req之后进入状态B′;Agency在初始状态A从AC1接收到消息Req之后进入状态B′。检查机票数据信息之后,如果不存在客户请求的机票信息,则Agency在状态B′通过AC2向Client发送消息Ref进入结束状态E。至此,两个服务之间的交互结束。

由于B′本身是完全兼容的,始终可以到达结束状态,所以Agency与Client也是完全兼容的。

至此,可以将服务Ag和C都表达成相应的进程PAg和PC(这里用Ag代表Agency,C代表Client)。

两个服务之间的交互可以表达成如式3.9所示的组合进程P(Ag,C)

考虑如图3.9所示的3个服务交互的情况。同样,将3个服务拆分成每两个服务之间的交互,分别如图3.10、图3.11所示。

图3.9 3个服务交互

图3.10 D2和A2-B'交互

根据交互路径的定义,图3.10所示的两个服务之间存在如下两条交互路径(这里用A代表A2-B′,B代表D2)。

(1)IP1=<∞1=(A.AB 1,B.AB 1,{Get}),∞2=(B.AB 2,A.AB 2,{Tic})>;

(2)IP2=<∞1=(A.AB 1,B.AB 1,{Get}),∞2=(B.AB 3,null,{NTc})>。

根据有效交互路径的定义,IP1为有效交互路径,而IP2为非有效交互路径,因此这两个服务是局部兼容的。事实上,交互路径IP2表示了这样一种交互的过程:A2-B′在初始状态B通过操作AB1向D2发送消息Get之后进入状态C;D2在初始状态B从AB1接收到消息Get之后进入状态C。检查机票数据信息之后,如果不存在客户请求的机票信息,则D2在状态C通过AB3向A2-B′发送消息NTc,然后A2-B′无法接收该消息,因此导致两个服务交互失败。

图3.11 A2和C2交互

根据交互路径的定义,图3.11所示的两个服务之间存在如下两条交互路径(Ag代表A2,C代表C2)。

(1)IP1=<∞1=(C.AC1,Ag.AC1,{Req}),∞2=(null,C.AC2,{Ref})>;

(2)IP2=<∞1=(C.AC1,Ag.AC1,{Req}),∞2=(Ag.AC3,C.AC3,{Acc})>。

根据有效交互路径的定义,IP2为有效交互路径,而IP1为非有效交互路径,因此这两个服务是局部兼容的。事实上,交互路径IP1表示了这样一种交互的过程:C2在初始状态A通过操作AC1向Agency发送消息Req之后进入状态B′;A2在初始状态A从AC1接收到消息Req之后进入状态B′。检查机票数据信息之后,如果不存在客户请求的机票信息,则A2无法向C2发送消息Ref,C2无法接收该消息,因此导致两个服务交互失败。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈