首页> 中国专利> 一种容错的万维网服务业务活动协同方法

一种容错的万维网服务业务活动协同方法

摘要

一种容错的万维网服务业务活动协同方法具体涉及Web服务业务活动协同方法,所提出的容错方法在业务活动协同过程中,当出现结点故障或通信故障时,能保证协同结果一致性。该协同方法包括:容错的参与者完成协同方法FBAPC和容错的协调者完成协同方法FBACC,FBAPC和FBACC分别由状态集、事件集、协调者协同过程和参与者协同过程组成。在开始时,协调者和参与者被初始化为活动状态Active。在协同过程中,协调者和参与者通过报文到达、报文发送和内部事件等驱动业务活动的协同。FBAPC是由参与者向协调者发送已完成报文Completed,来触发协同结果一致性确认;而FBACC是由协调者发送Complete报文,来触发协同结果一致性确认。

著录项

  • 公开/公告号CN1953450A

    专利类型发明专利

  • 公开/公告日2007-04-25

    原文格式PDF

  • 申请/专利权人 南京邮电大学;

    申请/专利号CN200610096753.2

  • 发明设计人 管有庆;沈苏彬;王晓军;

    申请日2006-10-13

  • 分类号H04L29/06(20060101);

  • 代理机构32200 南京经纬专利商标代理有限公司;

  • 代理人叶连生

  • 地址 210003 江苏省南京市新模范马路66号

  • 入库时间 2023-12-17 18:33:38

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-01

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L29/06 变更前: 变更后: 申请日:20061013

    专利权人的姓名或者名称、地址的变更

  • 2012-09-19

    专利权的转移 IPC(主分类):H04L29/06 变更前: 变更后: 登记生效日:20120816 申请日:20061013

    专利申请权、专利权的转移

  • 2009-05-27

    授权

    授权

  • 2007-06-13

    实质审查的生效

    实质审查的生效

  • 2007-04-25

    公开

    公开

说明书

技术领域

本发明涉及Web服务领域的事务处理,具体涉及Web服务业务活动协同方法。

背景技术

将Web服务组合成新的业务活动时,需要Web服务事务处理技术的支持来保证结果的一致性。Web服务事务处理通过协同保证了Web服务执行结果的一致性,让构成业务活动的各个Web服务协同工作是Web服务事务处理的核心技术之一。Web服务事务分为原子事务和业务活动两类,WS-BA(参见引证文件)是一种用于协同Web服务业务活动的协同协议。WS-BA考虑了参与者运行出错的情况,但还不够全面,只涉及到参与者处于Active和Compensating状态时出错的情况。实际上,无论是参与者、协调者,无论它们处于什么状态,都有可能发生结点或通信等故障。在出现结点或通信故障时,为了提高WS-BA实际应用的容错能力,本发明对WS-BA在容错方面进行了扩展,分别通过内部事件F和T来触发协调者和参与者根据日志项进行状态恢复和报文重发处理。容错的Web服务业务活动协同方法包括容错的参与者完成协同方法FBAPC(Fault-tolerance BusinessAgreement with Participant Completion)和容错的协调者完成协同方法FBACC(Fault-tolerance Business Agreement with Coordinator Completion)。FBAPC是由参与者向协调者发送Completed报文,来触发协同结果一致性确认;而FBACC是由协调者发送Complete报文,来触发协同结果一致性确认。

在Web服务领域,通过工作流等技术将多个Web服务组合成新的业务活动,业务活动采用FBAPC或FBACC协同方法,来保证Web服务的执行结果的一致性。在业务活动协同过程中,即使出现结点或通信故障,FBAPC和FBACC也能保证结果一致性。

引证文件:由IBM和Microsoft等公司制定的WS-BusinessActivity(版本1.0),网址为:

http://www-128.ibm.com/developerworks/library/specification/ws-tx/#atom,发布日期为2005年8月。

发明内容

技术问题:本发明的目的在于提供一种容错的万维网服务业务活动协同方法,在协同Web服务业务活动的过程中,当出现结点故障或通信故障时,能保证协同结果一致性。

技术方案:本发明包括FBAPC和FBACC这两个协同方法,协同方法涉及协调者和参与者这两个参与方。FBAPC与FBACC相似,区别在于FBAPC是由参与者向协调者发送Completed报文,来触发协同结果一致性确认;而FBACC是由协调者发送Complete报文,来触发协同结果一致性确认。

FBAPC和FBACC分别由一个四元组(S,E,A1,A2)组成。其中,S表示协调者和参与者的状态集;E表示事件集;A1表示协调者协同过程;A2表示参与者协调协同过程。

本发明的容错的万维网服务业务活动协同方法按如下的步骤进行:

1.)在协同开始时,协调者和参与者被初始化为活动状态;

2.)协调者和参与者的状态集为:{活动状态,取消处理状态,取消处理状态2,退出处理状态,出错处理状态,出错处理状态2,完成处理状态,已完成状态,结束处理状态,补偿处理状态,结束状态};

3.)协调者和参与者的协同过程通过事件驱动,有三种类型的事件:①报文到达事件,②报文发送事件,③内部事件:包括定时器触发的事件T、系统重新启动触发的事件F;

