《一种基于约束规则的服务恢复方法.pdf》由会员分享,可在线阅读,更多相关《一种基于约束规则的服务恢复方法.pdf(15页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102780753 A (43)申请公布日 2012.11.14 C N 1 0 2 7 8 0 7 5 3 A *CN102780753A* (21)申请号 201110349574.6 (22)申请日 2011.11.08 H04L 29/08(2006.01) (71)申请人东南大学 地址 210096 江苏省南京市玄武区四牌楼2 号 (72)发明人曹玖新 罗军舟 杨婧 刘波 东方 (74)专利代理机构南京经纬专利商标代理有限 公司 32200 代理人许方 (54) 发明名称 一种基于约束规则的服务恢复方法 (57) 摘要 本发明涉及服务计算领域,尤其涉及一种基。
2、 于约束规则的服务恢复方法。当业务事务中异常 被捕获到,首先通过对约束规则的评估来确定合 理的恢复策略,将前向恢复与后向恢复相结合,并 加入了与用户交互的步骤,使用户参与到业务事 务的恢复过程中;其次为了充分利用异常出现时 的服务实时状态信息,本发明提出根据异常属性 约束及上下文对业务事务异常的分类方法,根据 分类以确定恢复开始点;本发明提出补偿路径的 概念,并根据补偿服务的前置条件及上下文选择 可行的补偿路径实例;最后本发明利用用户对不 同开销的敏感权值来选择最优的补偿路径实例。 实验分析表明利用约束规则提高了恢复策略的成 功率及效率。 (51)Int.Cl. 权利要求书3页 说明书9页 附。
3、图2页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 9 页 附图 2 页 1/3页 2 1.一种基于约束规则的服务恢复方法,其特征在于:在业务事务中的某个域中的服务 s出现异常e,此异常被捕获后,利用约束规则经过如下步骤制定进行服务恢复: (1)评估s对应的完成性约束条件(ICCC),若评估结果为true,则表示此异常可被忽 略,业务事务继续执行,转到;若评估结果为false转到(2); (2)根据上下文属性信息以及服务s的异常属性约束对异常e进行分类,根据分类来确 定恢复开始点:重试(转(3)、替换服务(转(4)、与用户交互(转(5)或补偿(转(6。
4、); (3)若服务s是原子服务,且对此服务的重试次数RetryTimes小于对此服务所设定的 最大重试次数MaxinumRetryTimes,则重新调用服务s;若重试成功,则业务事务继续执行; 否则转(4); (4)若存在服务s的可替代服务集S,则从中选出一个作为替代服务s;先补偿服务s, 取消其所造成的影响,再调用服务s,并将s从S中移除;若服务s的可替代服务集S为 空,则转(5)。若s执行成功,则业务事务继续执行;否则转(5); (5)若服务s被设定为与用户交互服务,则向用户提供建议。此建议包括与出现异 常的服务s有相似功能属性和非功能属性,但已超出用户在业务事务执行时所提出的可 接受范围。
5、的服务。若用户选择其中一个服务或者放弃此异常服务,则对更高一级域中关 于此域的CCC进行评估。若CCC不满足,则说明此域需要被补偿,域向更高一级域抛出 UnatomicException异常,并等待来自更高级域中协调者的补偿命令,转(6),而后业务事 务继续执行;若CCC满足则直接转(5),且在此过程中通过乐观的期望策略对ICCC进行评 估(默认情况下使用乐观的期望策略),而后业务事务继续执行。若用户不接受建议,则转 (5); (6)收到来自更高级域中协调者的补偿命令后,进入到对本域进行补偿过程。 2.根据权利要求1所述的一种基于约束规则的服务恢复方法,其特征在于:根据上下 文属性信息以及服务。
6、s的异常属性约束对异常e进行分类;根据分类来确定恢复开始点的 具体方法如下: (1)设为服务s的异常属性约束集,将恢复开始点StartOfRecovry初始化为 空;设异常类型t,其中的元素按序分别代表网 络设备暂时不可用异常属性约束、网络设备永久不可用异常属性约束、可替代物理异 常属性约束、不可替代物理异常属性约束、服务限制异常属性约束、服务描述异常属性 约束和用户异常属性约束;对于中分别对应于上面七种异常的的七种异常属性约束 按序将其赋值给表示某一具体异常属性约束的进 行(2)到(12)步骤的操作; (2)将初始化为的类型所对应的上下文类型向量,转(3); (3)一个标记为一个谓词或操作。。
7、初始化谓词栈predicateStack为空,操作数栈 operaterStack为空,当前标记curToken为空,评估结果result初始化为true; (4)获取下一个标记,赋值给curToken。若curToken不为空则转(5),否则转(9); (5)若curToken是谓词则转(6),否则operaterStack将curToken入栈; (6)若此谓词为”&”则转(7),否则predicateStack将curToken入栈; (7)operaterStack出栈,predicateStack栈顶元素赋值给topPredicate。根据对 topPredicate进行评估,若to。
8、pPredicate不满足,则predicateStack将”false”入栈;否 权 利 要 求 书CN 102780753 A 2/3页 3 则predicateStack将curToken入栈; (8)转(4); (9)若predictStack非空,则转(10); (10)将predicateStack栈顶元素赋值给topPredicate,predicateStack出栈。根据 对topPredicate进行评估,如果topPredicate被满足,则转(12); (11)将false赋值给result; (12)异常属性约束评估结束。如果result为true,则将t赋值为所对应的。
9、异常类 型,转(13),否则转(1); (14)如果ta,a,a,则将StartOfRecovery赋值为RETRY,否则若 tb,a,b,则将StartOfRecovery赋值为REPLACE,否则若tb,则将 StartOfRecovery赋值为INTERACTORCOMPENSATE。RETRY代表重试、REPLACE代表替代服 务、INTERACTORCOMPENSATE代表与用户交互或补偿。 3.根据权利要求1所述的一种基于约束规则的服务恢复方法,其特征在于:域的补偿 方法如下: (1)设SS为域内已完成和正在执行的服务集合,cSS为SS的一个副本,需要补偿的服 务compS初始化为。
10、空; (2)若cSS为空,转(7); (3)获得服务s的可忽略补偿约束条件集合rs,转(4); (4)对rs中的每一个可忽略补偿约束条件ic,若ic被满足,则进行记录,然后继续判 断下一个ic; (5)将tempSS初始化为与可忽略补偿约束条件ic相关的在cSS中但不在compS中的 服务集合,并将其加入compS,将tempSS从cSS中去除; (6)对tempSS中的每一个服务ts,进行(2)到(5)的操作; (7)对cSS中的每一个服务css,获得其可忽略补偿约束条件集合rs,转(8); (8)对rs中的每个可忽略补偿约束条件r,若r被满足,转(9);否则将css加入到集 合compS中。
11、,转(6); (9)根据域内的逻辑规则LR对compS中的服务进行补偿。 4.根据权利要求3所述的域的补偿方法,其特征在于:根据上下文对补偿过程进行优 化的具体方法如下: (1)初始化异常上下文所匹配的补偿路径实例化集合为空集; (2)设P 1 ,P 2 ,.,P n-1 ,P n 是可能的补偿路径,对于其中的每一条路径P i ,执行下面(3) 到(6)的操作。 (3)对于P i 的每一个实例化执行(4)到(6)的操作; (4)初始化Completed为true,对中的每一个具体补偿服务C k ,执行(5)中的操作; (5)根据上下文属性对C k 的预置条件进行评估,若其不被满足,则置 Com。
12、pleted为false,转(3); 这里定义一个具体补偿服务C的预置条件为: Requirement C (p 1 ,rel,v 1 )op(p 2 ,rel,v 2 )op.op(p n-1 ,rel,v n-1 ) 其中rel,op。gt、lt、eq、ne分别代表大于、小于、等于、 权 利 要 求 书CN 102780753 A 3/3页 4 不等于的属性值限制关系,&和|分别表示逻辑与和逻辑或的逻辑关系; (6)若Completed为true,则将加入到补偿路径实例化集合中; (7)初始化补偿路径实例化最小开销值MinimumCost为无穷大,初始化最优补偿路径 实例化Instance。
13、为空; (8)对于中的每一个补偿路径实例I P ,执行(9)的操作; (9)根据计算其开销值; 用户对不同类型的开销的敏感程度可以用权值来衡量,权值大表示用户对相应的开销 较为敏感,权值小表示用户对相应的开销的敏感程度较低,因此对于补偿路径P的实例化I 的开销可表示为: 其中T为开销类型的集合;wt为用户对类型为t的开销的敏感值; 这里VC,t是具体补偿服务C的类型为t的开销,X是由于服务间 的相互作用而需要扣除的开销值,Y是由于服务间的相互作用而需要增加的开销值; 若则将赋值给MinimumCost,Instance赋值为IP。 权 利 要 求 书CN 102780753 A 1/9页 5 。
14、一种基于约束规则的服务恢复方法 技术领域 0001 本发明涉及服务计算领域,特别涉及基于约束规则的业务事务的异常恢复机制。 背景技术 0002 随着信息技术的发展,Web服务越来越多地被企业用于各种业务应用,将多个Web 服务按照一定的流程组合起来形成组合服务,是用Web服务实现业务流程的主要形式。在 服务计算中,一个业务事务是由多个企业所提供的Web服务所组成的,因此业务事务被部 署在松耦合、异构和自治的环境中。业务事务恢复是解决业务流程执行过程异常、保证业务 流程事务属性和成功执行的一种重要方法。 0003 现有的服务恢复方法主要分为以下两类: 0004 1.前向恢复:通过一定的方式解决异。
15、常,为业务事务按照流程继续执行,最终使 业务事务完成既定目标。 0005 2.后向恢复:由于业务事务目标的改变、目标的不可达或者约束条件无法被满足 等因素,通过一定的方式对业务事务进行补偿 16 ,“擦除”业务事务已经执行的部分造成的 影响。 0006 以上方法存在不足。纯粹的前向恢复往往是不可行的,因为在许多情况下,重试、 替换等前向恢复方法并不能使得异常得以恢复。如找不到能够替换出现异常的Web服务的 替代服务等。纯粹的后向恢复缺乏对业务事务的性能和效率的考虑。当最后一个子事务出 现异常,则整个事务必须被补偿。这不仅让许多已经提交的子事务所产生的影响被“回滚”, 而且是对资源的极大浪费,同。
16、时也没有完成既定目标。另外,现有的恢复机制依据服务的功 能属性和非功能属性所制定的恢复策略有可能与异常的其它属性冲突而导致不适用。而 且,现有恢复机制缺乏实时性。现有的恢复机制大多数忽略了对于业务事务异常的实时状 态,所制定的恢复策略所依赖的信息可能已经不能反映异常的当前状态,导致不适用。 发明内容 0007 技术问题:服务恢复问题是保证业务事务的事务属性、提高业务事务服务质量的 关键问题,本发明基于约束规则确定对于特定异常的恢复机制,克服了传统方法的固定恢 复模式、未考虑业务逻辑、恢复策略与异常发生时业务事务的状态不匹配等缺点。本发明提 出一种基于约束规则的业务事务方法,利用约束规则对业务事。
17、务的业务逻辑进行表示,当 异常发生时,通过相关约束规则的评估结果来制定恢复策略;同时利用上下文对异常进行 分类,根据分类确定恢复开始点,省略无意义的恢复步骤;当需要对业务事务补偿时,通过 上下文以及用户对各种开销的敏感程度选择最优补偿策略。 0008 技术方案:一种基于约束规则的服务恢复方法,在业务事务中的某个域中的服务 s出现异常e,此异常被捕获后,利用约束规则经过如下步骤制定进行服务恢复: 0009 (1)评估s对应的完成性约束条件(ICCC),若评估结果为true,则表示此异常可被 忽略,业务事务继续执行,转到;若评估结果为false转到(2); 说 明 书CN 102780753 A 。
18、2/9页 6 0010 (2)根据上下文属性信息以及服务s的异常属性约束对异常e进行分类,根据分类 来确定恢复开始 点:重试(转(3)、替换服务(转(4)、与用户交互(转(5)或补偿(转 (6); 0011 (3)若服务s是原子服务,且对此服务的重试次数RetryTimes小于对此服务所设 定的最大重试次数MaxinumRetryTimes,则重新调用服务s;若重试成功,则业务事务继续 执行;否则转(4); 0012 (4)若存在服务s的可替代服务集S,则从中选出一个作为替代服务s;先补偿服 务s,取消其所造成的影响,再调用服务s,并将s从S中移除;若服务s的可替代服务集 S为空,则转(5)。。
19、若s执行成功,则业务事务继续执行;否则转(5); 0013 (5)若服务s被设定为与用户交互服务,则向用户提供建议。此建议包括与出现 异常的服务s有相似功能属性和非功能属性,但已超出用户在业务事务执行时所提出的 可接受范围的服务。若用户选择其中一个服务或者放弃此异常服务,则对更高一级域中 关于此域的CCC进行评估。若CCC不满足,则说明此域需要被补偿,域向更高一级域抛出 UnatomicException异常,并等待来自更高级域中协调者的补偿命令,转(6),而后业务事 务继续执行;若CCC满足则直接转(5),且在此过程中通过乐观的期望策略对ICCC进行评 估(默认情况下使用乐观的期望策略),而。
20、后业务事务继续执行。若用户不接受建议,则转 (5); 0014 (6)收到来自更高级域中协调者的补偿命令后,进入到对本域进行补偿过程。 0015 根据上下文属性信息以及服务s的异常属性约束对异常e进行分类;根据分类来 确定恢复开始点的具体方法如下: 0016 (1)设 为服务s的异常属性约束集,将恢复开始点StartOfRecovry初始 化为空;设异常类型t,其中的元素按序分别代表 网络设备暂时不可用异常属性约束、网络设备永久不可用异常属性约束、可替代物理异 常属性约束、不可替代物理异常属性约束、服务限制异常属性约束、服务描述异常属性 约束和用户异常属性约束;对于 中分别对应于上面七种异常的。
21、的七种异常属性约束 按序将其赋值给表示某一具体异常属性约束的 进行(2)到(12)步骤的操作; 0017 (2)将初始化为 的类型所对应的上下文类型向量,转(3); 0018 (3)一个标记为一个谓词或操作。初始化谓词栈predicateStack为空,操作数栈 operaterStack为空,当前标记curToken为空,评估结果result初始化为true; 0019 (4)获取下一个标记,赋值给curToken。若curToken不为空则转(5),否则转(9); 0020 (5)若curToken是谓词则转(6),否则operaterStack将curToken入栈; 0021 (6)若。
22、此谓词为”&”则转(7),否则predicateStack将curToken入栈; 0022 (7)operaterStack出栈,predicateStack栈顶元素赋值给topPredicate。根据 对topPredicate进行评估,若topPredicate不满足,则predicateStack将”false”入 栈;否则predicateStack将curToken入栈; 0023 (8)转(4); 0024 (9)若predictStack非空,则转(10); 0025 (10)将predicateStack栈顶元素赋值给topPredicate,predicateStack出栈。
23、。 说 明 书CN 102780753 A 3/9页 7 根据对topPredicate进行评估,如果topPredicate被满足,则转(12); 0026 (11)将false赋值给result; 0027 (12)异常属性约束评估结束。如果result为true,则将t赋值为 所对应的异 常类型,转(13),否则转(1); 0028 (14)如果ta,a,a,则将StartOfRecovery赋值为RETRY,否则若 tb,a,b,则将StartOfRecovery赋值为REPLACE,否则若tb,则将 StartOfRecovery赋值为INTERACTORCOMPENSATE。RET。
24、RY代表重试、REPLACE代表替代服 务、 INTERACTORCOMPENSATE代表与用户交互或补偿。 0029 域的补偿方法如下: 0030 (1)设SS为域内已完成和正在执行的服务集合,cSS为SS的一个副本,需要补偿 的服务compS初始化为空; 0031 (2)若cSS为空,转(7); 0032 (3)获得服务s的可忽略补偿约束条件集合rs,转(4); 0033 (4)对rs中的每一个可忽略补偿约束条件ic,若ic被满足,则进行记录,然后继 续判断下一个ic; 0034 (5)将tempSS初始化为与可忽略补偿约束条件ic相关的在cSS中但不在compS 中的服务集合,并将其加入。
25、compS,将tempSS从cSS中去除; 0035 (6)对tempSS中的每一个服务ts,进行(2)到(5)的操作; 0036 (7)对cSS中的每一个服务css,获得其可忽略补偿约束条件集合rs,转(8); 0037 (8)对rs中的每个可忽略补偿约束条件r,若r被满足,转(9);否则将css加入 到集合compS中,转(6); 0038 (9)根据域内的逻辑规则LR对compS中的服务进行补偿。 0039 根据上下文对补偿过程进行优化的具体方法如下: 0040 (1)初始化异常上下文所匹配的补偿路径实例化集合为空集; 0041 (2)设P 1 ,P 2 ,.,P n-1 ,P n 是可。
26、能的补偿路径,对于其中的每一条路径P i ,执行下面 (3)到(6)的操作。 0042 (3)对于P i 的每一个实例化 执行(4)到(6)的操作; 0043 (4)初始化Completed为true,对 中的每一个具体补偿服务C k ,执行(5)中的 操作; 0044 (5)根据上下文属性对C k 的预置条件 进行评估,若其不被满足,则置 Completed为false,转(3); 0045 这里定义一个具体补偿服务C的预置条件为: 0046 Requirement C (p 1 ,rel,v 1 )op(p 2 ,rel,v 2 )op.op(p n-1 ,rel,v n-1 ) 0047。
27、 其中rel,op。gt、lt、eq、ne分别代表大于、小于、 等于、不等于的属性值限制关系,&和|分别表示逻辑与和逻辑或的逻辑关系; 0048 (6)若Completed为true,则将 加入到补偿路径实例化集合中; 0049 (7)初始化补偿路径实例化最小开销值MinimumCost为无穷大,初始化最优补偿 路径实例化Instance为空; 0050 (8)对于中的每一个补偿路径实例I P ,执行(9)的操作; 说 明 书CN 102780753 A 4/9页 8 0051 (9)根据计算其开销值; 0052 用户对不同类型的开销的敏感程度可以用权值来衡量,权值大表示用户对相应的 开销较为。
28、敏感,权值小表示用户对相应的开销的敏感程度较低,因此对于补偿路径P的实 例化I的开销可表示为: 0053 0054 其中T为开销类型的集合;wt为用户对类型为t的开销的敏感值; 这里VC,t是具体补偿服务C的类型为t的开销,X是由于服务间 的相互作用而需要扣除的开销值,Y是由于服务间的相互作用而需要增加的开销值; 0055 若 则将 赋值给MinimumCost,Instance赋值为IP。 0056 有益效果:在现有的业务事务恢复机制中,纯粹的前向恢复往往是不可行的,纯粹 的后向恢复缺乏对业务事务的性能和效率的考虑。,另外,现有的恢复机制依据服务的功能 属性和非功能属性所制定的恢复策略有可能。
29、与异常的其它属性冲突而导致不适用。而且, 现有的恢复机制大多数忽略了对于业务事务异常的实时状态,所制定的恢复策略所依赖的 信息可能已经不能反映异常的当前状态,导致不适用。针对现存方法存在的问题,我们提出 了基于约束机制的情境感知的业务事务恢复机制。本发明的优势在于:(1)若相应约束条 件被满足,则异常可被忽略,跳过了不必要的恢复过程,节约了资源、时间,同时也能够满足 业务事务的需求;(2)对异常进行分类,根据异常的不同类型选择不同的恢复策略开始点, 使得恢复操作有的放矢,更加合理;(3)与用户交互的过程使用户能够根据自身的需求参 与到异常恢复的过程中,其间采用的乐观的期望策略省略了不必要的补偿。
30、服务;(4)根据 逻辑规则来确定服务的补偿顺序,不仅减少了需要补偿的服务,而且补偿顺序更加合理,补 偿效率也更高;(5)根据可行补偿路径实例化的开销以及用户对各种开销的倾向程度来选 择最优补偿路径的实例化,使得业务事务的异常恢复过程根据异常时上下文来确定更加适 合于当时情境的恢复策略。 附图说明 0057 图1:各种异常的恢复开始点原理图。 0058 图2:业务事务恢复流程图。 具体实施方式 0059 本发明所述的方法进一步描述为: 0060 业务事务有着迭代的层次结构。一个业务事务又多个域组成,域通常以组合服务 的形式出现,完成业务事务的某个子功能模块,一个域中可能有一个或多个子域。通常,业。
31、 务事务中的一个域由其协调者对参与者进行管理,来完成业务事务中的某项特定的任务。 一个参与者是一个服务提供者或者服务消费者(用户),但通常被抽象为一个Web服务(原 子服务或域)。协调者是特殊形式的参与者,与它所属域内的直接参与者进行交互,即协调 者不与其子域中的参与者交互。 0061 约束规则定义如下: 说 明 书CN 102780753 A 5/9页 9 0062 一个业务事务由域(一般以组合服务的形式存在)所组成,每个域内可能包含更 小的子域或者原子服务。每个服务都有其自身的特定功能,而作为业务事务的一部分,服务 之间也存在着相互影响和联系;这些联系与用户的需求以及服务提供者的政策是业务。
32、事务 业务逻辑的重要组成部分。业务逻辑可以用约束规则来描述。我们将约束规则分成两种类 型:约束条件和逻辑规则。当失效或异常发生时,可以利用约束规则来生成更恰当的恢复策 略。 0063 1.约束条件 0064 约束条件是判断某个业务事务实例中的某个服务在逻辑上是否完成的依据。正确 性的定义 0065 (1)完成性约束条件(CCC) 0066 完成性约束条件是对业务事务中的服务是否成功执行的判断依据。当一个服务 失效时,对与它相应的完成性约束条件进行评估,如果满足,则此失效被认为是可忽略的。 由于业务事务是面向用户需求的,其中某个服务的失效并不一定会导致整个业务事务的失 效。 0067 (2)可忽。
33、略补偿约束条件(ICCC) 0068 在补偿的过程中,若某补偿服务的可忽略补偿约束条件被满足,则此补偿服务不 必被执行。由于 在补偿过程中补偿服务都有其特定的语义以及它与其它服务之间的约束 关系,若约束满足,某些补偿服务可被忽略而不执行。 0069 2.逻辑规则 0070 逻辑规则是对补偿服务的执行顺序的描述,即表示补偿服务之间的顺序或者并行 执行关系。通常情况下,一个服务有与它对应的补偿服务,补偿服务的执行可将原服务的成 功执行所造成的影响部分地或者完全地取消。虽然一般情况下补偿服务与原服务相比有 着相反的功能,但若以原服务执行顺序的逆序执行补偿服务不一定是合理也不一定是高效 的。 0071。
34、 业务事务实际上是一个组合服务。在服务组合的过程中,Web服务按照其功能被 安排到流程中的某一个位置。补偿服务的执行顺序采用与原服务执行顺序完全相反的方法 并不一定是可取的。因此在服务组合的过程中,同时设计业务事务的逻辑规则,以备在其恢 复过程中使用。 0072 逻辑规则表示补偿服务的执行顺序。对业务事务的补偿操作可以在BPEL的 标签中进行指定。BPEL中的、为顺序、并行两 种执行关系提供了支持。 0073 本发明的业务事务恢复具体步骤如下: 0074 (1)评估s对应的完成性约束条件(ICCC),若评估结果为true,则表示此异常可被 忽略,业务事务继续执行,转到;若评估结果为false转。
35、到(2); 0075 (2)根据上下文属性信息以及服务s的异常属性约束对异常e进行分类,根据分类 来确定恢复开始点:重试(转(3)、替换服务(转(4)、与用户交互(转(5)或补偿(转 (6); 0076 (3)若服务s是原子服务,且对此服务的重试次数RetryTimes小于对此服务所设 定的最大重试次数MaxinumRetryTimes,则重新调用服务s。若重试成功,则业务事务继续 说 明 书CN 102780753 A 6/9页 10 执行;否则转(4); 0077 (4)根据补偿服务的特定的语义以及它与其它服务之间的约束关系,若存在服务 s的可替代服务集S,则从中选出一个作为替代服务s。先。
36、补偿服务s,取消其所造成的影 响,再调用服务s,并将s从S中移除;若服务s的可替代服务集S为空,则转(5)。若s 执行成功,则业务事务继续执行;否则转(5);异常e的分类与恢复机制的对应关系如图1 所示。 0078 (5)若服务s被设定为与用户交互服务,则向用户提供建议。此建议包括与出现 异常的服务s有相似功能属性和非功能属性,但已超出用户在业务事务执行时所提出的 可接受范围的服务。若用户选择其中一个服务或者放弃此异常服务,则对更高一级域中 关于此域的CCC进行评估。若CCC不满足,则说明此域需要被补偿,域向更高一级域抛出 UnatomicException异常,并等待来自更高级域中协调者的补。
37、偿命令,转(6),而后业务事 务继续执行;若CCC满足则直接转(6),且在此过程中通过乐观的期望策略对ICCC进行评 估(默认情况下不使用乐观的期望策略),而后业务事务继续执行。若用户不接受建议,则 转(6)。 0079 (6)收到来自更高级域中协调者的补偿命令后,在对本域中已执行服务的ICCC进 行评估的基础上,对本域进行补偿。 0080 其中,上下文是可以用来刻画实体状况的任何信息。实体可以是用户和应用程序 交互过程中,任何相关的人、位置或物体,也包括了用户和应用程序自身。业务事务中所涉 及到的上下文分为四类:(1)计算资源上下文:如网络连通性、通信开销、带宽、附近的资源 种类及其状态等;。
38、(2)物理上下文:如噪声等级、交通情况、气温等;(3)服务上下文:服务 允许的最大实例数、服务现有实例数、服务开始和结束时间等;(4)用户上下文:如用户的 基本资料、地理位置、周边的人等。 0081 乐观的期望策略具体实施方式如下: 0082 与用户交互时,首先向用户提供建议,包括向用户提供失效服务的可替代服务信 息以及询问用户是否放弃失效服务。 0083 若用户接受建议,则完成性约束条件会因此而改变,替代服务是否会导致对此域 进行补偿需要进一步的评估,这通过评估更高一级域中有关于此域的CCC来完成,若需要 对此域进行补偿,则此域的协调者向更高一级域抛出”UnatomicException”,。
39、并等待来自高 一级域的协调者发出的补偿命令;若 不需要进行域的补偿则只通过对域中的ICCC进行评 估来在域中对服务进行补偿,在这样的情况下,补偿仅在异常发生的域中进行,协调者并不 向上一层协调者抛出”UnatomicException”,因为替代服务并不代表此域出现了异常。 0084 在补偿之前对服务a的可忽略补偿约束条件进行评估时,服务a对应的可忽略补 偿约束条件可能涉及到除a之外的多个服务,这些服务中的某些可能还未被调用。在这样 的情况下,我们对于这些还未被调用的服务采取乐观的期望,所涉及到的可忽略补偿约束 条件评估结果为真。这是因为出现失效服务的域立刻会被重新执行,此时的补偿只是用来 对。
40、将被替换的服务所造成影响导致的不一致性进行消除。这种乐观的评估策略使得因为可 忽略补偿约束条件不满足而必须补偿的服务更少。在补偿之后,被补偿的服务必须重新执 行,以使得替代服务得以执行。 0085 如图2所示,根据上下文属性信息以及服务s的异常属性约束对异常e进行分类, 说 明 书CN 102780753 A 10 7/9页 11 根据分类来确定恢复开始点的具体方法如下: 0086 (1)设 为服务s的异常属性约束集,将恢复开始点StartOfRecovry初始化 为空。设异常类型t,其中的元素按序分别代表网 络设备暂时不可用异常属性约束、网络设备永久不可用异常属性约束、可替代物理异常 属性约。
41、束、不可替代物理异常属性约束、服务限制异常属性约束、服务描述异常属性约 束和用户异常属性约束。对于 中分别对应于上面七种异常的的七种异常属性约束 按序将其赋值给 进行(2)到(12)步骤的操作。 0087 (2)将初始化为 的类型所对应的上下文类型向量,转(3)。 0088 (3)设一个标记为一个谓词或操作。初始化谓词栈predicateStack为空,操作数 栈operaterStack为空,当前标记curToken为空,评估结果result初始化为true。 0089 (4)获取下一个标记,赋值给curToken。若curToken不为空则转(5),否则转(9)。 0090 (5)若cur。
42、Token是谓词则转(6),否则operaterStack将curToken入栈。 0091 (6)若此谓词为”&”则转(7),否则predicateStack将curToken入栈。 0092 (7)operaterStack出栈,predicateStack栈顶元素赋值给topPredicate。根据 对topPredicate进行评估,若topPredicate不满足,则predicateStack将”false”入 栈;否则predicateStack将curToken入栈。 0093 (8)转(4) 0094 (9)若predictStack非空,则转(10)。 0095 (10)将。
43、predicateStack栈顶元素赋值给topPredicate,predicateStack出栈。 0096 根据对topPredicate进行评估,如果topPredicate被满足,则转(12)。 0097 (11)将false赋值给result。 0098 (12)异常属性约束评估结束。如果result为true,则将t赋值为 所对应的异 常类型,转(13),否则转(1)。 0099 (13)如果ta,a,a,则将StartOfRecovery赋值为RETRY,否则若 tb,a,b,则将StartOfRecovery赋值为REPLACE,否则若tb,则将 StartOfRecover。
44、y赋值为INTERACTORCOMPENSATE。RETRY代表重试、REPLACE代表替代服 务、INTERACTORCOMPENSATE代表与用户交互或补偿。 0100 域的补偿方法如下: 0101 (1)设SS为域内已完成和正在执行的服务集合,cSS为SS的一个副本,需要补偿 的服务compS初始化为空。 0102 (2)若cSS为空,转(8)。 0103 (3)获得服务s的可忽略补偿约束条件集合rs,转(4)。 0104 (4)对rs中的每一个可忽略补偿约束条件ic。 0105 (5)若ic被满足,转(4),否则转(6)。 0106 (6)将tempSS初始化为与ic相关的在cSS中但。
45、不在compS中的服务集合,并将其 加入compS,将tempSS从cSS中去除。 0107 (7)对tempSS中的每一个ts,进行(2)到(6)的操作。 0108 (8)对cSS中的每一个服务css,获得其可忽略补偿约束条件集合rs,转(9)。 0109 (9)对rs中的每个可忽略补偿约束条件r,若r被满足,转(9),否则将css加入到 说 明 书CN 102780753 A 11 8/9页 12 集合compS中,转(7)。 0110 (10)根据域内的逻辑规则LR对compS中的服务进行补偿。 0111 对一个域进行补偿,目的是为了通过执行补偿服务使域恢复到某一个状态,而满 足一定的约。
46、束条件,获得一定的一致性,在从补偿开始到补偿结束的过程中,需要对若干个 原子服务和域进行补偿,我们称对一个原子服务或域进行补偿的过程为一个补偿步骤。对 于一个补偿步骤,有补偿开始点和和补偿目标。对一个原子服务或者域进行补偿就是从其 对应的补偿开始点到补偿目标的过程;对一个业务事务进行补偿就是其中的若干补偿步骤 的执行过程。 0112 对一个原子服务进行补偿,需要执行其对应的“补偿服务”。“补偿服务”的执行 的目的是取消原服务执行所造成的影响,而能够达到这个目的的服务不必要是一个原子服 务。补偿服务完成的操作与原服务比起来可能更加复杂或者有更多需求,因此可能需要多 个服务按照一定的流程组合起来完。
47、成对此原子服务的补偿,即一个原子服务的补偿服务不 一定是原子服务,而可能是组合服务。同理对一个域的补偿也不一定需要同样多的原子服 务,而可能仅仅一个原子服务便能满足其补偿需求。 0113 为了达到某个补偿步骤的补偿目标,必须完成一定的补偿任务,而这些补偿任务 的完成必须通过具体的补偿服务来实现。补偿任务是从某个补偿步骤的补偿开始点到其补 偿目标的子步骤,每个补偿任务都有其相应的子目标,完成某个补偿步骤的过程就是从补 偿开始点依次通过补偿任务到达各个子目标,最终到达补偿目标的过程,我们把这个过程 成为补偿路径。从补偿开始点到补偿目标,可能存在多条补偿路径,每条路径上的补偿任务 是不同的,补偿任务。
48、的数量也有可能是不同的,但所有的补偿路径都从异常状态开始而结 束于补偿目标。补偿任务的实现依赖于具体补偿服务,但能够实现某一个补偿任务的具体 补偿服务通常不止一个,因为可以通过某些定性或者定量的标志来表示子目标的达成,但 使得这些定性或者定量的标志被满足的方式可以是多样的。我们把对应于某一个补偿任务 的可能的具体补偿服务表示成一个抽象补偿服务。 0114 定义一个具体补偿服务C的预置条件为: 0115 Requirement C (p 1 ,rel,v 1 )op(p 2 ,rel,v 2 )op.op(p n-1 ,rel,v n-1 ) 0116 其中rel,op。其满足判定方法参见权利要求3中 (3)到(11)步。 0117 一条补偿路径上有一个或多个抽象补偿服务,这些服务被实例化后成为具体补偿 服务,一条补偿路径的实例化是指其包含的所有抽象补偿服务的一次实例化,即所有的抽 象补偿服务都被绑定到具体的服务。每一个具体补偿服务的执行都需要一定的开销。对于 用户来说,对这些开销的敏感程度是不一样的。 0118 补偿路径P对应于实例化I的类型为t的开销可如下表示: 0119 0120 其中V C,t 是具体补偿服务C的类型为t的开销,X是由于服务间的相互作用而需 要扣除的开销。