一种基于搜索空间约减的WEB服务组合方法.pdf

上传人:111****112 文档编号:1566151 上传时间:2018-06-25 格式:PDF 页数:19 大小:5.46MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310041942.X

申请日:

2013.02.04

公开号:

CN103106269A

公开日:

2013.05.15

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20130204|||公开

IPC分类号:

G06F17/30; H04L29/08

主分类号:

G06F17/30

申请人:

南京大学

发明人:

杨育彬; 夏永敏

地址:

210000 江苏省南京市栖霞区仙林大道163号南京大学

优先权:

专利代理机构:

江苏圣典律师事务所 32237

代理人:

胡建华

PDF下载: PDF下载
内容摘要

本发明公开了一种基于搜索空间约减的Web服务组合方法,包含如下步骤:预处理;生成Web服务依赖图;添加虚拟Web服务;去除对用户请求要得到的输出没有贡献的Web服务;构造虚拟树;遍历虚拟树寻找路径;本发明能够在较大规模的Web服务组合中得到一个较好的QoS(服务质量)的Web服务组合,因此在较大规模的Web服务组合问题中具有较好的使用价值。

权利要求书

权利要求书一种基于搜索空间约减的Web服务组合方法,其特征在于,包含如下步骤:
步骤1,预处理:对所有的Web服务进行预处理,生成一组Map映射关系;
步骤2,生成Web服务依赖图:根据Map映射关系,对于用户给定的请求,从用户给定的输入开始,逐层加入Web服务,直到得到用户需要的所有输出,从而生成Web服务依赖图;
步骤3,添加虚拟Web服务:从输入到输出逐层遍历Web服务依赖图,对于每个Web服务的每个输出,如果该输出是当前层除了下一层的后面层的输入,则在当前层的下一层添加一个虚拟Web服务;
步骤4,去除对输出没有贡献的Web服务:从输出到输入逐层遍历Web服务依赖图,去除对输出没有贡献的Web服务;
步骤5,构造虚拟树:从输出到输入,把Rout作为虚拟树的根节点,Rin作为虚拟树的叶子节点构造虚拟树,所述叶子节点没有子节点;
步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻找一条路径;选取每个节点的服务,形成Web服务组合。
根据权利要求1所述的方法,其特征在于,步骤2中包括以下步骤:
将一个Web服务记为WS<Input,Output,QoS>,Input表示Web服务WS能够被激活所必需满足的输入集合,记为Input<in1,in2,…,inn>,其中,ini为单一的输入,1≤i≤n,n表示输入的总数量;
Output是指执行Web服务WS后能够得到的所有输出集合,记为Output<out1,out2,…,outm>,其中,outj为单一的输出,1≤j≤m,m表示输出的总数量;QoS指Web服务WS的非功能属性,包括响应时间,吞吐量;
对于用户给定的请求<Rin,Rout>,Rin表示用户给定的输入集合,Rout表示用户需要得到的输出集合;从用户给定的输入集合Rin开始,逐层添加可被调用执行的Web服务,直到得到用户需要的所有的输出集合Rout,当且仅当该Web服务的所有输入参数都已得到,则Web服务可被调用执行;
第l层Ll添加的Web服务满足即在第l层添加的第x个Web服务WSl,x在第l层之前的第k层没有被添加,并且当该Web服务在第l层可被调用执行时必须添加在第l层;其中是指第l层的第x个Web服务输入集合,Outputp是指第p层中所有Web服务的输出集合的并集,2≤p≤l‑1,1<l<C,C为总层数,Lk表示第k层,WSl,x表示Ll层的第x个Web服务。
根据权利要求2所述的方法,其特征在于,步骤3中添加虚拟Web服务包括以下步骤:
对于第l层的每一个Web服务的每一个输出outj,当输出outj跨越一层以上作为后面第h层中Web服务的输入时,h≥l+1,在跨越的每层中都添加一个虚拟Web服务,该虚拟Web服务的输入和输出都设为outj,且具有最高的QoS值,把第一层输入集合Rin和最后一层输出集合Rout也分别作为一个虚拟Web服务。
根据权利要求3所述的方法,其特征在于,步骤4去除对输出没贡献的Web服务包括以下步骤:
假设Web服务依赖图有n层,第一层和最后一层只含有一个由步骤3产生的虚拟Web服务,从输出层到输入层逐层遍历Web服务依赖图,对于Ll层,当其中,WSl+1,x∈Ll+1,x=1,2,...,s,即当Ll层的第x个Web服务WSl,x的输出集合与第l+1层的所有Web服务的输入集合的交集为空时,则判定Ll层的第x个Web服务WSl,x对输出没有贡献,从Ll层中去除。
根据权利要求4所述的Web服务组合方法,其特征在于,步骤5构造虚拟树:
从输出到输入逐层处理Web服务依赖图,最后一层LC只包含一个由步骤3产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点nodeC,1,根节点nodeC,1的Web服务的输入集为对于输入集合中每一个输入如果即如果输入ini属于第u‑1层的第x个Web服务的输出集合,则进行如下步骤,指第u‑1层Lu‑1的第x个Web服务的输出集合,nodeu,v指第u层的第v个节点,指节点nodeu,v中所有Web服务的所有输入集合:
如果集合为空,则把Web服务WSu‑1,x加入到集合中,为第u‑1层中输出集合包含输入ini的Web服务集合,集合初始值为空;否则,把Web服务WSu‑1,x与集合中的每一个Web服务WS进行比较,即对任意如果其输入集合InputWS为输入集合的子集,并且Web服务WSu‑1,x的QoS值优于Web服务WS的QoS值,则从集合中删除Web服务WS,然后把Web服务WSu‑1,x加入集合否则,不做处理;
令nodeu,v的输入集合为中的每个输入为ini,包含输入ini的Web服务集合为假设中包含n个输入,1≤i≤n,中的Web服务个数为q;
节点nodeu,v的子节点的生成步骤如下:
步骤1:构建一颗临时树,初始化临时树为空;
步骤2:从i=1开始到i=n依次循环处理每个输入ini,并且在处理过程中每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以下步骤:
步骤2a,如果临时树为空,则把集合中的第一个Web服务作为临时树的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行直到集合中第q个Web服务加入到该临时树中为止;
步骤2b,如果临时树不为空,从第j=1开始到第j=k个没有左孩子节点的节点依次处理,k为该临时树中没有左孩子节点个数;
步骤2c,如果集合中包含第j个节点中的Web服务,则不作处理,直接处理第j+1个没有左孩子节点的节点;
步骤2d,如果集合中不包含第j个节点中的Web服务,则把集合中第一个Web服务加入该临时树中作为第j个没有左孩子节点的左孩子节点,将集合第二个Web服务加入该临时树中作为第一个Web服务的右孩子节点,第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行第q个Web服务加入到该临时树中为止;
步骤3:从该临时树的根节点开始依次遍历其左孩子节点,并把该节点Web服务加入集合A,直到到达第一个没有左孩子节点的节点为止,然后把遍历过程中得到的Web服务集合A作为节点nodeu,v的第一个子节点;去掉集合A中最后一个Web服务,如果该Web服务在该临时树中有右孩子节点,则把该右孩子节点的Web服务加入Web服务集合A,从该右孩子节点开始遍历该临时树,每次遍历左孩子节点,并把左节点Web服务加入集合A,直到没有左孩子节点为止,从而把A服务集合作为nodeu,v第二个子节点;如果该Web服务在该临时树中没有右孩子节点,则又从Web服务集合A中去掉最后一个Web服务,重复上述过程;最后当Web服务集合A为空且最后去除的节点没有右孩子节点时,则所有nodeu,v子节点都已生成;对于nodeu,v生成的子节点的个数为没有左孩子节点的个数,其小于或等<mrow><MI>mod</MI><MROW><MO>(</MO><MSUB><MI>set</MI><MSUB><MI>in</MI><MN>1</MN></MSUB></MSUB><MO>)</MO></MROW><MO>×</MO><MI>mod</MI><MROW><MO>(</MO><MSUB><MI>set</MI><MSUB><MI>in</MI><MN>2</MN></MSUB></MSUB><MO>)</MO></MROW><MO>×</MO><MO>.</MO><MO>.</MO><MO>.</MO><MO>×</MO><MI>mod</MI><MROW><MO>(</MO><MSUB><MI>set</MI><MSUB><MI>in</MI><MI>n</MI></MSUB></MSUB><MO>)</MO></MROW><MO>,</MO></MROW>]]&gt;</MATH></MATHS>其中,为集合中所包含的Web服务的数目,为nodeu,v能够产生的子节点的总数。<BR>根据权利要求5所述的Web服务组合方法,其特征在于,步骤6遍历虚拟树寻找路径包括以下步骤:<BR>寻找最优吞吐量的路径包括,设定吞吐量阀值TP,从根节点出发寻找一条路径到叶子节点;对于j层的第i个节点nodei,j,如果节点nodei,j中Web服务的最小吞吐量小于阀值TP,则删除节点nodei,j及其所有分支节点;<BR>如果没有找到一条路径,那么减小0.1%~50%的阀值TP重新寻找最优吞吐量的路径,反复循环直到找到一条路径为止,把该路径的吞吐量作为新的阀值TP继续遍历该虚拟树的所有剩余分支节点;<BR>寻找最优响应时间的路径包括:设定最优响应时间阀值RT和每层平均响应时间lamda,从根节点开始寻找一条路径到叶子节点,对于第j层的第i个节点nodei,j,如果ResponseTimej+lamda×(c‑j‑1)>RT,其中,ResponseTimej是指到j层为止的响应时间,c是Web服务依赖图的层数,即虚拟树的深度,则删除该节点及以下所有分支节点;<BR>如果没有找到一条路径,那么增大0.1%~50%的阀值重新寻找最优响应时间的路径,反复循环直到找到一条路径为止,把该路径的响应时间作为新的阀值RT继续遍历该虚拟树的所有剩余分支节点。</p></div> </div> </div> <div class="zlzy"> <div class="zltitle">说明书</div> <div class="gdyy"> <div class="gdyy_show"><p>说明书一种基于搜索空间约减的Web服务组合方法 <BR>技术领域 <BR>本发明属于Web服务组合领域,是一种对于大规模Web服务中获得较好QoS(服务质量)的基于搜索空间约减的Web服务组合方法。 <BR>背景技术 <BR>Web服务组合是关于处理自治的服务组件的组装问题,使得从原始的服务组件得到一个新的服务,给出相应的发布服务接口。目前的Web服务体系结构,接口是由WSDL(Web服务描述语言)描述的,通过UDDI(统一描述、发现和集成)发布。但是,支持组合需要更进一步的要求:(1)组合定义(2)确保服务在既保证单个服务的一致性又保证整个组合服务的一致性的情况下被组合。目前没有一种关于Web服务应该怎样组合一致的观点。 <BR>Web服务的组合为复杂的Web应用提供了有效的解决方案。从现实应用来看,Web服务的组合可以实现虚拟社区中软硬件的共享;从Web服务本身来看,Web服务的组合实现了组合服务的动态生成,提高了服务组件及基本服务的可重用性和利用率,减少了系统的开销。但是其中存在的诸如服务组合粒度、服务组件或基本服务之间的通信方式及其优化、服务的聚类、服务的社区化分类管理、组合服务的有效性验证及安全等问题,有待进一步的研究和探索。目前,Web服务组合侧重于基于QoS的服务组合方法。但是,在已有的基于后向搜索的方法中,产生的子节点都太多,对于较大规模的Web服务组合来说内存要求太大。 <BR>发明内容 <BR>发明目的:本发明为了解决现有方法中Web服务组合过程中内存需求量的大,提出了能够减少内存需求量而获得较好的一种基于搜索空间约减的Web服务组合方法。 <BR>发明内容:本发明公开了一种基于搜索空间约减的Web服务组合方法,包含如下步骤: <BR>步骤1,预处理:对所有的Web服务进行预处理,生成一系列Map映射关系,一个输入对应一个需要该输入的Web服务的集合,一个Web服务对应Web服务的输入集合和输出集合。这样对于一个输入可以快速得到包含这一输入的所有Web服务,对于一个Web服务可以快速得到该Web服务的输入和输出。 <BR>步骤2,生成Web服务依赖图:对于用户给定的一个请求,从用户给定的输入开始,逐层加入Web服务,直到得到了用户想得到的所有的输出; <BR>步骤3,添加虚拟Web服务:从前往后逐层遍历Web服务依赖图,对于每个Web服务的每个输出,如果该输出是当前层的后面层(除当前层的下一层)的输入,则在当前层的下一层添加一个虚拟Web服务。 <BR>步骤4,去除对输出没贡献的Web服务:从后往前逐层遍历Web服务依赖图,去除那些对输出没有贡献的Web服务; <BR>步骤5,构造虚拟树:从后往前,把Rout作为虚拟树的根节点,Rin作为虚拟树的叶子节点。 <BR>步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻找一条路径; <BR>步骤2生成Web服务依赖图: <BR>将一个Web服务记为WS&lt;Input,Output,QoS&gt;,Input表示Web服务WS能够被激活所必需满足的输入集合,记为Input&lt;in1,in2,…,inn&gt;,其中,ini为单一的输入,1≤i≤n,n表示输入的总数量,Output是指执行Web服务WS后能够得到的所有输出集合,记为Output&lt;out1,out2,…,outm&gt;,其中,outj为单一的输出,1≤j≤m,m表示输出的总数量,QoS指WS的非功能属性,包括响应时间RT,吞吐量TP; <BR>对于用户给定的请求&lt;Rin,Rout&gt;,Rin表示用户给定的输入集合,Rout表示用户需要得到的输出集合;从用户给定的输入Rin开始,逐层添加可被调用执行的Web服务,直到得到用户需要的所有的输出Rout,当且仅当该Web服务的所有输入参数都已得到Web服务可被调用执行; <BR>第l层Ll层添加的Web服务满足即在第l层添加的第x个Web服务WSl,x在第l层之前的第k层没有被添加,并且当该Web服务在第l层可被调用执行时必须添加在第l层;其中是指第l层的第x个Web服务输入集合,Outputp是指第p层中所有Web服务的输出集合的并集,2≤p≤l‑1,1<l<C,C为总层数,Lk表示第k层,WSl,x表示Ll层的第x个Web服务。 <BR>步骤3添加虚拟Web服务: <BR>对于Li的每一个Web服务的每一个输出outi,当outi跨越几层而作为后面Lj(j>i+1)层中Web服务的输入时,在这跨越的每层Lk(i<k<j)中都添加且仅添加一次一个虚拟Web服务,该虚拟Web服务的输入和输出都是outi,并且具有最好的QoS值,比如:响应时间为0,吞吐量无穷大;最后,同样对于用户给定的所有输入Rin在第一层生成一个虚拟Web服务,对于用户给的输出Rout在最后一层生成一个虚拟Web服务。 <BR>步骤4去除对输出没贡献的Web服务: <BR>假设Web服务依赖图有n层,第一层和最后一层只含有一个由步骤3产生的虚拟Web服务,从后往前,逐层遍历Web服务依赖图,对于Ll层,当其中,WSl+1,x∈Ll+1,x=1,2,...,s,即当第l层的第x个Web服务WSl,x的输出集合与第l+1层的所有Web服务的输入集合的交集为空时,则判定第l层的第x个Web服务WSl,x是对输出没有贡献的,从Ll层中去除。 <BR>步骤5构造虚拟树: <BR>从输出到输入逐层处理Web服务依赖图,最后一层LC只包含一个由步骤3产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点nodeC,1,根节点nodeC,1的Web服务的输入集为对于输入集合中每一个输入如果即如果输入ini属于第u‑1层的第x个Web服务的输出集合,则进行如下步骤,指第u‑1层Lu‑1的第x个Web服务的输出集合,nodeu,v指第u层的第v个节点,指节点nodeu,v中所有Web服务的所有输入集合: <BR>如果集合为空,则把Web服务WSu‑1,x加入到集合中,为第u‑1层中输出集合包含输入ini的Web服务集合,集合初始值为空;否则,把Web服务WSu‑1,x与集合中的每一个Web服务WS进行比较,即对任意如果其输入集合InputWS为输入集合的子集,并且Web服务WSu‑1,x的QoS值优于Web服务WS的QoS值,则从集合中删除Web服务WS,然后把Web服务WSu‑1,x加入集合否则,不做处理;目的是为了能够减小中包含的服务的同时又尽可能的保留下层的Web服务,这样下面产生子节点的数目也会减少。 <BR>令nodeu,v的输入集合为中的每个输入为ini,包含输入ini的Web服务集合为假设中包含n个输入,1≤i≤n,中的Web服务个数为q; <BR>节点nodeu,v的子节点的生成步骤如下: <BR>步骤1:构建一颗临时树,初始化临时树为空; <BR>步骤2:从i=1开始到i=n依次循环处理每个输入ini,并且在处理过程中每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以下步骤: <BR>步骤2a,如果临时树为空,则把集合中的第一个Web服务作为临时树的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行直到集合中第q个Web服务加入到该临时树中为止; <BR>步骤2b,如果临时树不为空,从第j=1开始到第j=k个没有左孩子节点的节点依次处理,k为该临时树中没有左孩子节点个数; <BR>步骤2c,如果集合中包含第j个节点中的Web服务,则不作处理,直接处理第j+1个没有左孩子节点的节点; <BR>步骤2d,如果集合中不包含第j个节点中的Web服务,则把集合中第一个Web服务加入该临时树中作为第j个没有左孩子节点的左孩子节点,将集合第二个Web服务加入该临时树中作为第一个Web服务的右孩子节点,第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行第q个Web服务加入到该临时树中为止; <BR>步骤3:从该临时树的根节点开始依次遍历其左孩子节点,并把该节点Web服务加入集合A,直到到达第一个没有左孩子节点的节点为止,然后把遍历过程中得到的Web服务集合A作为节点nodeu,v的第一个子节点;去掉集合A中最后一个Web服务,如果该Web服务在该临时树中有右孩子节点,则把该右孩子节点的Web服务加入Web服务集合A,从该右孩子节点开始遍历该临时树,每次遍历左孩子节点,并把左节点Web服务加入集合A,直到没有左孩子节点为止,从而把A服务集合作为nodeu,v第二个子节点;如果该Web服务在该临时树中没有右孩子节点,则又从Web服务集合A中去掉最后一个Web服务,重复上述过程;最后当Web服务集合A为空且最后去除的节点没有右孩子节点时,则所有nodeu,v子节点都已生成; <BR>例如,那么可产生的子节点数为2×2=4个,分别为{A},{A,B},{A,C},{B,C},但是,我们知道{A,B},{A,C}是多余的,因为如果选择了Web服务A就不需要选择B或C了,选择B或C不会带来任何好处,所以我们值保留{A},{B,C}这两个子节点。处理步骤如图11,首先对中的A,将A作为树的根节点node‑A,B作为A的右孩子节点node‑B;对于node‑A、node‑B节点,都没有左孩子节点,从node‑A开始,对中的A,因为node‑A包含A,不作处理;接着对node‑B处理,对中的A,因为node‑B的祖先node‑A包含A,不加入左孩子节点,对于中的C,因为node‑B不包含C,node‑B的祖先不包含C,于是把C作为node‑B的左孩子节点node‑C。树构造完成后,从node‑A开始遍历,因为node‑A没有左孩子节点,于是{A}为第一个子节点。把A去掉,由于node‑A有右孩子,于是把右孩子节点的Web服务加入有{B},对node‑B处理,遍历其左孩子节点最后又{B,C},作为第二个子节点。从{B,C}中去掉C,node‑C没有右孩子节点,于是去掉B,node‑B没有右孩子节点,最后结束。 <BR>通过上述步骤处理,nodeu,v节点产生子节点的个数一般会小于<MATHS num="0001"><MATH><![CDATA[ <mrow> <MI>mod</MI> <MROW><MO>(</MO> <MSUB><MI>set</MI> <MSUB><MI>in</MI> <MN>1</MN> </MSUB></MSUB><MO>)</MO> </MROW><MO>×</MO> <MI>mod</MI> <MROW><MO>(</MO> <MSUB><MI>set</MI> <MSUB><MI>in</MI> <MN>2</MN> </MSUB></MSUB><MO>)</MO> </MROW><MO>×</MO> <MO>.</MO> <MO>.</MO> <MO>.</MO> <MO>×</MO> <MI>mod</MI> <MROW><MO>(</MO> <MSUB><MI>set</MI> <MSUB><MI>in</MI> <MI>m</MI> </MSUB></MSUB><MO>)</MO> </MROW></MROW>]]&gt;</MATH></MATHS>很多,其中为集合中所包含的Web服务的数目。 <BR>对于每个节点,当遍历该节点时则采用上述步骤生成子节点扩展该节点。 <BR>步骤6遍历虚拟树寻找路径: <BR>对每个QoS属性(吞吐量、响应时间)单独处理,对于寻找最优吞吐量的路径,首先,设定阀值TP,从根节点出发寻找一条路径到叶子节点。对于j层的第i个节点,如果节点nodei,j中Web服务的最小吞吐量小于TP,则截掉该节点及以下分支。如果最后都没有找到一条路径,那么适当减小阀值重新构筑一颗虚拟树开始寻找直到找到一条路径为止。如果找到一条路径,则把这条路径的吞吐量tp作为阀值继续遍历该虚拟树的剩余分支,tp取路径中所有Web服务中吞吐量的最小值。 <BR>对于寻找最优响应时间的路径,首先,设定阀值RT和每层平均响应时间lamda,从根节点开始寻找一条路径到叶子节点。对于第j层的第i个节点,如果ResponseTimej+lamda×(C‑j‑1)>RT,其中,ResponseTimej是指到j层为止的响应时间,C是Web服务依赖图的层数,即虚拟树的深度,则截掉该节点及以下分支。(C‑j‑1)表示剩余的层数再减去输入层,因为Rin响应时间为0,lamda×(C‑j‑1)表示剩余层需要的响应时间。如果最后都没有找到一条路径,那么适当增大阀值重新构筑一颗虚拟树开始寻找直到找到一条路径为止。如果找到一条路径,则把这条路径的响应时间rt作为阀值继续遍历该虚拟树的剩余分支。 <BR>ResponseTimej的计算,从输出层到C‑j层,对于Ll层的第x个Web服务,WSl,x∈Ll,l=C‑j+1,...,C,该Web服务的输入集合当第l‑1层的第y个Web服务WSl‑1,y∈Ll‑1,如果即输入ini属于集合有且即输入ini属于集合则把Web服务WSl‑1,y加入到alll‑1(ini)集合中,其中,alll‑1(ini)是指在Ll‑1层能够输出ini的Web服务集合,初始为空;为第l‑1层的第y个Web服务WSl‑1,y的输出集合; <BR>对所有的alll‑1(ini)其中i=1,2,...,n集合,输入ini能够得到的最小的响应时间为Web服务集合alll‑1(ini)中的Web服务执行完所需的具有最小时间Web服务bestrt(ini),即bestrt(ini)=min{alll‑1(ini)},则从输入开始到执行完Web服务WSl,x所需要的最小时间RT.WSl,x为得到该Web服务所有输入中最大的响应时间max{bestrt(ini)}加上该Web服务本身执行的时间WSl,x.RT,即RT.WSl,x=max{bestrt(ini)}+WSl,x.RT,其中,RT.WSl,x是指从输入开始到执行完Web服务WSl,x所需的最小时间,WSl,x.RT为执行Web服务WSl,x本身需要的时间,bestrt(ini)为Web服务集合alll‑1(ini)中的Web服务执行完所需的具有最小时间Web服务,max{bestrt(ini)}是指WSl,x所有输入参数对应的Web服务中最大相应时间;最后ResponseTimej等于RT.Rout。 <BR>本发明是专门针对基于搜索空间约减的Web服务组合方法。Web服务组合不仅要求能够获得较好的QoS,而且要考虑组合过程中的复杂性,包括时间复杂度和空间复杂度。本发明具有以下特征:1)能够降低组合过程中的内存的需求量;2)与此同时能够获得较好的QoS(目前只考虑响应时间和吞吐量)。 <BR>有益效果:本发明能够在较大规模(数量级104)的Web服务组合中较快地得到一个较好的QoS(服务质量)的Web服务组合,以及在较小内存中获得较好的QoS的Web服务组合结果,因此在较大规模的Web服务组合问题中具有较好的使用价值。 <BR>附图说明 <BR>图1为本发明流程图。 <BR>图2为Web服务依赖图。 <BR>图3为添加虚拟Web服务后的示意图。 <BR>图4为去除对输出没贡献的Web服务后的示意图。 <BR>图5为构造虚拟树示意图。 <BR>图6为对其中一个子节点扩展后找到一条路径的示意图。 <BR>图7为寻找更优结果示意图。 <BR>图8为找到更优结果示意图。 <BR>图9为截掉不满足条件节点的示意图。 <BR>图10为最后组合结果示意图。 <BR>图11为子节点生成树示意图。 <BR>具体实施方式: <BR>步骤1,预处理:对所有的Web服务进行预处理,生成一系列Map,一个输入对应一个需要该输入的Web服务的集合,一个Web服务对应Web服务的输入集合和输出集合。这样对于一个输入可以快速得到包含这一输入的所有Web服务,对于一个Web服务可以快速得到该Web服务的输入和输出。 <BR>步骤2,生成Web服务依赖图:对于用户给定的一个请求,从输入到输出,逐层加入Web服务,直到得到了用户想得到的所有的输出; <BR>步骤3,添加虚拟Web服务:从前往后逐层遍历Web服务依赖图,对于每个Web服务的每个输出,如果该输出是当前层的后面层(除当前层的下一层)的输入,则在当前层的下一层添加一个虚拟Web服务。 <BR>步骤4,去除对输出没贡献的Web服务:从后往前逐层遍历Web服务依赖图,去除那些对输出没有贡献的Web服务; <BR>步骤5,构造虚拟树:从后往前,把Rout作为虚拟树的根节点,Rin作为虚拟树的叶子节点。 <BR>步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻找一条路径; <BR>步骤2生成Web服务依赖图: <BR>将一个Web服务记为WS&lt;Input,Output,QoS&gt;,Input表示Web服务WS能够被激活所必需满足的输入集合,记为Input&lt;in1,in2,…,inn&gt;,其中,ini为单一的输入,1≤i≤n,n表示输入的总数量,Output是指执行Web服务WS后能够得到的所有输出集合,记为Output&lt;out1,out2,…,outm&gt;,其中,outj为单一的输出,1≤j≤m,m表示输出的总数量,QoS指WS的非功能属性,包括响应时间RT,吞吐量TP; <BR>对于用户给定的请求&lt;Rin,Rout&gt;,Rin表示用户给定的输入集合,Rout表示用户需要得到的输出集合;从用户给定的输入Rin开始,逐层添加可被调用执行的Web服务,直到得到用户需要的所有的输出Rout,当且仅当该Web服务的所有输入参数都已得到Web服务可被调用执行; <BR>第l层Ll层添加的Web服务满足即在第l层添加的第x个Web服务WSl,x在第l层之前的第k层没有被添加,并且当该Web服务在第l层可被调用执行时必须添加在第l层;其中是指第l层的第x个Web服务输入集合,Outputp是指第p层中所有Web服务的输出集合的并集,2≤p≤l‑1,1<l<C,C为总层数,Lk表示第k层,WSl,x表示Ll层的第x个Web服务。 <BR>步骤3添加虚拟Web服务: <BR>对于第l层的每一个Web服务的每一个输出outj,当输出outj跨越一层以上作为后面第h层中Web服务的输入时,h≥l+1,在跨越的每层中都添加一个虚拟Web服务,,该虚拟Web服务的输入和输出都设为outj,且具有最高的QoS值,把第一层输入集合Rin和最后一层输出集合Rout也分别作为一个虚拟Web服务。 <BR>步骤4去除对输出没贡献的Web服务: <BR>假设Web服务依赖图有n层,第一层和最后一层只含有一个由步骤3产生的虚拟Web服务,从输出层到输入层逐层遍历Web服务依赖图,对于Ll层,当其中,WSl+1,x∈Ll+1,x=1,2,...,s,即当Ll层的第x个Web服务WSl,x的输出集合与第l+1层的所有Web服务的输入集合的交集为空时,则判定Ll层的第x个Web服务WSl,x对输出没有贡献,从Ll层中去除。 <BR>步骤5构造虚拟树: <BR>从输出到输入逐层处理Web服务依赖图,最后一层Lc只包含一个由步骤3产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点nodec,1,根节点nodeC,1的Web服务的输入集为对于输入集合中每一个输入如果即如果输入ini属于第u‑1层的第x个Web服务的输出集合,则进行如下步骤,指第u‑1层Lu‑1的第x个Web服务的输出集合,nodeu,v指第u层的第v个节点,指节点nodeu,v中所有Web服务的所有输入集合: <BR>如果集合为空,则把Web服务WSu‑1,x加入到集合中,为第u‑1层中输出集合包含输入ini的Web服务集合,集合初始值为空;否则,把Web服务WSu‑1,x与集合中的每一个Web服务WS进行比较,即对任意如果其输入集合InputWS为输入集合的子集,并且Web服务WSu‑1,x的QoS值优于Web服务WS的QoS值,则从集合中删除Web服务WS,然后把Web服务WSu‑1,x加入集合否则,不做处理;目的是为了能够减小中包含的服务的同时又尽可能的保留下层的Web服务,这样下面产生子节点的数目也会减少。 <BR>令nodeu,v的输入集合为中的每个输入为ini,包含输入ini的Web服务集合为假设中包含n个输入,1≤i≤n,中的Web服务个数为q; <BR>节点nodeu,v的子节点的生成步骤如下: <BR>步骤1:构建一颗临时树,初始化临时树为空; <BR>步骤2:从i=1开始到i=n依次循环处理每个输入ini,并且在处理过程中每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以下步骤: <BR>步骤2a,如果临时树为空,则把集合中的第一个Web服务作为临时树的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行直到集合中第q个Web服务加入到该临时树中为止; <BR>步骤2b,如果临时树不为空,从第j=1开始到第j=k个没有左孩子节点的节点依次处理,k为该临时树中没有左孩子节点个数; <BR>步骤2c,如果集合中包含第j个节点中的Web服务,则不作处理,直接处理第j+1个没有左孩子节点的节点; <BR>步骤2d,如果集合中不包含第j个节点中的Web服务,则把集合中第一个Web服务加入该临时树中作为第j个没有左孩子节点的左孩子节点,将集合第二个Web服务加入该临时树中作为第一个Web服务的右孩子节点,第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行第q个Web服务加入到该临时树中为止; <BR>步骤3:从该临时树的根节点开始依次遍历其左孩子节点,并把该节点Web服务加入集合A,直到到达第一个没有左孩子节点的节点为止,然后把遍历过程中得到的Web服务集合A作为节点nodeu,v的第一个子节点;去掉集合A中最后一个Web服务,如果该Web服务在该临时树中有右孩子节点,则把该右孩子节点的Web服务加入Web服务集合A,从该右孩子节点开始遍历该临时树,每次遍历左孩子节点,并把左节点Web服务加入集合A,直到没有左孩子节点为止,从而把A服务集合作为nodeu,v第二个子节点;如果该Web服务在该临时树中没有右孩子节点,则又从Web服务集合A中去掉最后一个Web服务,重复上述过程;最后当Web服务集合A为空且最后去除的节点没有右孩子节点时,则所有nodeu,v子节点都已生成; <BR>例如,那么可产生的子节点数为2×2=4个,分别为{A},{A,B},{A,C},{B,C},但是,我们知道{A,B},{A,C}是多余的,因为如果选择了Web服务A就不需要选择B或C了,选择B或C不会带来任何好处,所以我们值保留{A},{B,C}这两个子节点。处理步骤如图11,首先对中的A,将A作为树的根节点node‑A,B作为A的右孩子节点node‑B;对于node‑A、node‑B节点,都没有左孩子节点,从node‑A开始,对中的A,因为node‑A包含A,不作处理;接着对node‑B处理,对中的A,因为node‑B的祖先node‑A包含A,不加入左孩子节点,对于中的C,因为node‑B不包含C,node‑B的祖先不包含C,于是把C作为node‑B的左孩子节点node‑C。树构造完成后,从node‑A开始遍历,因为node‑A没有左孩子节点,于是{A}为第一个子节点。把A去掉,由于node‑A有右孩子,于是把右孩子节点的Web服务加入有{B},对node‑B处理,遍历其左孩子节点最后又{B,C},作为第二个子节点。从{B,C}中去掉C,node‑C没有右孩子节点,于是去掉B,node‑B没有右孩子节点,最后结束。 <BR>通过上述步骤处理,nodeu,v节点产生子节点的个数一般会小于<MATHS num="0002"><MATH><![CDATA[ <mrow> <MI>mod</MI> <MROW><MO>(</MO> <MSUB><MI>set</MI> <MSUB><MI>in</MI> <MN>1</MN> </MSUB></MSUB><MO>)</MO> </MROW><MO>×</MO> <MI>mod</MI> <MROW><MO>(</MO> <MSUB><MI>set</MI> <MSUB><MI>in</MI> <MN>2</MN> </MSUB></MSUB><MO>)</MO> </MROW><MO>×</MO> <MO>.</MO> <MO>.</MO> <MO>.</MO> <MO>×</MO> <MI>mod</MI> <MROW><MO>(</MO> <MSUB><MI>set</MI> <MSUB><MI>in</MI> <MI>m</MI> </MSUB></MSUB><MO>)</MO> </MROW></MROW>]]&gt;</MATH></MATHS>很多,其中为集合中所包含的Web服务的数目。 <BR>对于每个节点,当遍历该节点时则采用上述步骤生成子节点扩展该节点。 <BR>步骤6遍历虚拟树寻找路径: <BR>对每个QoS属性(吞吐量、响应时间)单独处理,对于寻找最优吞吐量的路径,首先,设定阀值TP,从根节点出发寻找一条路径到叶子节点。对于j层的第i个节点,如果节点nodei,j中Web服务的最小吞吐量小于TP,则截掉该节点及以下分支。如果最后都没有找到一条路径,那么适当减小阀值重新构筑一颗虚拟树开始寻找直到找到一条路径为止。如果找到一条路径,则把这条路径的吞吐量tp作为阀值继续遍历该虚拟树的剩余分支。 <BR>对于寻找最优响应时间的路径,首先,设定阀值RT和每层平均响应时间lamda,从根节点开始寻找一条路径到叶子节点。对于第j层的第i个节点,如果ResponseTimej+lamda×(c‑j‑1)>RT,其中,ResponseTimej是指到j层为止的响应时间,c是Web服务依赖图的层数,即虚拟树的深度,则截掉该节点及以下分支。如果最后都没有找到一条路径,那么适当增大阀值重新构筑一颗虚拟树开始寻找直到找到一条路径为止。如果找到一条路径,则把这条路径的响应时间rt作为阀值继续遍历该虚拟树的剩余分支。 <BR>ResponseTimej的计算,从输出层到C‑j层,对于Ll层的第x个Web服务,WSl,x∈Ll,l=C‑j+1,…,C,该Web服务的输入集合当第l‑1层的第y个Web服务WSl‑1,y∈Ll‑1,如果即输入ini属于集合有且即输入ini属于集合则把Web服务WSl‑1,y加入到alll‑1(ini)集合中,其中,alll‑1(ini)是指在Ll‑1层能够输出ini的Web服务集合,初始为空;为第l‑1层的第y个Web服务WSl‑1,y的输出集合; <BR>对所有的alll‑1(ini)其中i=1,2,...,n集合,输入ini能够得到的最小的响应时间为Web服务集合alll‑1(ini)中的Web服务执行完所需的具有最小时间Web服务bestrt(ini),即bestrt(ini)=min{alll‑1(ini)},则从输入开始到执行完Web服务WSl,x所需要的最小时间RT.WSl,x为得到该Web服务所有输入中最大的响应时间max{bestrt(ini)}加上该Web服务本身执行的时间WSl,x.RT,即RT.WSl,x=max{bestrt(ini)}+WSl,x.RT,其中,RT.WSl,x是指从输入开始到执行完Web服务WSl,x所需的最小时间,WSl,x.RT为执行Web服务WSl,x本身需要的时间,bestrt(ini)为Web服务集合alll‑1(ini)中的Web服务执行完所需的具有最小时间Web服务,max{bestrt(ini)}是指WSl,x所有输入参数对应的Web服务中最大相应时间;最后ResponseTimej等于RT.Rout。 <BR>实施例1 <BR>下面以一个简单的电影点播服务为例介绍整个流程,对于用户的一个请求(Rin,Rout),其中Rin={导演f,年月g,类型h},Rout={时长x,清晰度y}。根据用户的请求按照Web服务组合方法中的步骤2可以生成图2的服务依赖图。 <BR>图2中,圆角矩形A~K代表Web服务,F~K为电影搜索服务,A~E为返回电影的一些属性参数。圆角矩形后面的数字代表QoS属性(图中以响应时间为例),小圆a~z代表Web服务的输入输出,主演a,电影片名b,电影资源c,电影地址d,电影评价e,可看度z,对于当前Web服务而言前面连接的是输入,后面连接的是输出。 <BR>根据Web服务组合方法中的步骤3添加虚拟Web服务,因此添加图中Rin和Rout,且响应时间都为0,如图3。 <BR>根据Web服务组合方法中的步骤4去除对输出没贡献的服务,首先去除Web服务E,因为E的输出对Rout没有任何贡献,同理去除E后又可以去除K,最红得到图4。 <BR>根据Web服务组合方法中的步骤5构造虚拟树,从最后一层开始,把虚拟Web服务作为根节点node4,1,根节点的输入集合为{x,y}。能够产生输入x的Web服务集合setx,因为Web服务A能够产生x,集合setx为空,把A添加到集合setx中;Web服务B也能产生x,则把B和setx中的A进行比较,因为B的输入集合不是A的输入集合的子集,因此把B也添加到setx中;接着对于Web服务D,D也能产生x,把D和setx中的A、B进行比较,因为D的输入集合是B的输入集合的子集,且D的QoS属性不优于B,则不把D添加到setx中。最后结果为setx={A,B},sety={A,C}。这样根节点产生两个子节点node3,1={A},node3,2={B,C},同样对node3,1,node3,2进行同样的处理又可以得到他们的子节点。如图5,图5只扩展了根节点。 <BR>根据Web服务组合方法中的步骤6寻找一条路径,首先,设定响应时间RT阀值,比如10,每层平均响应时间lamda,比如2。从根节点开始,选择子节点node3,1={A},计算执行完A的响应时间ResponseTime2,例中该值为5,根据公式ResponseTimej+lamda×(c‑j‑1)>RT进行判断,因为5+2x(4‑2‑1)=7&lt;10,所以对A进行扩展,扩展如步骤5。处理完A节点及其子节点结果如图6,图中数字为处理完该节点需要的响应时间。处理完后把计算得到的响应时间作为新的RT阀值,接着对node3,2={B,C}进行处理,执行完B、C的响应时间ResponseTime2为4,由于4+2x(4‑2‑1)=6&lt;RT=8,对节点node3,2进行扩展,扩展结果如图7。对子节点{G,H}进行处理,处理结果如图8所示,把计算得到的响应时间作为新的RT阀值,接着对{G,I,J}扩展计算得响应时间为8&gt;RT,因此截掉节点{G,I,J}及其子节点,如图9,其中矩形节点表示被截掉的节点。 <BR>于是,最终组合结果即带箭头路径上的服务,即前面能够获得最小RT=7结果的路径上的服务,如图10,执行流程为根据输入参数导演f,年月g,类型h调用服务G,H得到电影主演a,电影片名b,电影资源c,再根据这些参数调用服务B,C得到时长x和清晰度y。</p></div> </div> </div> </div> <div class="tempdiv cssnone" style="line-height:0px;height:0px; overflow:hidden;"> </div> <div id="page"> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot2/2018-6/16/1d6b1102-7c54-49a2-b255-5223f1c18fc8/1d6b1102-7c54-49a2-b255-5223f1c18fc81.gif' alt="一种基于搜索空间约减的WEB服务组合方法.pdf_第1页" width='100%'/></div><div class="pageSize">第1页 / 共19页</div> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot2/2018-6/16/1d6b1102-7c54-49a2-b255-5223f1c18fc8/1d6b1102-7c54-49a2-b255-5223f1c18fc82.gif' alt="一种基于搜索空间约减的WEB服务组合方法.pdf_第2页" width='100%'/></div><div class="pageSize">第2页 / 共19页</div> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot2/2018-6/16/1d6b1102-7c54-49a2-b255-5223f1c18fc8/1d6b1102-7c54-49a2-b255-5223f1c18fc83.gif' alt="一种基于搜索空间约减的WEB服务组合方法.pdf_第3页" width='100%'/></div><div class="pageSize">第3页 / 共19页</div> </div> <div id="pageMore" class="btnmore" onclick="ShowSvg();">点击查看更多>></div> <div style="margin-top:20px; line-height:0px; height:0px; overflow:hidden;"> <div style=" font-size: 16px; background-color:#e5f0f7; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px; margin-bottom:10px;">资源描述</div> <div class="detail-article prolistshowimg"> <p>《一种基于搜索空间约减的WEB服务组合方法.pdf》由会员分享,可在线阅读,更多相关《一种基于搜索空间约减的WEB服务组合方法.pdf(19页珍藏版)》请在专利查询网上搜索。</p> <p >1、(10)申请公布号 CN 103106269 A(43)申请公布日 2013.05.15CN103106269A*CN103106269A*(21)申请号 201310041942.X(22)申请日 2013.02.04G06F 17/30(2006.01)H04L 29/08(2006.01)(71)申请人南京大学地址 210000 江苏省南京市栖霞区仙林大道163号南京大学(72)发明人杨育彬 夏永敏(74)专利代理机构江苏圣典律师事务所 32237代理人胡建华(54) 发明名称一种基于搜索空间约减的Web服务组合方法(57) 摘要本发明公开了一种基于搜索空间约减的Web服务组合方法,包含。</p> <p >2、如下步骤:预处理;生成Web服务依赖图;添加虚拟Web服务;去除对用户请求要得到的输出没有贡献的Web服务;构造虚拟树;遍历虚拟树寻找路径;本发明能够在较大规模的Web服务组合中得到一个较好的QoS(服务质量)的Web服务组合,因此在较大规模的Web服务组合问题中具有较好的使用价值。(51)Int.Cl.权利要求书3页 说明书9页 附图6页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书3页 说明书9页 附图6页(10)申请公布号 CN 103106269 ACN 103106269 A1/3页21.一种基于搜索空间约减的Web服务组合方法,其特征在于,包含如下步骤:步骤1,。</p> <p >3、预处理:对所有的Web服务进行预处理,生成一组Map映射关系;步骤2,生成Web服务依赖图:根据Map映射关系,对于用户给定的请求,从用户给定的输入开始,逐层加入Web服务,直到得到用户需要的所有输出,从而生成Web服务依赖图;步骤3,添加虚拟Web服务:从输入到输出逐层遍历Web服务依赖图,对于每个Web服务的每个输出,如果该输出是当前层除了下一层的后面层的输入,则在当前层的下一层添加一个虚拟Web服务;步骤4,去除对输出没有贡献的Web服务:从输出到输入逐层遍历Web服务依赖图,去除对输出没有贡献的Web服务;步骤5,构造虚拟树:从输出到输入,把Rout作为虚拟树的根节点,Rin作为虚拟树。</p> <p >4、的叶子节点构造虚拟树,所述叶子节点没有子节点;步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻找一条路径;选取每个节点的服务,形成Web服务组合。2.根据权利要求1所述的方法,其特征在于,步骤2中包括以下步骤:将一个Web服务记为WS,Input表示Web服务WS能够被激活所必需满足的输入集合,记为Input,其中,ini为单一的输入,1in,n表示输入的总数量;Output是指执行Web服务WS后能够得到的所有输出集合,记为Output,其中,outj为单一的输出,1jm,m表示输出的总数量;QoS指Web服务WS的非功能属性,包括响应时间,吞吐量;对于用户给定的请求,Ri。</p> <p >5、n表示用户给定的输入集合,Rout表示用户需要得到的输出集合;从用户给定的输入集合Rin开始,逐层添加可被调用执行的Web服务,直到得到用户需要的所有的输出集合Rout,当且仅当该Web服务的所有输入参数都已得到,则Web服务可被调用执行;第l层Ll添加的Web服务满足即在第l层添加的第x个Web服务WSl,x在第l层之前的第k层没有被添加,并且当该Web服务在第l层可被调用执行时必须添加在第l层;其中是指第l层的第x个Web服务输入集合,Outputp是指第p层中所有Web服务的输出集合的并集,2pl-1,1lC,C为总层数,Lk表示第k层,WSl,x表示Ll层的第x个Web服务。3.根据权。</p> <p >6、利要求2所述的方法,其特征在于,步骤3中添加虚拟Web服务包括以下步骤:对于第l层的每一个Web服务的每一个输出outj,当输出outj跨越一层以上作为后面第h层中Web服务的输入时,hl+1,在跨越的每层中都添加一个虚拟Web服务,该虚拟Web服务的输入和输出都设为outj,且具有最高的QoS值,把第一层输入集合Rin和最后一层输出集合Rout也分别作为一个虚拟Web服务。4.根据权利要求3所述的方法,其特征在于,步骤4去除对输出没贡献的Web服务包括以下步骤:权 利 要 求 书CN 103106269 A2/3页3假设Web服务依赖图有n层,第一层和最后一层只含有一个由步骤3产生的虚拟We。</p> <p >7、b服务,从输出层到输入层逐层遍历Web服务依赖图,对于Ll层,当其中,WSl+1,xLl+1,x1,2,.,s,即当Ll层的第x个Web服务WSl,x的输出集合与第l+1层的所有Web服务的输入集合的交集为空时,则判定Ll层的第x个Web服务WSl,x对输出没有贡献,从Ll层中去除。5.根据权利要求4所述的Web服务组合方法,其特征在于,步骤5构造虚拟树:从输出到输入逐层处理Web服务依赖图,最后一层LC只包含一个由步骤3产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点nodeC,1,根节点nodeC,1的Web服务的输入集为对于输入集合中每一个输入如果即如果输入ini属于第u-1层。</p> <p >8、的第x个Web服务的输出集合,则进行如下步骤,指第u-1层Lu-1的第x个Web服务的输出集合,nodeu,v指第u层的第v个节点,指节点nodeu,v中所有Web服务的所有输入集合:如果集合为空,则把Web服务WSu-1,x加入到集合中,为第u-1层中输出集合包含输入ini的Web服务集合,集合初始值为空;否则,把Web服务WSu-1,x与集合中的每一个Web服务WS进行比较,即对任意如果其输入集合InputWS为输入集合的子集,并且Web服务WSu-1,x的QoS值优于Web服务WS的QoS值,则从集合中删除Web服务WS,然后把Web服务WSu-1,x加入集合否则,不做处理;令nodeu。</p> <p >9、,v的输入集合为中的每个输入为ini,包含输入ini的Web服务集合为假设中包含n个输入,1in,中的Web服务个数为q;节点nodeu,v的子节点的生成步骤如下:步骤1:构建一颗临时树,初始化临时树为空;步骤2:从i1开始到in依次循环处理每个输入ini,并且在处理过程中每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以下步骤:步骤2a,如果临时树为空,则把集合中的第一个Web服务作为临时树的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第三个Web服务加入该临时树中作为第二个Web服务的右孩子节点,依次执行直到集合中第q个Web服务加入到该临时树中。</p> <p >10、为止;步骤2b,如果临时树不为空,从第j1开始到第jk个没有左孩子节点的节点依次处理,k为该临时树中没有左孩子节点个数;步骤2c,如果集合中包含第j个节点中的Web服务,则不作处理,直接处理第j+1个没有左孩子节点的节点;步骤2d,如果集合中不包含第j个节点中的Web服务,则把集合中第一个Web服务加入该临时树中作为第j个没有左孩子节点的左孩子节点,将集合第二个Web服务加入该临时树中作为第一个Web服务的右孩子节点,第三个Web服务加入该临时树权 利 要 求 书CN 103106269 A3/3页4中作为第二个Web服务的右孩子节点,依次执行第q个Web服务加入到该临时树中为止;步骤3:从该。</p> <p >11、临时树的根节点开始依次遍历其左孩子节点,并把该节点Web服务加入集合A,直到到达第一个没有左孩子节点的节点为止,然后把遍历过程中得到的Web服务集合A作为节点nodeu,v的第一个子节点;去掉集合A中最后一个Web服务,如果该Web服务在该临时树中有右孩子节点,则把该右孩子节点的Web服务加入Web服务集合A,从该右孩子节点开始遍历该临时树,每次遍历左孩子节点,并把左节点Web服务加入集合A,直到没有左孩子节点为止,从而把A服务集合作为nodeu,v第二个子节点;如果该Web服务在该临时树中没有右孩子节点,则又从Web服务集合A中去掉最后一个Web服务,重复上述过程;最后当Web服务集合A为空。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>12、且最后去除的节点没有右孩子节点时,则所有nodeu,v子节点都已生成;对于nodeu,v生成的子节点的个数为没有左孩子节点的个数,其小于或等其中,为集合中所包含的Web服务的数目,为nodeu,v能够产生的子节点的总数。6.根据权利要求5所述的Web服务组合方法,其特征在于,步骤6遍历虚拟树寻找路径包括以下步骤:寻找最优吞吐量的路径包括,设定吞吐量阀值TP,从根节点出发寻找一条路径到叶子节点;对于j层的第i个节点nodei,j,如果节点nodei,j中Web服务的最小吞吐量小于阀值TP,则删除节点nodei,j及其所有分支节点;如果没有找到一条路径,那么减小0.1%50%的阀值TP重新寻找最优。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>13、吞吐量的路径,反复循环直到找到一条路径为止,把该路径的吞吐量作为新的阀值TP继续遍历该虚拟树的所有剩余分支节点;寻找最优响应时间的路径包括:设定最优响应时间阀值RT和每层平均响应时间lamda,从根节点开始寻找一条路径到叶子节点,对于第j层的第i个节点nodei,j,如果ResponseTimej+lamda(c-j-1)RT,其中,ResponseTimej是指到j层为止的响应时间,c是Web服务依赖图的层数,即虚拟树的深度,则删除该节点及以下所有分支节点;如果没有找到一条路径,那么增大0.1%50%的阀值重新寻找最优响应时间的路径,反复循环直到找到一条路径为止,把该路径的响应时间作为新的阀。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>14、值RT继续遍历该虚拟树的所有剩余分支节点。权 利 要 求 书CN 103106269 A1/9页5一种基于搜索空间约减的 Web 服务组合方法技术领域0001 本发明属于Web服务组合领域,是一种对于大规模Web服务中获得较好QoS(服务质量)的基于搜索空间约减的Web服务组合方法。背景技术0002 Web服务组合是关于处理自治的服务组件的组装问题,使得从原始的服务组件得到一个新的服务,给出相应的发布服务接口。目前的Web服务体系结构,接口是由WSDL(Web服务描述语言)描述的,通过UDDI(统一描述、发现和集成)发布。但是,支持组合需要更进一步的要求:(1)组合定义(2)确保服务在既保证单。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>15、个服务的一致性又保证整个组合服务的一致性的情况下被组合。目前没有一种关于Web服务应该怎样组合一致的观点。0003 Web服务的组合为复杂的Web应用提供了有效的解决方案。从现实应用来看,Web服务的组合可以实现虚拟社区中软硬件的共享;从Web服务本身来看,Web服务的组合实现了组合服务的动态生成,提高了服务组件及基本服务的可重用性和利用率,减少了系统的开销。但是其中存在的诸如服务组合粒度、服务组件或基本服务之间的通信方式及其优化、服务的聚类、服务的社区化分类管理、组合服务的有效性验证及安全等问题,有待进一步的研究和探索。目前,Web服务组合侧重于基于QoS的服务组合方法。但是,在已有的基于后。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>16、向搜索的方法中,产生的子节点都太多,对于较大规模的Web服务组合来说内存要求太大。发明内容0004 发明目的:本发明为了解决现有方法中Web服务组合过程中内存需求量的大,提出了能够减少内存需求量而获得较好的一种基于搜索空间约减的Web服务组合方法。0005 发明内容:本发明公开了一种基于搜索空间约减的Web服务组合方法,包含如下步骤:0006 步骤1,预处理:对所有的Web服务进行预处理,生成一系列Map映射关系,一个输入对应一个需要该输入的Web服务的集合,一个Web服务对应Web服务的输入集合和输出集合。这样对于一个输入可以快速得到包含这一输入的所有Web服务,对于一个Web服务可以快速得。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>17、到该Web服务的输入和输出。0007 步骤2,生成Web服务依赖图:对于用户给定的一个请求,从用户给定的输入开始,逐层加入Web服务,直到得到了用户想得到的所有的输出;0008 步骤3,添加虚拟Web服务:从前往后逐层遍历Web服务依赖图,对于每个Web服务的每个输出,如果该输出是当前层的后面层(除当前层的下一层)的输入,则在当前层的下一层添加一个虚拟Web服务。0009 步骤4,去除对输出没贡献的Web服务:从后往前逐层遍历Web服务依赖图,去除那些对输出没有贡献的Web服务;0010 步骤5,构造虚拟树:从后往前,把Rout作为虚拟树的根节点,Rin作为虚拟树的叶子节点。说 明 书CN 1。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>18、03106269 A2/9页60011 步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻找一条路径;0012 步骤2生成Web服务依赖图:0013 将一个Web服务记为WS,Input表示Web服务WS能够被激活所必需满足的输入集合,记为Input,其中,ini为单一的输入,1in,n表示输入的总数量,Output是指执行Web服务WS后能够得到的所有输出集合,记为Output,其中,outj为单一的输出,1jm,m表示输出的总数量,QoS指WS的非功能属性,包括响应时间RT,吞吐量TP;0014 对于用户给定的请求,Rin表示用户给定的输入集合,Rout表示用户需要得到的输。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>19、出集合;从用户给定的输入Rin开始,逐层添加可被调用执行的Web服务,直到得到用户需要的所有的输出Rout,当且仅当该Web服务的所有输入参数都已得到Web服务可被调用执行;0015 第l层Ll层添加的Web服务满足即在第l层添加的第x个Web服务WSl,x在第l层之前的第k层没有被添加,并且当该Web服务在第l层可被调用执行时必须添加在第l层;其中是指第l层的第x个Web服务输入集合,Outputp是指第p层中所有Web服务的输出集合的并集,2pl-1,1lC,C为总层数,Lk表示第k层,WSl,x表示Ll层的第x个Web服务。0016 步骤3添加虚拟Web服务:0017 对于Li的每一个W。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>20、eb服务的每一个输出outi,当outi跨越几层而作为后面Lj(ji+1)层中Web服务的输入时,在这跨越的每层Lk(ikj)中都添加且仅添加一次一个虚拟Web服务,该虚拟Web服务的输入和输出都是outi,并且具有最好的QoS值,比如:响应时间为0,吞吐量无穷大;最后,同样对于用户给定的所有输入Rin在第一层生成一个虚拟Web服务,对于用户给的输出Rout在最后一层生成一个虚拟Web服务。0018 步骤4去除对输出没贡献的Web服务:0019 假设Web服务依赖图有n层,第一层和最后一层只含有一个由步骤3产生的虚拟Web服务,从后往前,逐层遍历Web服务依赖图,对于Ll层,当其中,WSl+1。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>21、,xLl+1,x1,2,.,s,即当第l层的第x个Web服务WSl,x的输出集合与第l+1层的所有Web服务的输入集合的交集为空时,则判定第l层的第x个Web服务WSl,x是对输出没有贡献的,从Ll层中去除。0020 步骤5构造虚拟树:0021 从输出到输入逐层处理Web服务依赖图,最后一层LC只包含一个由步骤3产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点nodeC,1,根节点nodeC,1的Web服务的输入集为对于输入集合中每一个输入如果即如果输入ini属于第u-1层的第x个Web服务的输出集合,则进行如下步骤,指第u-1层Lu-1的第x个Web服务的输出集合,nodeu,v指。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>22、第u层的第v个节点,指节点nodeu,v中所有Web服务的所有输入集说 明 书CN 103106269 A3/9页7合:0022 如果集合为空,则把Web服务WSu-1,x加入到集合中,为第u-1层中输出集合包含输入ini的Web服务集合,集合初始值为空;否则,把Web服务WSu-1,x与集合中的每一个Web服务WS进行比较,即对任意如果其输入集合InputWS为输入集合的子集,并且Web服务WSu-1,x的QoS值优于Web服务WS的QoS值,则从集合中删除Web服务WS,然后把Web服务WSu-1,x加入集合否则,不做处理;目的是为了能够减小中包含的服务的同时又尽可能的保留下层的Web服务。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>23、,这样下面产生子节点的数目也会减少。0023 令nodeu,v的输入集合为中的每个输入为ini,包含输入ini的Web服务集合为假设中包含n个输入,1in,中的Web服务个数为q;0024 节点nodeu,v的子节点的生成步骤如下:0025 步骤1:构建一颗临时树,初始化临时树为空;0026 步骤2:从i1开始到in依次循环处理每个输入ini,并且在处理过程中每次加入的孩子节点的Web服务是其祖先节点中没出现过的Web服务,包括以下步骤:0027 步骤2a,如果临时树为空,则把集合中的第一个Web服务作为临时树的根节点,把第二个Web服务加入该临时树中作为根节点的右孩子节点,把第三个Web服务。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>24、加入该临时树中作为第二个Web服务的右孩子节点,依次执行直到集合中第q个Web服务加入到该临时树中为止;0028 步骤2b,如果临时树不为空,从第j1开始到第jk个没有左孩子节点的节点依次处理,k为该临时树中没有左孩子节点个数;0029 步骤2c,如果集合中包含第j个节点中的Web服务,则不作处理,直接处理第j+1个没有左孩子节点的节点;0030 步骤2d,如果集合中不包含第j个节点中的Web服务,则把集合中第一个Web服务加入该临时树中作为第j个没有左孩子节点的左孩子节点,将集合第二个Web服务加入该临时树中作为第一个Web服务的右孩子节点,第三个Web服务加入该临时树中作为第二个Web服务。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>25、的右孩子节点,依次执行第q个Web服务加入到该临时树中为止;0031 步骤3:从该临时树的根节点开始依次遍历其左孩子节点,并把该节点Web服务加入集合A,直到到达第一个没有左孩子节点的节点为止,然后把遍历过程中得到的Web服务集合A作为节点nodeu,v的第一个子节点;去掉集合A中最后一个Web服务,如果该Web服务在该临时树中有右孩子节点,则把该右孩子节点的Web服务加入Web服务集合A,从该右孩子节点开始遍历该临时树,每次遍历左孩子节点,并把左节点Web服务加入集合A,直到没有左孩子节点为止,从而把A服务集合作为nodeu,v第二个子节点;如果该Web服务在该临时树中没有右孩子节点,则又从。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>26、Web服务集合A中去掉最后一个Web服务,重复上述过程;最后当Web服务集合A为空且最后去除的节点没有右孩子节点时,则所有nodeu,v子节点都已生成;0032 例如,那么可产生的子节点数为224个,分别为A,A,B,A,C,B,C,但是,我们知道A,B,A,C是多余的,因为如果选择了说 明 书CN 103106269 A4/9页8Web服务A就不需要选择B或C了,选择B或C不会带来任何好处,所以我们值保留A,B,C这两个子节点。处理步骤如图11,首先对中的A,将A作为树的根节点node-A,B作为A的右孩子节点node-B;对于node-A、node-B节点,都没有左孩子节点,从node-A。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>27、开始,对中的A,因为node-A包含A,不作处理;接着对node-B处理,对中的A,因为node-B的祖先node-A包含A,不加入左孩子节点,对于中的C,因为node-B不包含C,node-B的祖先不包含C,于是把C作为node-B的左孩子节点node-C。树构造完成后,从node-A开始遍历,因为node-A没有左孩子节点,于是A为第一个子节点。把A去掉,由于node-A有右孩子,于是把右孩子节点的Web服务加入有B,对node-B处理,遍历其左孩子节点最后又B,C,作为第二个子节点。从B,C中去掉C,node-C没有右孩子节点,于是去掉B,node-B没有右孩子节点,最后结束。0033 。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>28、通过上述步骤处理,nodeu,v节点产生子节点的个数一般会小于很多,其中为集合中所包含的Web服务的数目。0034 对于每个节点,当遍历该节点时则采用上述步骤生成子节点扩展该节点。0035 步骤6遍历虚拟树寻找路径:0036 对每个QoS属性(吞吐量、响应时间)单独处理,对于寻找最优吞吐量的路径,首先,设定阀值TP,从根节点出发寻找一条路径到叶子节点。对于j层的第i个节点,如果节点nodei,j中Web服务的最小吞吐量小于TP,则截掉该节点及以下分支。如果最后都没有找到一条路径,那么适当减小阀值重新构筑一颗虚拟树开始寻找直到找到一条路径为止。如果找到一条路径,则把这条路径的吞吐量tp作为阀值继。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>29、续遍历该虚拟树的剩余分支,tp取路径中所有Web服务中吞吐量的最小值。0037 对于寻找最优响应时间的路径,首先,设定阀值RT和每层平均响应时间lamda,从根节点开始寻找一条路径到叶子节点。对于第j层的第i个节点,如果ResponseTimej+lamda(C-j-1)RT,其中,ResponseTimej是指到j层为止的响应时间,C是Web服务依赖图的层数,即虚拟树的深度,则截掉该节点及以下分支。(C-j-1)表示剩余的层数再减去输入层,因为Rin响应时间为0,lamda(C-j-1)表示剩余层需要的响应时间。如果最后都没有找到一条路径,那么适当增大阀值重新构筑一颗虚拟树开始寻找直到找到一。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>30、条路径为止。如果找到一条路径,则把这条路径的响应时间rt作为阀值继续遍历该虚拟树的剩余分支。0038 ResponseTimej的计算,从输出层到C-j层,对于Ll层的第x个Web服务,WSl,xLl,lC-j+1,.,C,该Web服务的输入集合当第l-1层的第y个Web服务WSl-1,yLl-1,如果即输入ini属于集合有且即输入ini属于集合则把Web服务WSl-1,y加入到alll-1(ini)集合中,其中,alll-1(ini)是指在Ll-1层能够输出ini的Web服务集合,初始为空;为第l-1层的第y个Web服务WSl-1,y的输出集合;0039 对所有的alll-1(ini)其中i。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>31、1,2,.,n集合,输入ini能够得到的最小的响应时间为Web服务集合alll-1(ini)中的Web服务执行完所需的具有最小时间Web服务bestrt(ini),即bestrt(ini)minalll-1(ini),则从输入开始到执行完Web服务WSl,x所说 明 书CN 103106269 A5/9页9需要的最小时间RT.WSl,x为得到该Web服务所有输入中最大的响应时间maxbestrt(ini)加上该Web服务本身执行的时间WSl,x.RT,即RT.WSl,xmaxbestrt(ini)+WSl,x.RT,其中,RT.WSl,x是指从输入开始到执行完Web服务WSl,x所需的最小时间。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>32、,WSl,x.RT为执行Web服务WSl,x本身需要的时间,bestrt(ini)为Web服务集合alll-1(ini)中的Web服务执行完所需的具有最小时间Web服务,maxbestrt(ini)是指WSl,x所有输入参数对应的Web服务中最大相应时间;最后ResponseTimej等于RT.Rout。0040 本发明是专门针对基于搜索空间约减的Web服务组合方法。Web服务组合不仅要求能够获得较好的QoS,而且要考虑组合过程中的复杂性,包括时间复杂度和空间复杂度。本发明具有以下特征:1)能够降低组合过程中的内存的需求量;2)与此同时能够获得较好的QoS(目前只考虑响应时间和吞吐量)。004。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>33、1 有益效果:本发明能够在较大规模(数量级104)的Web服务组合中较快地得到一个较好的QoS(服务质量)的Web服务组合,以及在较小内存中获得较好的QoS的Web服务组合结果,因此在较大规模的Web服务组合问题中具有较好的使用价值。附图说明0042 图1为本发明流程图。0043 图2为Web服务依赖图。0044 图3为添加虚拟Web服务后的示意图。0045 图4为去除对输出没贡献的Web服务后的示意图。0046 图5为构造虚拟树示意图。0047 图6为对其中一个子节点扩展后找到一条路径的示意图。0048 图7为寻找更优结果示意图。0049 图8为找到更优结果示意图。0050 图9为截掉不满足。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>34、条件节点的示意图。0051 图10为最后组合结果示意图。0052 图11为子节点生成树示意图。具体实施方式 :0053 步骤1,预处理:对所有的Web服务进行预处理,生成一系列Map,一个输入对应一个需要该输入的Web服务的集合,一个Web服务对应Web服务的输入集合和输出集合。这样对于一个输入可以快速得到包含这一输入的所有Web服务,对于一个Web服务可以快速得到该Web服务的输入和输出。0054 步骤2,生成Web服务依赖图:对于用户给定的一个请求,从输入到输出,逐层加入Web服务,直到得到了用户想得到的所有的输出;0055 步骤3,添加虚拟Web服务:从前往后逐层遍历Web服务依赖图,对。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>35、于每个Web服务的每个输出,如果该输出是当前层的后面层(除当前层的下一层)的输入,则在当前层的下一层添加一个虚拟Web服务。0056 步骤4,去除对输出没贡献的Web服务:从后往前逐层遍历Web服务依赖图,去除那些对输出没有贡献的Web服务;说 明 书CN 103106269 A6/9页100057 步骤5,构造虚拟树:从后往前,把Rout作为虚拟树的根节点,Rin作为虚拟树的叶子节点。0058 步骤6,遍历虚拟树寻找路径:从虚拟树的根节点开始遍历整个虚拟树,寻找一条路径;0059 步骤2生成Web服务依赖图:0060 将一个Web服务记为WS,Input表示Web服务WS能够被激活所必需满足。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>36、的输入集合,记为Input,其中,ini为单一的输入,1in,n表示输入的总数量,Output是指执行Web服务WS后能够得到的所有输出集合,记为Output,其中,outj为单一的输出,1jm,m表示输出的总数量,QoS指WS的非功能属性,包括响应时间RT,吞吐量TP;0061 对于用户给定的请求,Rin表示用户给定的输入集合,Rout表示用户需要得到的输出集合;从用户给定的输入Rin开始,逐层添加可被调用执行的Web服务,直到得到用户需要的所有的输出Rout,当且仅当该Web服务的所有输入参数都已得到Web服务可被调用执行;0062 第l层Ll层添加的Web服务满足即在第l层添加的第x个W。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>37、eb服务WSl,x在第l层之前的第k层没有被添加,并且当该Web服务在第l层可被调用执行时必须添加在第l层;其中是指第l层的第x个Web服务输入集合,Outputp是指第p层中所有Web服务的输出集合的并集,2pl-1,1lC,C为总层数,Lk表示第k层,WSl,x表示Ll层的第x个Web服务。0063 步骤3添加虚拟Web服务:0064 对于第l层的每一个Web服务的每一个输出outj,当输出outj跨越一层以上作为后面第h层中Web服务的输入时,hl+1,在跨越的每层中都添加一个虚拟Web服务,该虚拟Web服务的输入和输出都设为outj,且具有最高的QoS值,把第一层输入集合Rin和最后一。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>38、层输出集合Rout也分别作为一个虚拟Web服务。0065 步骤4去除对输出没贡献的Web服务:0066 假设Web服务依赖图有n层,第一层和最后一层只含有一个由步骤3产生的虚拟Web服务,从输出层到输入层逐层遍历Web服务依赖图,对于Ll层,当其中,WSl+1,xLl+1,x1,2,.,s,即当Ll层的第x个Web服务WSl,x的输出集合与第l+1层的所有Web服务的输入集合的交集为空时,则判定Ll层的第x个Web服务WSl,x对输出没有贡献,从Ll层中去除。0067 步骤5构造虚拟树:0068 从输出到输入逐层处理Web服务依赖图,最后一层Lc只包含一个由步骤3产生的虚拟Web服务,把该虚拟Web服务作为虚拟树的根节点nodec,1,根节点nodeC,1的Web服务的输入集为对于输入集合中每一个输入如果即如果输入ini属于第u-1层的第x个Web服务的输出集合,则进行如下步骤,指第u-1层Lu-1的第x个Web服务的输出集合,说 明 书CN 103106269 A10。</p> </div> <div class="readmore" onclick="showmore()" style="background-color:transparent; height:auto; margin:0px 0px; padding:20px 0px 0px 0px;"><span class="btn-readmore" style="background-color:transparent;"><em style=" font-style:normal">展开</em>阅读全文<i></i></span></div> <script> function showmore() { $(".readmore").hide(); $(".detail-article").css({ "height":"auto", "overflow": "hidden" }); } $(document).ready(function() { var dh = $(".detail-article").height(); if(dh >100) { $(".detail-article").css({ "height":"100px", "overflow": "hidden" }); } else { $(".readmore").hide(); } }); </script> </div> <script> var defaultShowPage = parseInt("3"); var id = "1566151"; var total_page = "19"; var mfull = false; var mshow = false; function DownLoad() { window.location.href='https://m.zhuanlichaxun.net/d-1566151.html'; } function relate() { var reltop = $('#relate').offset().top-50; $("html,body").animate({ scrollTop: reltop }, 500); } </script> <script> var pre = "https://img.zhuanlichaxun.net/fileroot2/2018-6/16/1d6b1102-7c54-49a2-b255-5223f1c18fc8/1d6b1102-7c54-49a2-b255-5223f1c18fc8"; var freepage = parseInt('4'); var total_c = parseInt('19'); var start = defaultShowPage; var adcount = 0; var adindex = 0; var adType_list = ";0;1;2;3;"; var end = start; function ShowSvg() { end = start + defaultShowPage; if (end > freepage) end = freepage; for (var i = start; i < end; i++) { var imgurl = pre + (i + 1) + '.gif'; var html = "<img src='" + imgurl + "' alt=\"一种基于搜索空间约减的WEB服务组合方法.pdf_第" + (i + 1) + "页\" width='100%'/>"; $("#page").append("<div class='page'>" + html + "</div>"); $("#page").append("<div class='pageSize'>第" + (i + 1) + "页 / 共" + total_c + "页</div>"); if(adcount > 0 && adType_list.indexOf(";"+(i+1)+";")>-1) { if(adindex > (adcount-1)) adindex = 0; $("#page").append("<div class='pagead' id='addiv"+(i + 1)+"'></div>"); document.getElementById("addiv"+(i + 1)+"").innerHTML =document.getElementById("adpre" + adindex).outerHTML; adindex += 1; } } start = end; if (start > (freepage - 1)) { if (start < total_c) { $("#pageMore").removeClass("btnmore"); $("#pageMore").html("亲,该文档总共" + total_c + "页,到这儿已超出免费预览范围,如果喜欢就下载吧!"); } else { $("#pageMore").removeClass("btnmore"); $("#pageMore").html("亲,该文档总共" + total_c + "页全部预览完了,如果喜欢就下载吧!"); } } } //$(document).ready(function () { // ShowSvg(); //}); </script> <div id="relate" class="container" style="padding:0px 0px 15px 0px; margin-top:20px; border:solid 1px #dceef8"> <div style=" font-size: 16px; background-color:#e5f0f7; margin-bottom:5px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px;">相关资源</div> <div id="relatelist" style="padding-left:5px;"> <li><img alt="用于烧结烧结料的设备和方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1565152.html" title="用于烧结烧结料的设备和方法.pdf">用于烧结烧结料的设备和方法.pdf</a> </li><li><img alt="图像形成系统及其控制方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1565153.html" title="图像形成系统及其控制方法.pdf">图像形成系统及其控制方法.pdf</a> </li><li><img alt="一种公共垃圾桶.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1565154.html" title="一种公共垃圾桶.pdf">一种公共垃圾桶.pdf</a> </li><li><img alt="一种液压驱动卡盘装置.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1565155.html" title="一种液压驱动卡盘装置.pdf">一种液压驱动卡盘装置.pdf</a> </li><li><img alt="微阵列生物芯片的三维载体及其制备方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1565156.html" title="微阵列生物芯片的三维载体及其制备方法.pdf">微阵列生物芯片的三维载体及其制备方法.pdf</a> </li><li><img alt="一种脱除水溶液中微量铜的方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1565157.html" title="一种脱除水溶液中微量铜的方法.pdf">一种脱除水溶液中微量铜的方法.pdf</a> </li><li><img alt="一种可生物降解农用吸水粘结树脂的制备方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1565158.html" title="一种可生物降解农用吸水粘结树脂的制备方法.pdf">一种可生物降解农用吸水粘结树脂的制备方法.pdf</a> </li><li><img alt="一种石油钻采设备用集液槽.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1565159.html" title="一种石油钻采设备用集液槽.pdf">一种石油钻采设备用集液槽.pdf</a> </li><li><img alt="电子装置控制系统及方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1565160.html" title="电子装置控制系统及方法.pdf">电子装置控制系统及方法.pdf</a> </li><li><img alt="一种自动锁紧装置.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1565161.html" title="一种自动锁紧装置.pdf">一种自动锁紧装置.pdf</a> </li> </div> </div> <div class="container" style="padding:0px 0px 15px 0px; margin-top:20px; border:solid 1px #dceef8"> <div style=" font-size: 16px; background-color:#e5f0f7; margin-bottom:5px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px;">猜你喜欢</div> <div id="relatelist" style="padding-left:5px;"> <li><img alt="薄膜复合制备方法与装置.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-353322.html" target="_parent" title="薄膜复合制备方法与装置.pdf">薄膜复合制备方法与装置.pdf</a></li> <li><img alt="一种洗脸盆下水三通阀.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-353323.html" target="_parent" title="一种洗脸盆下水三通阀.pdf">一种洗脸盆下水三通阀.pdf</a></li> <li><img alt="深井钻孔岩移观测装置及其岩移测点的安装方法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-353324.html" target="_parent" title="深井钻孔岩移观测装置及其岩移测点的安装方法.pdf">深井钻孔岩移观测装置及其岩移测点的安装方法.pdf</a></li> <li><img alt="由手机控制的防盗门.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-353325.html" target="_parent" title="由手机控制的防盗门.pdf">由手机控制的防盗门.pdf</a></li> <li><img alt="混凝土振动棒.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-353326.html" target="_parent" title="混凝土振动棒.pdf">混凝土振动棒.pdf</a></li> <li><img alt="一种高强度TINIMO形状记忆合金及作为管接头的应用.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-353327.html" target="_parent" title="一种高强度TINIMO形状记忆合金及作为管接头的应用.pdf">一种高强度TINIMO形状记忆合金及作为管接头的应用.pdf</a></li> <li><img alt="一种低相变点TINIFE形状记忆合金及作为管接头的应用.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-353328.html" target="_parent" title="一种低相变点TINIFE形状记忆合金及作为管接头的应用.pdf">一种低相变点TINIFE形状记忆合金及作为管接头的应用.pdf</a></li> <li><img alt="电解水生成装置.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-353329.html" target="_parent" title="电解水生成装置.pdf">电解水生成装置.pdf</a></li> <li><img alt="反渗透海水淡化脉冲电磁场预处理方法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-353330.html" target="_parent" title="反渗透海水淡化脉冲电磁场预处理方法.pdf">反渗透海水淡化脉冲电磁场预处理方法.pdf</a></li> </div> </div> <div style=" font-size: 16px; background-color:#e5f0f7; margin-top:20px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px; margin-bottom:10px;"> 相关搜索</div> <div class="widget-box pt0" style="border: none; padding:0px 5px;"> <ul class="taglist--inline multi"> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e4%b8%80%e7%a7%8d">一种</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e5%9f%ba%e4%ba%8e">基于</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e6%90%9c%e7%b4%a2">搜索</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e7%a9%ba%e9%97%b4">空间</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=WEB">WEB</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e6%9c%8d%e5%8a%a1">服务</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e7%bb%84%e5%90%88">组合</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e6%96%b9%e6%b3%95">方法</a></li> </ul> </div> <br /> <div > 当前位置:<a href="https://m.zhuanlichaxun.net/">首页</a> &gt; <a href="https://m.zhuanlichaxun.net/c-00007.html">物理</a><span> &gt; </span><a href="https://m.zhuanlichaxun.net/c-0000700006.html">计算;推算;计数</a> </div> <br /> <br /> <span id="ctl00_LabelScript"></span> <script src="https://m.zhuanlichaxun.net/JS/bootstrap-collapse.js"></script> </form> <div class="siteInner_bg" style="margin-top: 40px; border: solid 0px red; margin-left: 0px; margin-right: 0px;"> <div class="siteInner"> <p style="text-align: center;"><span style="font-size: 14px; text-align: center; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; line-height: 20px;">copyright@ 2017-2020 zhuanlichaxun.net网站版权所有</span><br style="text-align: center; white-space: normal; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 12px; line-height: 20px;"/><span style="font-size: 14px; text-align: center; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; line-height: 20px;">经营许可证编号:<a href="https://beian.miit.gov.cn/" target="_self" style="font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 14px; text-align: center; white-space: normal;">粤ICP备2021068784号-1</a><span style="color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 14px; text-align: center;">&nbsp;</span></span> &nbsp;</p><script src="/redirect.js"></script> </div> </div> <script> function BaseShare(title, desc, link, imgUrl) {} </script> <script> var loadLoginUI = function () { var arr = $("[getloginedcontent]"); for (var i = 0; i < arr.length; i++) { (function (index) { var url = arr.eq(index).attr("getloginedcontent"); $.get(url + "?t=" + (new Date()).valueOf(), function (d) { try { arr.eq(index).empty().html(d); } catch (e) { } try { arr.html(d); } catch (e) { } }); })(i); } } $(document).ready(function () { loadLoginUI(); }); </script> <script src="https://m.zhuanlichaxun.net/JS/jquery.lazyload.js"></script> <script charset="utf-8"> $("img.lazys").lazyload({ threshold: 200, effect: "fadeIn" }); </script> </body> </html>