4.)到达和发送的报文集为:{结束报文,取消报文,补偿报文,完成报文,已出错报文,已退出报文,已完成报文,出错报文,已补偿报文,已结束报文,已取消报文,退出报文,重发报文};

5.)当协调者报文到达事件发生时,FBAPC的协调者根据接收的报文内容分类处理。具体操作为:a.若为退出报文:若协调者状态为活动状态或取消处理状态,则写退出处理状态日志项,设置协调者状态为退出处理状态;若协调者状态为结束状态,则向参与者发送已退出报文;b.若为已完成报文:若协调者状态为活动状态或取消处理状态,则写已完成状态日志项,设置协调者状态为已完成状态;若协调者状态为结束处理状态,则向参与者发送结束报文;若协调者状态为补偿处理状态,则向参与者发送补偿报文;c.若为出错报文:若协调者状态为活动状态或取消处理状态,则写出错处理状态日志项,设置协调者状态为出错处理状态;若协调者状态为补偿处理状态,则写出错处理状态2日志项,设置协调者状态为出错处理状态2;若协调者状态为结束状态,则向参与者发送已出错报文;d.若为已取消报文:若协调者状态为取消处理状态,则写结束状态日志项,设置协调者状态为结束状态;e.若为已结束报文:若协调者状态为结束处理状态,则写结束状态日志项,设置协调者状态为结束状态;f.若为已补偿报文:若协调者状态为补偿处理状态,则写结束状态日志项,设置协调者状态为结束状态;g.若为重发报文:若协调者状态为取消处理状态,则向参与者发送取消报文;

6.)当协调者报文到达事件发生时,FBACC的协调者根据接收的报文内容分类处理。具体操作为:a.若为退出报文:若协调者状态为活动状态或取消处理状态或取消处理状态2或完成处理状态,则写退出处理状态日志项,设置协调者状态为退出处理状态;若协调者状态为结束状态,则向参与者发送已退出报文;b.若为已完成报文:若协调者状态为完成处理状态或取消处理状态2,则写已完成状态日志项,设置协调者状态为已完成状态;若协调者状态为结束处理状态,则向参与者发送结束报文;若协调者状态为补偿处理状态,则向参与者发送补偿报文;c.若为出错报文:若协调者状态为活动状态或取消处理状态或取消处理状态2或完成处理状态,则写出错处理状态日志项,设置协调者状态为出错处理状态;若协调者状态为补偿处理状态,则写出错处理状态2日志项,设置协调者状态为出错处理状态2;若协调者状态为结束状态,则向参与者发送已出错报文;d.若为已取消报文:若协调者状态为取消处理状态或取消处理状态2,则:写结束状态日志项,设置协调者状态为结束状态;e.若为已结束报文:若协调者状态为结束处理状态,则写结束状态日志项,设置协调者状态为结束状态;f.若为已补偿报文:若协调者状态为补偿处理状态,则写结束状态日志项,设置协调者状态为结束状态;g.若为重发报文:若协调者状态为取消处理状态或取消处理状态2,则向参与者发送取消报文;若协调者状态为完成处理状态,则向参与者发送完成报文;

7.)当参与者报文到达事件发生时,FBAPC的参与者根据接收的报文内容分类处理。具体操作为:a.若为取消报文:若参与者状态为活动状态,则写取消处理状态日志项,设置参与者状态为取消处理状态;若参与者状态为已完成状态,则向协调者发送已完成报文;若参与者状态为出错处理状态,则向协调者发送出错报文;若参与者状态为退出处理状态,则向协调者发送退出报文;若参与者状态为结束状态,则向协调者发送已取消报文;b.若为结束报文:若参与者状态为已完成状态,则写结束处理状态日志项,设置参与者状态为结束处理状态;若参与者状态为结束状态,则向协调者发送已结束报文;c.若为补偿报文:若参与者状态为已完成状态,则写补偿处理状态日志项,设置参与者状态为补偿处理状态;若参与者状态为出错处理状态2,则向协调者发送出错报文;若参与者状态为结束状态,则向协调者发送已补偿报文;d.若为已出错报文:若参与者状态为出错处理状态或出错处理状态2,则写结束状态日志项,设置参与者状态为结束状态;e.若为已退出报文:若参与者状态为退出处理状态,则写结束状态日志项,设置参与者状态为结束状态;f.若为重发报文:若参与者状态为已完成状态,则向协调者发送已完成报文;若参与者状态为出错处理状态,则向协调者发送出错报文;若参与者状态为退出处理状态,则向协调者发送退出报文;

