利索能及
我要发布
收藏
专利号: 2019109672416
申请人: 南京邮电大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-11-04
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于关键路径生成树的自动服务组合方法,其特征在于,包括以下步骤:步骤1)计算组合服务的QoS模型,具体步骤为:步骤1‑1)提出响应时间的全局QoS计算方法,公式如下:其中,服务与服务前后关系有三种:序列Sequence,分支Split和汇合Join,假设getLocQos(S)为得到服务S的本地响应时间,即服务的单独调用响应时间,而getGlbQos(S)为获取服务S的全局响应时间,即组合服务过程中运行完此服务所需的响应时间,glbQos(S)表示得到服务S的全局响应时间为qos,并能改变它的值;

步骤1‑2)通过对可靠性与可得性的取对数与归一化操作使得其全局QoS计算方法与响应时间一样;归一化公式如下:

其中qos*为服务的原始响应时间值,即真实响应时间值,而qosmax为所有服务当中的最大响应时间,qosmin为所有服务当中的最小响应时间,qos为归一化之后的响应时间;

步骤1‑3)通过用户权重分配从而完成各项属性QoS值的聚合;

步骤2)构建服务组合与选择的问题模型,具体步骤为:步骤2‑1)服务匹配,基于服务输入参数集、输出参数集与 QoS 属性值给出两个服务匹配的判断规则,用以辅助服务组合与选择问题模型的构建;

步骤2‑2)服务组合与选择问题模型,在给定服务集内寻找满足服务请求的服务组合方案问题定义为寻找一个特定目标服务集,且一旦该特定目标服务集确定,根据服务之间的匹配关系,服务集组合调用流程图也相应确定;

步骤3)创建服务自动组合与选择算法WSACA;具体步骤为:步骤3‑1)建立算法当中所用到的数据结构和输出的哈希表;

步骤3‑2)构设服务自动组合选择算法WSACA,利用现有的服务输入查找能够调用的服务列表,然后将可调用服务的输出加入可得输入之中,更新服务的全局QoS及RefTable哈希表,并进行下一层次的搜索,WSACA算法具体描述如下:i o

输入:由n个服务构成的服务集WS = { WS1,WS2,…,WSn},目标服务R={ w R,w R},其中i o

w R和w R分别是目标服务R的输入集和输出集;

输出:目标服务R的服务流程哈希表refTable :: RefTable算法步骤:

i

A初始化可调用服务集activeServices,初始化输入参数集availableInputs为w R,输o

出参数集requireOutputs为w R,在查找表refTable中首先加入请求服务提供输出参数集o

w R;进入步骤B;

B从服务集WS中遍历每一个服务S,依次执行步骤CDEF,直到遍历完跳转到步骤G;

C判断服务S是否可以调用,即判断服务S的输入是否都在输入参数集availableInputs中,如果是则先计算服务S的全局QoS值,接着添加服务S至查找表refTable,作为未出现输出参数的提供者,然后可调用服务集activeServices中添加服务S,最后将服务S的输出加入可得到的输入参数集availableInputs,如果不是,则直接进入步骤D;

D判断可调用服务集activeServices是否为空,若是则算法结束输出Fail,表示出错,否则直接进入步骤E;

E从服务集WS中删除服务S,并从输出参数集requireOutputs中取出服务S可获得的输出,进入步骤F;

F判断输出参数集requireOutputs是否为空,若是则算法结束输出Success,表示请求输出得到满足,否则直接返回步骤B,对下一个服务进行操作;

G在算法输出Fail或者Success则算法结束,并输出当时的服务流程哈希表refTable;

由上面描述的算法WSACA能够在用户给定输入并请求特定输出后,根据用户的功能请求与具有全局最优QoS值的目标驱动下自动寻找组合服务方案步骤4)构设服务组合关键路径生成树算法。

2.根据权利要求1所述的基于关键路径生成树的自动服务组合方法,其特征在于,步骤

4)的具体步骤为:

提出服务流程图的关键路径生成树算法,选择步骤3中搜索出的服务用以组合;在服务中添加了一个输入关联服务哈希表,即存储了每个服务的输入与提供此输入数据对应的服务输出,从而实现服务间数据关联绑定;随后采用关键路径树生成算法,同时生成组合服务的OWL‑S 文件以方便调用或者发布;具体生成关键路径树的算法如下:输入:WSACA算法输出的服务流程哈希表refTable,关键路径树的开始WSNode节点startService;

输出:关键路径树存储HashMap> treeMapA设置一个表示flag,并初始化为FALSE,表示是否找到当前服务的关键前驱;提取节点startService的输入集为inputs;进入步骤B;

B判断inputs是否为空,若是则返回,否则进入步骤C;

C遍历inputs中的所有输入对象type,逐一进行步骤D‑F,直到遍历完跳转到步骤G;

D从refTable中获得以type为输入之一的服务S,如果S的全局QoS值等于startService的全局QoS值与本地QoS值之差且flag为FALSE,那么执行步骤F;否则直接执行步骤G;

E在treeMap中,将服务S与startService进行绑定,且将flag设置为TRUE,表示前驱已找到,防止有多棵生成树;执行步骤F;

F函数自调用,递归产生树;返回步骤C继续执行;

G在算法结束,输出treeMap;

由于响应时间的限制,在构造了关键路径生成树之后产生的控制流程能保证服务被调用时与之有数据相关的服务输出都已经具备了,这就是构造关键路径生成树的必要性。