8.)当参与者报文到达事件发生时,FBACC的参与者根据接收的报文内容分类处理。具体操作为:a.若为取消报文:若参与者状态为活动状态或完成处理状态,则写取消处理状态日志项,设置参与者状态为取消处理状态;若参与者状态为已完成状态,则向协调者发送已完成报文;若参与者状态为出错处理状态,则向协调者发送出错报文;若参与者状态为退出处理状态,则向协调者发送退出报文;若参与者状态为结束状态,则向协调者发送已取消报文;b.若为结束报文:若参与者状态为已完成状态,则写结束处理状态日志项,设置参与者状态为结束处理状态;若参与者状态为结束状态,则向协调者发送已结束报文;c.若为补偿报文:若参与者状态为已完成状态,则写补偿处理状态日志项,设置参与者状态为补偿处理状态;若参与者状态为出错处理状态2,则向协调者发送出错报文;若参与者状态为结束状态,则向协调者发送已补偿报文;d.若为已出错报文:若参与者状态为出错处理状态或出错处理状态2,则写结束状态日志项,设置参与者状态为结束状态;e.若为已退出报文:若参与者状态为退出处理状态,则写结束状态日志项,设置参与者状态为结束状态;f.若为重发报文:若参与者状态为出错处理状态,则向协调者发送出错报文;若参与者状态为退出处理状态,则向协调者发送退出报文;g.若为完成报文:若参与者状态为活动状态,则写完成处理状态日志项,设置参与者状态为完成处理状态;若参与者状态为已完成状态,则向协调者发送已完成报文;若参与者状态为出错处理状态,则向协调者发送出错报文;若参与者状态为退出处理状态,则向协调者发送退出报文;

9.)当协调者报文发送事件发生时,FBAPC的协调者根据发送的报文内容分类处理。具体操作为:a.若为取消报文:若协调者状态为活动状态,则写取消处理状态日志项,设置协调者状态为取消处理状态,设置定时器;b.若为结束报文:若协调者状态为已完成状态,则写结束处理状态日志项,设置协调者状态为结束处理状态,设置定时器;c.若为补偿报文:若协调者状态为已完成状态,则写补偿处理状态日志项,设置协调者状态为补偿处理状态,设置定时器;d.若为已出错报文:若协调者状态为出错处理状态,则写结束状态日志项,设置协调者状态为结束状态,设置定时器;e.若为已退出报文:若协调者状态为退出处理状态,则写结束状态日志项,设置协调者状态为结束状态,设置定时器;

10.)当协调者报文发送事件发生时,FBACC的协调者根据发送的报文内容分类处理。具体操作为:a.若为取消报文:若协调者状态为活动状态,则写取消处理状态日志项,设置协调者状态为取消处理状态,设置定时器;若协调者状态为完成处理状态,则写取消处理状态2日志项,设置协调者状态为取消处理状态2,设置定时器;b.若为结束报文:若协调者状态为已完成状态,则写结束处理状态日志项,设置协调者状态为结束处理状态,设置定时器;c.若为补偿报文:若协调者状态为已完成状态,则写补偿处理状态日志项,设置协调者状态为补偿处理状态,设置定时器;d.若为已出错报文:若协调者状态为出错处理状态,则写结束状态日志项,设置协调者状态为结束状态,设置定时器;e.若为已退出报文:若协调者状态为退出处理状态,则写结束状态日志项,设置协调者状态为结束状态,设置定时器;f.若为完成报文:若协调者状态为活动状态,则写完成处理状态日志项,设置协调者状态为完成处理状态,设置定时器;

11.)当参与者报文发送事件发生时,FBAPC的参与者根据发送的报文内容分类处理。具体操作为:a.若为退出报文:若参与者状态为活动状态,则写退出处理状态日志项,设置参与者状态为退出处理状态,设置定时器;b.若为已完成报文:若参与者状态为活动状态,则记录已完成状态日志项,设置参与者状态为已完成状态,设置定时器;c.若为出错报文:若参与者状态为活动状态,则写出错处理状态日志项,设置参与者状态为出错处理状态,设置定时器;若参与者状态为补偿处理状态,则写出错处理状态2日志项,设置参与者状态为出错处理状态2,设置定时器;d.若为已取消报文:若参与者状态为取消处理状态,则写结束状态日志项,设置参与者状态为结束状态,设置定时器;e.若为已结束报文:若参与者状态为结束处理状态,则写结束状态日志项,设置参与者状态为结束状态,设置定时器;f.若为已补偿报文:若参与者状态为补偿处理状态,则写结束状态日志项,设置参与者状态为结束状态,设置定时器;

12.)当参与者报文发送事件发生时,FBACC的参与者根据发送的报文内容分类处理。具体操作为:a.若为退出报文:若参与者状态为活动状态或完成处理状态,则写退出处理状态日志项,设置参与者状态为退出处理状态,设置定时器;b.若为已完成报文:若参与者状态为完成处理状态,则记录已完成状态日志项,设置参与者状态为已完成状态,设置定时器;c.若为出错报文:若参与者状态为活动状态或完成处理状态,则写出错处理状态日志项,设置参与者状态为出错处理状态,设置定时器;若参与者状态为补偿处理状态,则写出错处理状态2日志项,设置参与者状态为出错处理状态2,设置定时器;d.若为已取消报文:若参与者状态为取消处理状态,则写结束状态日志项,设置参与者状态为结束状态,设置定时器;e.若为已结束报文:若参与者状态为结束处理状态,则写结束状态日志项,设置参与者状态为结束状态,设置定时器;f.若为已补偿报文:若参与者状态为补偿处理状态,则写结束状态日志项,设置参与者状态为结束状态,设置定时器;

13.)结点故障恢复后,系统重新启动时,触发内部事件F;

14.)协调者和参与者在发送报文后,需要得到对方的应答时,通过设置定时器来判断是否发生通信故障;如果定时器触发的内部事件T发生,则说明可能由于通信故障,引起报文丢失,导致在规定的时间内未收到对方的应答;

15.)当内部事件即定时器触发的事件T或系统重新启动触发的事件F发生时,FBAPC的协调者根据日志项进行状态恢复和报文重发等处理。具体操作为:如果日志项为空,则向参与者发送重发报文,协调者状态恢复为活动状态;如果日志项为取消处理状态,则向参与者发送取消报文,协调者状态恢复为取消处理状态,设置定时器;如果日志项为退出处理状态,则协调者状态恢复为退出处理状态;如果日志项为出错处理状态,则协调者状态恢复为出错处理状态;如果日志项为出错处理状态2,则协调者状态恢复为出错处理状态2;如果日志项为已完成状态,则协调者状态恢复为已完成状态;如果日志项为结束处理状态,则向参与者发送结束报文,协调者状态恢复为结束处理状态,设置定时器;如果日志项为补偿处理状态,则向参与者发送补偿报文,协调者状态恢复为补偿处理状态,设置定时器:如果日志项为结束状态,则如果是系统重新启动触发的事件F,则协调者状态恢复为结束状态,如果是定时器触发的事件T,则结束。

16.)当内部事件(定时器触发的事件T或系统重新启动触发的事件F)发生时,FBACC的协调者根据日志项进行状态恢复和报文重发等处理。具体操作为:如果日志项为空,则向参与者发送重发报文,协调者状态恢复为活动状态;如果日志项为取消处理状态,则向参与者发送取消报文,协调者状态恢复为取消处理状态,设置定时器;如果日志项为退出处理状态,则协调者状态恢复为退出处理状态;如果日志项为出错处理状态,则协调者状态恢复为出错处理状态;如果日志项为出错处理状态2,则协调者状态恢复为出错处理状态2;如果日志项为已完成状态,则协调者状态恢复为已完成状态;如果日志项为结束处理状态,则向参与者发送结束报文,协调者状态恢复为结束处理状态,设置定时器;如果日志项为补偿处理状态,则向参与者发送补偿报文,协调者状态恢复为补偿处理状态,设置定时器;如果日志项为完成处理状态,则向参与者发送完成报文,协调者状态恢复为完成处理状态,设置定时器;如果日志项为取消处理状态2,则向参与者发送取消报文,协调者状态恢复为取消处理状态2,设置定时器;如果日志项为结束状态,则如果是系统重新启动触发的事件F,则协调者状态恢复为结束状态,如果是定时器触发的事件T,则结束。

17.)当内部事件(定时器触发的事件T或系统重新启动触发的事件F)发生时,FBAPC的参与者根据日志项进行状态恢复和报文重发等处理。具体操作为:如果日志项为空,则向协调者发送重发报文,参与者状态恢复为活动状态;如果日志项为已完成状态,则向协调者发送已完成报文,参与者状态恢复为已完成状态,设置定时器;如果日志项为出错处理状态,则向协调者发送出错报文,参与者状态恢复为出错处理状态,设置定时器;如果日志项为出错处理状态2,则向协调者发送出错报文,参与者状态恢复为出错处理状态2,设置定时器;如果日志项为退出处理状态,则向协调者发送退出报文,参与者状态恢复为退出处理状态,设置定时器:如果日志项为取消处理状态,则参与者状态恢复为取消处理状态;如果日志项为结束处理状态,则参与者状态恢复为结束处理状态;如果日志项为补偿处理状态,则参与者状态恢复为补偿处理状态;如果日志项为结束状态,则如果是系统重新启动触发的事件F,则参与者状态恢复为结束状态,如果是定时器触发的事件T,则结束。

18.)当内部事件(定时器触发的事件T或系统重新启动触发的事件F)发生时,FBACC的参与者根据日志项进行状态恢复和报文重发等处理。具体操作为:如果日志项为空,则向协调者发送重发报文,参与者状态恢复为活动状态;如果日志项为已完成状态,则向协调者发送已完成报文,参与者状态恢复为已完成状态,设置定时器;如果日志项为出错处理状态,则向协调者发送出错报文,参与者状态恢复为出错处理状态,设置定时器;如果日志项为出错处理状态2,则向协调者发送出错报文,参与者状态恢复为出错处理状态2,设置定时器;如果日志项为退出处理状态,则向协调者发送退出报文,参与者状态恢复为退出处理状态,设置定时器;如果日志项为取消处理状态,则参与者状态恢复为取消处理状态;如果日志项为结束处理状态,则参与者状态恢复为结束处理状态;如果日志项为补偿处理状态,则参与者状态恢复为补偿处理状态;如果日志项为完成处理状态,则参与者状态恢复为完成处理状态;如果日志项为结束状态,则如果是系统重新启动触发的事件F,则参与者状态恢复为结束状态,如果是定时器触发的事件,则结束。

附图说明

图1a是本发明的FBAPC协调者协同和报文到达事件处理流程图,

图1b是本发明的FBAPC协调者报文到达事件和报文发送事件处理流程图,

图1c是本发明的FBAPC协调者内部事件处理流程图,

图2a是本发明的FBAPC参与者协同和报文到达事件处理流程图,

图2b是本发明的FBAPC参与者报文到达事件和报文发送事件处理流程图,

图2c是本发明的FBAPC参与者报文发送事件和内部事件处理流程图,

图3a是本发明的FBACC协调者协同和报文到达事件处理流程图,

图3b是本发明的FBACC协调者报文到达事件和报文发送事件处理流程图,

图3c是本发明的FBACC协调者内部事件处理流程图,

图4a是本发明的FBACC参与者协同和报文到达事件处理流程图,

图4b是本发明的FBACC参与者报文到达事件和报文发送事件处理流程图,

图4c是本发明的FBACC参与者报文发送事件和内部事件处理流程图,

图5是本发明的FBAPC协调者状态图,

图6是本发明的FBAPC参与者状态图,

图7是本发明的FBACC协调者状态图,

图8是本发明的FBACC参与者状态图,

在图1a~图4e中,ev表示事件,MsgArrival表示报文到达事件,MsgSend表示报文发送事件,F表示在系统故障后,系统重新启动触发的事件,T表示定时器触发的事件,coordinator_state表示协调者状态,participant_state表示参与者状态,msg表示报文内容,NULL表示日志项为空。

在图5~图8中,有三种类型的弧线,分别为:

→:表示协调者发送的报文,

表示参与者发送的报文,

表示协调者或参与者内部产生的事件。

具体实施方式

一.状态集

FBAPC和FBACC中的状态集为:{Active,Canceling,Canceling2,Exiting,Faulting,Faulting2,Completing,Completed,Closing,Compensating,Ended}。其中,Active:活动状态,Canceling:取消处理状态,Canceling2:取消处理状态2,Exiting:退出处理状态,Faulting:出错处理状态,Faulting2:出错处理状态2,Completing:完成处理状态,Completed:已完成状态,Closing:结束处理状态,Compensating:补偿处理状态,Ended:结束状态。

二.事件集

FBAPC和FBACC中的事件分为三类,分别为:①报文到达事件、②报文发送事件和③内部事件。

FBAPC和FBACC中的报文到达事件和报文发送事件中到达和发送的报文集为:{Close,Cancel,Compensate,Complete,Faulted,Exited,Completed,Fault,Compensated,Closed,Canceled,Exit,Replay}。其中,Close:结束报文,Cancel:取消报文,Compensate:补偿报文,Complete:完成报文,Faulted:已出错报文,Exited:已退出报文,Replay:重发报文,Completed:已完成报文,Fault:出错报文,Compensated:已补偿报文,Closed:已结束报文,Canceled:已取消报文,Exit:退出报文。

内部事件集为:{F,T}。其中,F:在系统故障后,系统重新启动触发的事件;T:定时器触发的事件。

三.协调者协同过程

(一).FBAPC协调者协同过程

FBAPC协调者参照图1a~图1c所示执行相应协同过程。

第一步:协调者进入活动状态Active;

第二步:协调者等待触发事件;

第三步:如果触发事件为报文到达事件,则根据到达的报文分类处理:

(1)若为Exit报文:若协调者状态为Active或Canceling,则写Exiting日志项,设置协调者状态为Exiting;若协调者状态为Ended,则向参与者发送Exited报文;转第二步;

(2)若为Completed报文:若协调者状态为Active或Canceling,则写Completed日志项,设置协调者状态为Completed;若协调者状态为Closing,则向参与者发送Close报文;若协调者状态为Compensating,则向参与者发送Compensate报文;转第二步;

(3)若为Fault报文:若协调者状态为Active或Canceling,则写Faulting日志项,设置协调者状态为Faulting;若协调者状态为Compensating,则写Faulting2日志项,设置协调者状态为Faulting2;若协调者状态为Ended,则向参与者发送Faulted报文;转第二步;

(4)若为Canceled报文:若协调者状态为Canceling,则写Ended日志项,设置协调者状态为Ended;转第二步;

(5)若为Closed报文:若协调者状态为Closing,则写Ended日志项,设置协调者状态为Ended;转第二步;

(6)若为Compensated报文:若协调者状态为Compensating,则写Ended日志项,设置协调者状态为Ended;转第二步;

(7)若为Replay报文:若协调者状态为Canceling,则向参与者发送Cancel报文;转第二步。

第四步:如果触发事件为报文发送事件,则根据发送的报文分类处理:

(1)若为Cancel报文:若协调者状态为Active,则写Canceling日志项,设置协调者状态为Canceling,设置定时器;转第二步;

(2)若为Close报文:若协调者状态为Completed,则:写Closing日志项,设置协调者状态为Closing,设置定时器;转第二步;

(3)若为Compensate报文:若协调者状态为Completed,则写Compensating日志项,设置协调者状态为Compensating,设置定时器;转第二步;

(4)若为Faulted报文:若协调者状态为Faulting,则写Ended日志项,设置协调者状态为Ended,设置定时器;转第二步;

(5)若为Exited报文:若协调者状态为Exiting,则写Ended日志项,设置协调者状态为Ended,设置定时器;转第二步;

第五步:如果触发事件为内部事件T或F,则根据该事务的最后一项日志进行分类处理:

(1)若为Canceling,则向参与者发送Cancel报文,设置协调者状态为Canceling,设置定时器,转第二步;

(2)若为Exiting,则设置协调者状态为Exiting,转第二步;

(3)若为Faulting,则设置协调者状态为Faulting,转第二步;

(4)若为Faulting2,则设置协调者状态为Faulting2,,转第二步;

(5)若为Completed,则设置协调者状态为Completed,转第二步;

(6)若为Ended,则如果触发事件为F,则设置协调者状态为Ended,转第二步:如果触发事件为T,则结束;

(7)若为Closing,则向参与者发送Close报文,设置协调者状态为Closing,设置定时器,转第二步;

(8)若为Compensating,则向参与者发送Compensate报文,设置协调者状态为Compensating,设置定时器,转第二步;

(9)若为空,则向参与者发送Replay报文,设置协调者状态为Active,转第二步。

(二).FBACC协调者协同过程

FBACC协调者参照图3a~图3c所示执行相应协同过程。

第一步:协调者进入活动状态Active;

第二步:协调者等待触发事件;

第三步:如果触发事件为报文到达事件,则根据到达的报文分类处理:

(1)若为Exit报文:若协调者状态为Active或Canceling或Canceling2或Completing,则写Exiting日志项,设置协调者状态为Exiting;若协调者状态为Ended,则向参与者发送Exited报文;转第二步;

(2)若为Completed报文:若协调者状态为Completing或Canceling2,则写Completed日志项,设置协调者状态为Completed;若协调者状态为Closing,则向参与者发送Close报文;若协调者状态为Compensating,则向参与者发送Compensate报文;转第二步;

(3)若为Fault报文:若协调者状态为Active或Canceling或Canceling2或Completing,则写Faulting日志项,设置协调者状态为Faulting;若协调者状态为Compensating,则写Faulting2日志项,设置协调者状态为Faulting2;若协调者状态为Ended,则向参与者发送Faulted报文;转第二步;

(4)若为Canceled报文:若协调者状态为Canceling或Canceling2,则:写Ended日志项,设置协调者状态为Ended;转第二步;

(5)若为Closed报文:若协调者状态为Closing,则写Ended日志项,设置协调者状态为Ended;转第二步;

(6)若为Compensated报文:若协调者状态为Compensating,则写Ended日志项,设置协调者状态为Ended;转第二步;

(7)若为Replay报文:若协调者状态为Canceling或Canceling2,则向参与者发送Cancel报文;若协调者状态为Completing,则向参与者发送Complete报文;转第二步;

第四步:如果触发事件为报文发送事件,则根据发送的报文分类处理:

(1)若为Cancel报文:若协调者状态为Active,则写Canceling日志项,设置协调者状态为Canceling,设置定时器;若协调者状态为Completing,则写Canceling2日志项,设置协调者状态为Canceling2,设置定时器;转第二步;

(2)若为Close报文:若协调者状态为Completed,则写Closing日志项,设置协调者状态为Closing,设置定时器;转第二步;

(3)若为Compensate报文:若协调者状态为Completed,则写Compensating日志项,设置协调者状态为Compensating,设置定时器;转第二步;

(4)若为Faulted报文:若协调者状态为Faulting,则写Ended日志项,设置协调者状态为Ended,设置定时器;转第二步;

(5)若为Exited报文:若协调者状态为Exiting,则写Ended日志项,设置协调者状态为Ended,设置定时器;转第二步;

(6)若为Complete报文:若协调者状态为Active,则写Completing日志项,设置协调者状态为Completing,设置定时器;转第二步;

第五步:如果触发事件为内部事件T或F,则根据该事务的最后一项目志进行分类处理:

(1)若为Canceling,则向参与者发送Cancel报文,设置协调者状态为Canceling,设置定时器,转第二步;

(2)若为Exiting,则设置协调者状态为Exiting,转第二步;

(3)若为Faulting,则设置协调者状态为Faulting,转第二步;

(4)若为Faulting2,则设置协调者状态为Faulting2,转第二步;

(5)若为Completed,则设置协调者状态为Completed,转第二步;

(6)若为Ended,则如果触发事件为F,则设置协调者状态为Ended,转第二步;如果触发事件为T,则结束;

(7)若为Closing,则向参与者发送Close报文,设置协调者状态为Closing,设置定时器,转第二步;

(8)若为Compensating,则向参与者发送Compensate报文,设置协调者状态为Compensating,设置定时器,转第二步;

(9)若为空,则向参与者发送Replay报文,设置协调者状态为Active,转第二步;

(10)若为Completing状态,则向参与者发送Complete报文,设置协调者状态为Completing,设置定时器,转第二步;

(11)若为Canceling2,则向参与者发送Cancel报文,设置协调者状态为Canceling2,设置定时器,转第二步。

四.参与者协同过程

(一).FBAPC参与者协同过程

FBAPC参与者参照图2a~图2c所示执行相应协同过程。

第一步:参与者进入活动状态Active;

第二步:参与者等待触发事件;

第三步:如果触发事件为报文到达事件,则根据到达的报文分类处理:

(1)若为Cancel报文:若参与者状态为Active,则写Canceling日志项,设置参与者状态为Canceling;若参与者状态为Completed,则向协调者发送Completed报文;若参与者状态为Faulting,则向协调者发送Fault报文;若参与者状态为Exiting,则向协调者发送Exit报文;若参与者状态为Ended,则向协调者发送Canceled报文;转第二步;

(2)若为Close报文:若参与者状态为Completed,则写Closing日志项,设置参与者状态为Closing;若参与者状态为Ended,则向协调者发送Closed报文;转第二步:

(3)若为Compensate报文:若参与者状态为Completed,则写Compensating日志项,设置参与者状态为Compensating;若参与者状态为Faulting2,则向协调者发送Fault报文;若参与者状态为Ended,则向协调者发送Compensated报文;转第二步;

(4)若为Faulted报文:若参与者状态为Faulting或Faulting2,则写Ended日志项,设置参与者状态为Ended;转第二步;

(5)若为Exited报文:若参与者状态为Exiting,则写Ended日志项,设置参与者状态为Ended;转第二步;

(6)若为Replay报文:若参与者状态为Completed,则向协调者发送Completed报文;若参与者状态为Faulting,则向协调者发送Fault报文;若参与者状态为Exiting,则向协调者发送Exit报文;转第二步;

第四步:如果触发事件为报文发送事件,则根据发送的报文分类处理:

(1)若为Exit报文:若参与者状态为Active,则写Exiting日志项,设置参与者状态为Exiting,设置定时器;转第二步;

(2)若为Completed报文:若参与者状态为Active,则写Completed日志项,设置参与者状态为Completed,设置定时器;转第二步;

(3)若为Fault报文:若参与者状态为Active,则写Faulting日志项,设置参与者状态为Faulting,设置定时器;若参与者状态为Compensating,则写Faulting2日志项,设置参与者状态为Faulting2,设置定时器;转第二步;

(4)若为Canceled报文:若参与者状态为Canceling,则写Ended日志项,设置参与者状态为Ended,设置定时器;转第二步;

(5)若为Closed报文:若参与者状态为Closing,则写Ended日志项,设置参与者状态为Ended,设置定时器;转第二步;

(6)若为Compensated报文:若参与者状态为Compensating,则写Ended日志项,设置参与者状态为Ended,设置定时器;转第二步;

第五步:如果触发事件为内部事件T或F,则根据该事务的最后一项日志进行分类处理:

(1)若为Completed,则向协调者发送Completed报文,设置参与者状态为Completed,设置定时器,转第二步;

(2)若为Faulting,则向协调者发送Fault报文,设置参与者状态为Faulting,设置定时器,转第二步;

(3)若为Faulting2,则向协调者发送Fault报文,设置参与者状态为Faulting2,设置定时器,转第二步;

(4)若为Exiting,则向协调者发送Exit报文,设置参与者状态为Exiting,设置定时器,转第二步;

(5)若为Canceling,则设置参与者状态为Canceling,转第二步;

(6)若为Closing,则设置参与者状态为Closing,转第二步;

(7)若为Compensating,则设置参与者状态为Compensating,转第二步;

(8)若为Ended,则如果触发事件为F,则设置参与者状态Ended,转第二步;如果触发事件为T,则结束;

(9)若为空:则向协调者发送Replay报文,设置参与者状态为Active,转第二步。

(二).FBACC参与者协同过程

FBACC参与者参照图4a~图4c所示执行相应协同过程

第一步:参与者进入活动状态Active;

第二步:参与者等待触发事件;

第三步:如果触发事件为报文到达事件,则根据到达的报文分类处理:

(1)若为Cancel报文:若参与者状态为Active或Completing,则写Canceling日志项,设置参与者状态为Canceling;若参与者状态为Completed,则向协调者发送Completed报文;若参与者状态为Faulting,则向协调者发送Fault报文;若参与者状态为Exiting,则向协调者发送Exit报文;若参与者状态为Ended,则向协调者发送Canceled报文;转第二步;

(2)若为Close报文:若参与者状态为Completed,则写Closing日志项,设置参与者状态为Closing;若参与者状态为Ended,则向协调者发送Closed报文;转第二步;

(3)若为Compensate报文:若参与者状态为Completed,则写Compensating日志项,设置参与者状态为Compensating;若参与者状态为Faulting2,则向协调者发送Fault报文;若参与者状态为Ended,则向协调者发送Compensated报文;转第二步;

(4)若为Faulted报文:若参与者状态为Faulting或Faulting2,则写Ended日志项,设置参与者状态为Ended;转第二步;

(5)若为Exited报文:若参与者状态为Exiting,则写Ended日志项,设置参与者状态为Ended;转第二步;

(6)若为Replay报文:若参与者状态为Faulting,则向协调者发送Fault报文;若参与者状态为Exiting,则向协调者发送Exit报文;转第二步;

(7)若为Complete报文:若参与者状态为Active,则写Completing日志项,设置参与者状态为Completing;若参与者状态为Completed,则向协调者发送Completed报文;若参与者状态为Faulting,则向协调者发送Fault报文;若参与者状态为Exiting,则向协调者发送Exit报文;转第二步;

第四步:如果触发事件为报文发送事件,则根据发送的报文分类处理:

(1)若为Exit报文:若参与者状态为Active或Completing,则写Exiting日志项,设置参与者状态为Exiting,设置定时器;转第二步;

(2)若为Completed报文:若参与者状态为Completing,则写Completed日志项,设置参与者状态为Completed,设置定时器;转第二步;

(3)若为Fault报文:若参与者状态为Active或Completing,则写Faulting日志项,设置参与者状态为Faulting,设置定时器;若参与者状态为Compensating,则写Faulting2日志项,设置参与者状态为Faulting2,设置定时器;转第二步;

(4)若为Canceled报文:若参与者状态为Canceling,则写Ended日志项,设置参与者状态为Ended,设置定时器;转第二步;

(5)若为Closed报文:若参与者状态为Closing,则写Ended日志项,设置参与者状态为Ended,设置定时器;转第二步;

(6)若为Compensated报文:若参与者状态为Compensating,则写Ended日志项,设置参与者状态为Ended,设置定时器;转第二步;

第五步:如果触发事件为内部事件T或F,则根据该事务的最后一项日志进行分类处理:

(1)若为Completed,则向协调者发送Completed报文,设置参与者状态为Completed,设置定时器,转第二步;

(2)若为Faulting,则向协调者发送Fault报文,设置参与者状态为Faulting,设置定时器,转第二步;

(3)若为Faulting2,则向协调者发送Fault报文,设置参与者状态为Faulting2,设置定时器,转第二步;

(4)若为Exiting状态,则向协调者发送Exit报文,设置参与者状态为Exiting,设置定时器,转第二步;

(5)若为Canceling,则设置参与者状态为Canceling,转第二步;

(6)若为Closing,则设置参与者状态为Closing,转第二步;

(7)若为Compensating,则设置参与者状态为Compensating,转第二步;

(8)若为Ended,则如果触发事件为F,则设置参与者状态为Ended,转第二步;如果触发事件为T,则结束;

(9)若为空,则向协调者发送Replay报文,设置参与者状态为Active,转第二步;

(10)若为Completing,则设置参与者状态为Completing,转第二步。

FBAPC的容错情况示例如图5和图6所示,FBACC的容错情况示例如图7和图8所示。

1.FBAPC的协调者处于活动状态容错示例

当FBAPC的协调者处于Active状态发生故障时,故障恢复后,协调者还处于Active状态,并向FBAPC的参与者发送Replay报文,了解参与者的状态。参与者可能处于Active、Completed、Exiting或Faulting状态。当参与者处于Active状态,接收到Replay报文后还处于Active状态,到某一时刻会由参与者发送Completed、Exit或Fault报文,或由协调者发送Cancel报文,驱动协同过程走向Ended;当参与者处于Exiting状态,在接收到Replay报文后,向协调者重发Exit报文,通知协调者,它已退出,让协调者忘记该参与者,驱动协同过程走向Ended;当参与者处于Faulting状态,在接收到Replay报文后,向协调者重发Fault报文,通知协调者,它遇到了错误情况,让协调者忘记该参与者,驱动协同过程走向Ended;当参与者处于Completed状态,在接收到Replay报文后,向协调者重发Completed报文,通知协调者,它已完成了业务活动相关任务的执行,等待协调者的结束或补偿指令。

2.FBAPC的参与者处于已完成状态容错示例

当FBAPC的参与者处于Completed状态发生故障时,故障恢复后,参与者还处于Completed状态,并向FBAPC的协调者发送Completed报文,要求协调者重发由于参与者故障而未能接收到的报文。此时协调者可能处于Active、Canceling、Completed、Closing或Compensating状态。如果协调者处于Active状态,则接收到重发的Completed报文后,状态转换为Completed;如果协调者处于Canceling状态,则接收到重发的Completed报文后,状态转换为Completed;如果协调者处于Completed状态,则接收到Completed报文后,状态还处于Completed,到某一时刻,协调者会发送Close报文或Compensate报文驱动协同过程走向Ended;如果协调者处于Closing状态,接收到Completed报文后,重新向参与者发送Close报文;如果协调者处于Compensating状态,接收到Completed报文后,重新向参与者发送Compensate报文,驱动协同过程走向Ended。

3.FBACC的协调者处于完成处理状态容错示例

当FBACC的协调者处于Completing状态发生故障时,FBACC的参与者可能处于Active、Completing、Completed、Faulting或Exit状态。故障恢复后,协调者还处于Completing状态,由于协调者不记得参与者是否做出响应,因此向参与者重发Complete报文。如果参与者处于Active状态,则接收到Complete报文后进入Completing状态;如果参与者处于Completing状态,则接收到Complete报文后,还处于Completing状态,到某一时刻,参与者会发送Completed报文,驱动协同过程走向Ended;如果参与者处于Completed状态,则接收到Complete报文后向协调者重发Completed报文;如果参与者处于Faulting状态,则接收到Complete报文后向协调者重发Fault报文;如果参与者处于Exiting状态,则接收到Complete报文后向协调者重发Exit报文。

4.FBACC的参与者处于结束处理状态容错示例

当FBACC的参与者处于Closing状态发生故障时,FBACC的协调者也处于Closing状态。故障恢复后,参与者还处于Closing状态,。参与者会在某一时刻向协调者发送Closed报文,驱动协同过程走向Ended。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号