一种基于服务组合的可定制查询方法与平台的制作方法

文档序号:7696331阅读:147来源:国知局

专利名称::一种基于服务组合的可定制查询方法与平台的制作方法
技术领域
:本发明属于计算机数据管理领域,具体涉及一种基于服务组合的可定制数据查询方法及其平台。
背景技术
:传统基于Web的数据查询由Web应用系统针对每项数据査询功能提供一个独立的数据查询条件输入页面。查询条件输入页面是此项数据查询功能的入口,页面对应的后台逻辑固定,以系统硬编码方式实现。对于存在复杂査询条件输入的功能,系统提供对简单査询条件做诸如"与""或""非"等逻辑拼接,构成复杂査询条件的输入方式。用户进行数据查询时,首先在系统提供的功能集中选择需要的功能页面,然后按照系统指定方式选择、填写査询条件并提交数据查询请求,最后在系统返回的固定格式应答中获得关心的结果。系统视从同一数据查询条件输入页面进入的不同用户之间无差别,为这类用户提供同样的査询服务。这类传统方法存在以下问题第一、固定的数据查询处理方式不能满足用户个性化查询需求。对于同一功能,应用系统只可接受页面提供的待输入条件,系统输出则是固定格式的数据查询结果。若用户所预期的査询条件不是系统提供的条件输入页面项,则该查询需求不能被此系统接受;若用户不关心系统得到的查询结果中的部分数据,且希望其被过滤以利于数据分析,或者希望重点突出某部分数据,则这种系统固定输出结果格式的查询处理方式,不能满足这种具有用户偏好性质的需求。第二、应用系统支持的数据査询功能已预先分类,用户的一次査询动作被限制在一个提供的该查询功能的页面中。如果用户需要进行的査询分类与应用系统的査询功能分类不同,则该査询需求无法在系统提供的一个查询页面中完成,用户需要在其他相关的系统页面中进行多次查询,并由用户在逻辑上比对得到的多个查询结果。这种方式导致数据查询效率低下,用户的工作量增加,系统友好性差。第三、应用系统开发时需要为每种数据查询功能做硬编码工作,工作量大且重复劳动多。第四、当数据査询应用系统开发完毕投入使用之后,如有新功能需求产生,系统不能自动适应需求的变更。若通过系统升级方式解决,耗费人力物力的同时也极易破坏系统原有架构,使系统渐渐失去可维护性和可扩展性。专利号为200610059824.1,"一种性能数据的定制査询方法及系统"中提出一种性能数据的定制査询方法,通过系统定制模板指定查询对象的一个或多个相关属性作为模板属性并保存模板,用户通过选择模板并设置查询参数构造查询请求。服务器解析出要查询的模板属性和查询参数,构造出查询语句执行数据库査询。这种方法用户只能在系统提供的模板中选择需要的查询模式,模板指定的是一次查询的结果是何种属性数据,模板定制工作由系统管理员完成,用户不能直接干预,当系统提供的模板不能满足用户的查询需求的时候,用户仍需要进行多次査询并手工拼接査询结果甚至无法通过该系统获得期望数据。服务器端查询引擎对用户数据查询请求的处理方式为根据所述查询参数动态构造SQL语句后执行数据库查询。这种处理方式生成的SQL语句在执行之前,无法验证其逻辑合理性,而合理的SQL语句不能和对应査询功能关联,不具有重用性。
发明内容本发明提出一种基于服务组合的可定制査询方法与平台,用户通过指定的客户端可视组件并通过选择、填写组件属性值的操作,向平台描述自身需求,数据查询请求的初始状态和目标状态被解析出后,搜索并组合出对应的基本服务调用序列,然后执行序列中的基本服务,进而得到包含用户期望结果数据的结果集,并经过筛选、排序、组装后生成最终结果向用户显示。本方法中用户主动向系统描述自身需求,系统通过接收用户描述并动态分析处理,可有效适应不同用户的不同个性化需求,降低应用系统开发工作量和后期维护成本,并提高了数据査询应用系统的友好性。使用户主动地定制数据査询,将査询进行得灵活而方便。一种基于服务组合的可定制查询方法,包括以下步骤步骤1:建立可定制查询客户端和数据査询服务器,并对领域内数据进行抽象分类,为所建立的模型构建可编辑控件,存入可定制査询客户端中的领域数据对象^莫型库,并在数据査询服务器中构建对应的基本数据查询服务,存入基本数据査询服务库;步骤2:初始化可定制査询客户端的领域数据对象模型库和存储已有的定制功能的模板库;用户把自身个性化需求与禾莫板库中的已有功能相比较,如果存在满足用户此次需求的功能的模版,从模板库中选择特定的功能的模板,页面展示为此功能对应定制的查询内容、查询条件、结果显示格式,并调整显示格式,重新填写定制的査询条件属性值,构造相同功能的新请求;否则由领域数据对象模型库和定制结果封装子模块定制数据查询;步骤3:可定制查询客户端的定制结果封装子模块封装用户定制结果;如果本次定制来源于模板库,设定模板的标识位表示来源于已有定制+莫板,否则设定相应的标识表示为新定制;发送至数据查询服务器的请求队列管理子模块;步骤4:请求队列管理子模块接收客户端发送的数据查询请求,并加入到请求队列中;步骤5:请求解析子模块取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式;如果请求队列不为空,判断此次数据查询是否模板库中功能的一种,如果是,则由执行子模块直接获得其服务调用序列,转步骤8;否则调用服务组合引擎进行服务组合;如果请求队列为空,则转步骤10;步骤6:服务组合引擎根据初始状态和目标状态,调用服务代理子模块获得的当前能够使用的基本数据查询服务信息,逐一处理初始状态中的查询过程,在满足中间过程约束条件的前提下,为每一査询过程进行服务组合,生成服务调用序列;如果服务组合失败,则转到步骤10;步骤7:由定制存储模块存储对应的功能及服务调用序列到模板库;步骤8:执行子模块按照服务调用流程序列的顺序调用基本数据査询服务库中的基本数据查询服务,并协调服务间输入输出关系;如果出现异常则转到步骤10;步骤9:由结果生成子模块按照请求所描述结果显示格式生成最终数据查询分析结果,向客户端返回应答,进行结果显示;步骤10:由异常处理子模块生成失败信息,并返回给客户端显示。所述步骤1中的对数据进行抽象分类是按照面向对象的思想,对数据进行特征提取;将抽象出的领域数据对象模型所包含的属性作为对象模型的属性,每个领域数据对象模型以客户端脚本的方式被编写为可定制査询客户端的可编辑控件,向应用系统描述自身的数据査询需求。所述步骤1中的领域数据对象模型库包括逻辑控件,用运算及逻辑操作对两个或多个领域数据对象属性之间的关联关系进行描述,每个逻辑控件以脚本方式被编写。所述步骤1中的基本数据查询服务库的基本数据査询服务与领域数据对象模型库的领域数据对象模型一一对应,提供领域数据对象查询的原子操作,仅通过对应的领域数据对象模型的一个或几个属性,从后台数据库中获得具有此属性的数据对象实例的集合。所述步骤1中的基本数据查询服务库的每个基本数据查询服务包含一个査询关联属性的原子操作,获得对应领域数据对象的关联数据对象及其属性的原子操作,输出关联数据对象及关联数据对象的属性集合。所述步骤2中的定制数据查询,包括如下步骤步骤a:在可定制查询客户端的页面上从领域数据模型库的控件中选择各可编辑控件,指定本次查询的各査询内容数据对象;选择各可编辑控件的属性作为本次数据査询的结果数据列表的一列;'步骤b:在定制页面上从领域数据模型库的可视控件中选择各可编辑控件,指定本次查询的条件数据对象;选择各可编辑控件的属性并为该属性选择、填写属性值,并指定此次选择的查询条件用于的查询内容数据对象;步骤C:排列选择的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列;步骤d:命名新定制的数据查询,保存本次定制,并命名本次定制对应的模板。所述步骤5中的初始状态,由査询过程集合、査询结果和服务调用序列组成;査询过程集合包括本次用户请求需要査询的数据对象的查询过程,査询结果和服务调用序列为空。所述步骤5中的目标状态,由査询过程集合、査询结果和服务调用序列组成;査询过程集合为空,查询结果为査询过程集合中每个查询过程的目标数据对象,服务调用序列为一段空闲的内存空间。所述步骤6中的服务组合,包括如下步骤stepl:服务组合引擎提取本次服务组合过程的源状态,包括查询过程的目标数据对象、查询条件集合和空的服务调用序列;添加源状态至用于临时存储数据的可用状态队列;step2:如果可用状态队列为空,则输出服务组合失败信息,服务组合过程结束;否则转step3jstep3:从可用状态队列中取出位于队列头的可用状态作为当前状态;step4:如果当前状态的查询条件为空,则输出当前状态的服务调用序列,服务组合过程结束;否则将当前状态的查询条件存储于存储査询条件的临时队列;step5:如果临时队列为空,转st印2;否则转step6;step6:从临时队列中取出位于队列头的查询条件作为当前条件,搜索能用于当前条件的基本数据查询服务并査找其对应的原子操作,如果所有基本数据查询服务都已调用过,则转step2;否则转step7;step7:把查找到的原子操作以等价关系添加到当前状态的服务调用序列;step8:针对当前状态的当前査询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列,转step5。所述step8生成当前状态的后继状态时,若当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,并将删除当前条件后的状态作为后继状态加入可用状态队列,生成完毕;否则,调用当前条件对应的基本数据査询服务的关联查询原子操作,获得关联属性集合,分别添加每个关联属性及属性值来源,并从当前状态中删除当前条件并作为后继状态加入可用状态队列;接着处理下一个关联属性并把所有的后继状态加入可用状态队列,直至关联属性集合中所有关联属性都已生成后继状态。一种基于服务组合的可定制查询平台,其特征在于,包括如下模块建立的可定制查询客户端和数据査询服务器;可定制査询客户端,包括领域数据对象模型库,用来对领域内数据进行抽象分类,存入为所建立的模型构建的可编辑控件;数据査询服务器,包括基本数据査询服务库,构建并存储可编辑控件对应的基本数据查询服务;可定制査询客户端还包括模板库、定制结果封装子纟莫块;模板库,用来存储已有的定制功能,初始化模板库后,用户把自身个性化需求与模板库中的已有功能相比较,如果存在满足用户此次需求的功能的模版,从模板库中选择特定的功能的模板,页面展示为此功能对应定制的査询内容、査询条件、结果显示格式,并调整显示格式,重新填写定制的査询条件属性值,构造相同功能的新请求;否则由领域数据对象模型库和定制结果封装子模块定制数据查询;定制结果封装子模块,用来封装用户定制结果;如果本次定制来源于模板库,设定模板的标识位表示来源于已有定制模板,否则设定相应的标识位表示为新定制;发送至数据查询服务器的请求队列管理子模块;数据查询服务器还包括请求队列管理子模块、请求解析子模块、服务代理子模块、服务组合引擎、定制存储模块、执行子模块、结果生成子模块和异常处理子模块;请求队列管理子模块,请求队列管理子模块接收客户端发送的数据查询请求,并加入到请求队列中;请求解析子模块,取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式;如果请求队列不为空,判断此次数据査询是否+莫板库中功能的一种,如果是,则由执行子模块直接获得其服务调用序列,否则调用服务组合引擎进行服务组合;如果请求队列为空,则发送到异常处理子模块处理;服务代理子模块,获得当前能够使用的基本数据查询服务信息;服务组合引擎,根据初始状态和目标状态,调用当前能够使用的基本数据査询服务信息,逐一处理初始状态中的査询过程,在满足中间过程约束条件的前提下,为每一查询过程进行服务组合,生成服务调用序列;如果服务组合失败,则发送到异常处理子模块处理;定制存储模块,存储对应的功能及服务调用序列到模板库;执行子模块,按照服务调用流程序列的顺序调用基本数据査询服务库中的基本数据查询服务,并协调服务间输入输出关系;如果出现异常,则发送到异常处理子模块处理;结果生成子模块,按照请求所描述结果显示格式生成最终数据査询分析结果,向客户端返回应答,进行结果显示;异常处理子模块,生成失败信息,并返回给客户端显示。所述领域数据对象模型库中,对数据进行抽象分类是按照面向对象的思想,对数据进行特征提取;将抽象出的领域数据对象模型所包含的属性作为对象模型的属性,每个领域数据对象模型以客户端脚本的方式被编写为可定制查询客户端的可编辑控件,向应用系统描述自身的数据査询需求。所述领域数据对象模型库包括逻辑控件,用运算及逻辑操作对两个或多个领域数据对象属性之间的关联关系进行描述,每个逻辑控件以脚本方式被编写。所述基本数据查询服务库的基本数据查询服务与领域数据对象模型库的领域数据对象模型一一对应,提供领域数据对象査询的原子操作,仅通过对应的领域数据对象模型的一个或几个属性,从后台数据库中获得具有此属性的数据对象实例的集合。所述基本数据查询服务库的每个基本数据查询服务包含一个查询关联属性的原子操作,获得对应领域数据对象的关联数据对象及其属性的原子操作,输出关联数据对象及关联数据对象的属性集合。所述可定制查询客户端进行的定制数据查询在可定制査询客户端的页面上从领域数据模型库的控件中选择各可编辑控件,指定本次查询的各査询内容数据对象;选择各可编辑控件的属性作为本次数据査询的结果数据列表的一列;在定制页面上从领域数据t莫型库的可视控件中选择各可编辑控件,指定本次查询的条件数据对象;选择各可编辑控件的属性并为该属性选择、填写属性值,并指定此次选择的查询条件用于的査询内容数据对象;排列选择的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列;命名新定制的数据查询,保存本次定制,并命名本次定制对应的模板。所述请求解析子模块得到的初始状态,由査询过程集合、查询结果和服务调用序列组成;査询过程集合包括本次用户请求需要查询的数据对象的查询过程,查询结果和服务调用序列为空。所述请求解析子模块得到的目标状态,由査询过程集合、査询结果和服务调用序列组成;查询过程集合为空,查询结果为查询过程集合中每个査询过程的目标数据对象,服务调用序列为一段空闲的内存空间。所述服务组合引擎提取本次服务组合过程的源状态,包括查询过程的目标数据对象、查询条件集合和空的服务调用序列;添加源状态至用于临时存储数据的可用状态队列;如果可用状态队列为空,则输出服务组合失败信息,服务组合过程结束;否则从可用状态队列中取出位于队列头的可用状态作为当前状态;如果当前状态的査询条件为空,则输出当前状态的服务调用序列,服务组合过程结束;否则将当前状态的査询条件存储于存储査询条件的临时队列;如果临时队列为空,对可用状态队列是否为空进行判断并处理;否则从临时队列中取出位于队列头的查询条件作为当前条件,搜索能用于当前条件的基本数据査询服务并査找其对应的原子操作,如果所有基本数据査询服务都已调用过,则对可用状态队列是否为空进行判断并处理;否则把查找到的原子操作以等价关系添加到当前状态的服务调用序列;针对当前状态的当前查询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列,对临时队列是否为空进行判断并处理。所述服务组合引擎的服务组合过程生成当前状态的后继状态,若当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,并将删除当前条件后的状态作为后继状态加入可用状态队列,生成完毕;否则,调用当前条件对应的基本数据査询服务的关联查询原子操作,获得关联属性集合,分别添加每个关联属性及属性值来源,并从当前状态中删除当前条件并作为后继状态加入可用状态队列;接着处理下一个关联属性并把所有的后继状态加入可用状态队列,直至关联属性集合中所有关联属性都已生成后继状态。本发明一种基于服务组合的可定制査询方法与平台,优点在于(1)本发明采用由用户主动制定一次査询的査询目的、査询条件及査询结果显示格式的方式可有效应对用户多样化的数据査询分析需求,允许用户随时根据自身需求对査询过程进行修改,而无需改变系统结构。(2)本发明采用数据查询基本服务建立方式,以领域数据抽象建模为基础,运用面向对象的思想为每种领域数据对象建立一个独立的数据查询基本服务,符合大众思维逻辑;同时在基本服务范围内提供原子操作,代表不同的输入-输出对,使服务内部不同的査询方式清晰区分;原子操作建立不仅包括由领域数据对象的一种属性査询具有该属性值的所有领域数据对象实例,而且包括由通常作为联合属性的多个属性査询具有这些属性值的所有领域数据对象实例,避免了在仅提供单一属性查询时对后台数据库的多次査询操作以及对多个数据査询结果取交集的操作,提高査询效率。(3)基于服务组合技术构造数据査询处理逻辑,在给定服务组合流程的初始状态和目标状态的条件下,可以动态生成服务合成调用序列,自动应对定制客户端的多变数据查询请求。图1为本发明一种基于服务组合的可定制査询方法的方法流程图2为本发明一种基于服务组合的可定制査询平台的平台结构图3为本发明一种基于服务组合的可定制査询方法的定制数据查询功能的流程图4为本发明一种基于服务组合的可定制查询方法的用户定制结果xml的形式化描述图5为本发明一种基于服务组合的可定制查询方法的服务组合流程图6为本发明一种基于服务组合的可定制査询方法的生成后继状态的流程图;图7为本发明一种基于服务组合的可定制査询方法的实施例中的xml形式的用户定制结果;图8为本发明一种基于服务组合的可定制查询方法的实施例中的服务调用序列生成过程的状态转换图。具体实施例方式本发明提出一种基于服务组合的可定制査询方法与平台,支持用户向系统描述自身需求,系统根据用户需求动态组装基本数据査询服务,生成能够满足用户需求的基本数据查询服务调用序列构成的组合服务,执行组合服务并按照用户期望展示数据査询分析结果。一种基于服务组合的可定制査询平台,如图2所示,包括可定制查询客户端和数据查询服务器两部分。可定制数据查询客户端包括模板库、领域数据对象模型库、定制结果封装子模块。模板库用于向用户提供该系统存储的典型数据査询功能。禾莫板库是平台中已有的数据查询功能的集合,来源于用户定制存储子模块读取的存储于后台数据库的系统前期成功处理过的用户定制。用户选择模板库中一项功能,使页面显示为此项功能对应的査询内容、査询条件、查询结果格式的展示。领域数据对象模型库提供领域数据对象模型可视化控件及逻辑控件。定制结果封装子模块把用户在客户端上以可视方式定制的个性化查询需求转换为形式化描述。模板库提供平台中已有的数据査询功能,用户查询时先査询模板库中是否有符合自身需求的数据査询功能模板,有满足需求的模板则选取此模板,修改模板中相应内容,输出用户定制结果至定制结果封装子,莫块,定制结果封装子模块把用户定制的可视化结果封装为xml描述,并作为HTTP请求的参数发送给数据査询服务器;若没有满足需求的模板,则转向领域数据对象模型库,用户从领域数据对象模型库分别选择查询内容、査询条件对应的领域数据对象控件及其属性,并在需要时填写属性值,指定数据查询分析结果的显示格式,输出到定制结果封装子模块,并仍由定制结果封装子模块把用户定制的可视化结果封装为xml描述,并作为HTTP请求的参数发送给数据查询服务器。数据查询服务器包括服务代理子模块、请求队列管理子模块、请求解析子模块、服务组合引擎、执行子模块、结果生成子模块、定制存储子模块、异常处理子模块和基本数据査询服务库。其中服务代理子模块用于管理领域数据査询基本服务。基本数据查询服务库的每个基本数据査询服务需要向服务代理子模块注册,提供自身对特定的领域对象模型进行查询的信息,并以可接受参数的方式,描述本服务提供的对该类领域数据对象模型的全部基本査询操作。基本数据査询服务可以在必要时添加,需保证新的基本数据査询服务与原有基本数据査询服务不存在冲突,且与前述基本数据査询服务的发布规范一致的方式发布到服务代理子模块。请求队列管理子模块用于接收数据查询客户端发送的数据査询分析请求,并缓存这些请求。请求解析子模块用于解析数据查询分析请求,将可定制査询客户端发送的请求所携带的用户定制结果转换为服务组合引擎可理解数据查询请求。服务组合引擎用于结合服务代理子模块提供的可用服务的细节,根据请求解析模块传递的解析结果,针对结果中包含的查询过程逐一生成可满足需求的服务调用序列。执行子模块用于按照服务组合引擎生成的服务调用序列,依次执行序列中的服务。结果生成子模块用于把执行子模块输出的结果根据用户定制的结果格式生成HTTP应答。定制存储子模块用于存储本次用户定制的功能,及用户定制功能的处理方式。异常处理子模块用于在请求解析模块无法解析数据查询请求、服务组合引擎无法生成满足用户需求的服务序列、执行模块执行服务失败时,向数据査询客户端返回出错信息。基本数据查询服务库中的每个基本数据查询服务向服务代理子模块提供自身信息,包括对应的领域数据对象类型和可提供的原子操作。服务代理子模块将其获得的所有基本数据查询服务信息维护成当前可用的基本数据査询服务列表,供服务组合引擎査询。数据査询处理服务器的请求队列管理子模块接收到定制结果封装子模块发送的数据査询请求,并缓存入请求队列。请求解析子模块取出位于请求队列头的请求,并从中解析出本次请求的初始状态和目标状态,把解析结果发送给服务组合引擎。服务组合引擎获得服务代理子模块提供的当前可用的基本数据査询服务的信息,根据请求的初始状态和目标状态,生成能够处理本次数据查询请求的服务调用序列,并将生成结果交由执行子模块执行。执行子模块按照服务组合引擎生成的服务调用序列顺序执行各基本数据査询服务,向结果生成子模块输出包含用户期望结果的数据对象实例集合。结果生成子模块从执行模块输出的结果中提取用户定制结果中指定的待显示内容,并将待显示内容按照用户定制时指定的排序方式排序,生成应答HTML页面,并向可定制数据查询客户端返回HTTP应答。在请求解析模块无法解析数据査询请求、服务组合引擎无法生成满足用户需求的服务序列、执行模块执行服务失败时,异常处理子模块将捕获这些失败信息,数据査询客户端返回出错信息。一种基于服务组合的可定制査询方法,如图l所示,包括如下步骤步骤一领域分析,对领域内数据进行抽象分类,为所建立的模型构建可定制查询客户端的可编辑控件,存入领域数据对象模型库,并构建对应的基本数据査询服务库。基本数据査询服务库中的每一个基本数据査询服务对应一个领域数据对象纟莫型库中对象控件。基本数据查询服务是多个原子操作的集合。原子操作代表一个输入-输出对,输入是领域数据对象模型的一个或者几个属性,输出是具有指定输入属性值的领域数据对象模型的实例的集合。原子操作包括为对象控件的每一个属性提供根据该属性查询领域数据对象实例,和同时根据几个属性联合获得数据对象实例两种方式。其中后者所述的联合的属性是在进行需求分析时考虑到的、经常被联合起来作为一次查询条件的属性。步骤二初始化可定制查询客户端,即初始化可定制查询客户端的领域数据对象模型库和存储已有定制功能的模板库。领域数据对象模型库中的控件以脚本形式实现。已有定制功能模板库中的模板来源于历史成功处理过的数据查询分析请求;模板的信息存储于后台数据库,每个模板对应数据库中的一条记录,该记录包括模板ID、*莫板名称、模板对应的配置信息(即此模板对应的查询内容、査询条件)、模板功能对应的服务调用序列四部分。当用户打开定制的页面时,领域对象模型库的展现形式为可编辑控件的集合,已有定制功能模板库的展现形式为已有定制功能模板名称的集合。用户把自身个性化需求与模板库中的已有功能相比较,如果存在满足用户此次需求的功能,则从模板库中选择特定模板名称,读取模板名称对应的模板ID以及模板配置信息中该模板对应定制的査询内容、查询条件、结果显示格式,并生成查询内容对应的可编辑控件及属性,查询条件对应的可编辑控件及属性,结果显示列表的表头。用户通过调整结果显示格式,重新填写定制的查询条件属性的值,构造出相同功能的新查询请求。如果不存在满足用户此次需求的功能,则由可定制査询客户端定制数据査询,定制一个全新的数据查询功能,如图3所示,包括如下步骤A)定制查询内容。在可定制查询客户端的页面上从领域数据模型库控件中选择各可编辑控件,拖拽入査询内容定制框从而指定本次査询的各查询内容数据对象,査询结果数据来源于查询内容数据对象的部分属性,勾选各可编辑控件的属性作为本次数据查询的结果数据列表的一列,即指明查询结果数据是查询内容数据对象的哪些属性。B)定制査询条件。在定制页面上从领域数据模型库可视控件中选择各可编辑控件,拖拽入査询条件定制框从而指定本次查询的条件数据对象,勾选这些可编辑控件的属性并为该属性选择、填写属性值,即指定作为查询条件的参数来源于何种数据对象的何种属性,且确定这种属性的属性值。指定此次选择的查询条件用于哪个查询内容数据对象,用箭头从査询条件数据对象控件指向查询内容数据对象控件以表示关联。C)定制结果显示格式。按用户偏好排列A)中勾选的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列,把排序列放在第一列。D)为新定制的数据查询功能命名。用户勾选保存本次定制按钮,并在模板名称文本框中输入本次定制的功能对应的模板的名称。步骤三用户定制过程完毕,由可定制查询客户端的定制结果封装子模块封装用户定制结果。如果本次定制来源于模板库,设定相应标识位表示来源于已有定制模板,若否,则本次定制为一个全新的定制,设定相应的标识为表示为新定制。用户定制结果封装为一个xml文件,如附图4所示。以request为根节点,由若干process和一个resultForm丰勾成。process代表一个查询过程,由一个goal节点(即査询内容)和一个parameter(即查询条件)节点构成。goal节点由一个数据对象节点model构成,model节点包括一个model的名称name节点,和多个model的属性property节点。property节点包含property的名称name和property的值value(此处为空)。parameter节点由多个model节点组成。每个model节点包括一个model的名称name节点,和多个model的属性property节点,property节点包含property的名称name和property的值value,且此value不为空。resultForm表示结果格式,其中包含若干个列column节点。每个column节点包含列名称(即数据查询结果列表表头名)name,和列的值(即此列数据的数据来源)value。把封装结果作为参数,发送数据查询http请求至数据查询处理服务器。步骤四数据査询服务器的请求队列管理子模块接收客户端发送的数据査询请求,并加入到请求队列中。步骤五请求解析子模块取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式。初始状态,由当前待执行的査询过程集合、査询结果和服务调用序列三部分组成。待执行査询过程集合来源于本次数据查询请求携带的参数xml文件中,request节点下的process节点内容。由于生成组合服务的过程尚未执行,査询结果为空,服务调用序列为空。目标状态为由当前待执行的查询过程集合、査询结果和服务调用序列三部分组成。在目标状态下,所有査询过程已经处理完毕,待执行査询过程集合为空。査询结果表示每一个查询过程均被成功执行,每个査询过程的目标数据对象均可以成功査询获得,因此査询结果是每个查询过程的目标数据对象构成的集合。服务调用序列因为生成服务调用序列的服务组合过程尚未执行,待服务组合过程执行完毕后被填充,目前为一段空闲的内存空间。如果请求队列不为空,判断此次数据査询是来源于定制功能l莫板库中功能的一种,如果是,则直接根据来源的模板名称査询后台数据库,获得处理此模板对应的数据查询功能时需要的服务调用序列,转步骤八;否则调用服务组合引擎进行服务组合,如步骤六所示。若发现队列为空即请求解析失败,则转步骤十。步骤六服务组合引擎子模块根据初始状态和目标状态,调用服务代理子模块获得当前可用的基本数据查询服务信息,逐一处理初始状态中的査询过程,在满足中间过程约束条件的前提下,为每一查询过程进行服务组合,生成服务调用序列。生成服务调用序列,如图5所示,包括以下步骤Stepl:从查询过程中提取本次服务组合过程的源状态S。,S。包括此査询过程的目标数据对象,查询条件集合,空的服务调用序列。目标数据对象指明本査询过程需要获得的数据的领域数据对象类型;査询条件集合是用户在定制页面选择并填写的查询条件,且是关联于本査询过程目标数据对象的条件;初始状态下服务调用序列为空。添加S。至用于临时存储数据的可用状态队列TmpS。step2:判断TmpS是否为空,若为空说明当前已经没有可供处理的状态,则输出服务组合失败信息,服务组合过程结束;若不为空,则转step3。step3:从于TmpS中取出位于队列头的可用状态作为当前状态S,TmpS中的下一可用状态被放置在队列头。step4:判断当前状态S的查询条件是否为空,为空则输出当前状态S的服务调用序列,服务组合过程结束;不为空则将S的查询条件存储于临时存储查询条件的队列A。step5:若A为空则说明当前状态下,所有査询条件均以分别被使用且生成了对应的后继状态,转step2;否则仍有未被使用的查询条件转step6。step6:从A取出位于队列头的查询条件作为当前条件,A中的下一査询条件被放置在队列头。搜索可用于当前条件的基本数据査询服务并查找其对应的原子操作,如果所有基本数据查询服务都已调用过,表明此状态下有不能被处理的査询条件,由此状态不能到达目标状态,则放弃当前状态转st印2;否则转step7。step7:把査找到的原子操作添加入S的服务调用序列,若根据当前条件可搜索到一个基本数据査询服务的多个原子操作,在具有相同输入的原子操作之间优先选择具有多个条件输入的原子操作,输入不同的原子操作都是必须调用的。这些原子操作以等价关系加入当前状态的服务调用序列,每个原子操作单独执行,'然后对执行结果取交集作为本基本数据査询服务调用的输出。step8:针对当前状态的当前查询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列。如图6所示,后继状态的生成包括两种情况第一种是当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,表明当前条件已经作为基本数据查询服务的原子操作的输入条件使用,不能被以后的基本数据査询服务使用。将删除当前条件后的状态作为后继状态,加入TmpS,表示生成了一个新的可用状态,生成完毕;第二种当前条件对应的领域数据对象不是本査询过程的目标对象,这种情况生成后继状态方法为,调用当前条件对应的基本数据查询服务的关联查询原子操作,获得关联属性集合。关联属性的属性值来源为当前条件的基本数据査询服务对应的原子操作的输出。从当前状态中删除当前条件并分别添加每个关联属性及属性值来源,表示当前条件不能直接用来筛选本查询过程的目标数据对象,但当前条件可以通过关联关系生成其他条件,这些生成的条件是可以用来筛选本査询过程的目标数据对象的。把新生成的状态作为后继状态加入TmpS,表示生成了一个新的可用状态。处理下一个关联属性直至关联属性集合中所有关联属性都已生成后继状态,所有的后继状态加入TmpS后,生成完毕。后继状态生成完毕后,继续处理下一条件,转step5。多个査询过程生成的服务调用序列可以被并行处理,即査询过程之间是彼此独立,可以同时执行两个或者多个查询过程生成的服务调用序列。如果服务组合失败,无法生成服务调用序列,则转步骤十。步骤七由定制存储模块存储对应的功能及服务调用序列到模板库,成为一条模板信息记录,该记录的模板ID为后台数据库自动生成;模板名称为用户定制结果xml中的模板名称;模板对应的配置信息中査询内容为用户定制结果xml中的查询内容,查询条件为用户定制结果xml中的查询条件,查询条件仅包括査询条件所属数据对象及属性,不包括属性值;模板对应的服务调用序列为上述步骤六生成的服务调用序列,其中每个基本数据查询服务原子操作的输入为空。步骤八执行子模块按照服务调用流程序列的顺序调用基本数据査询服务库中的基本数据査询服务,生成中间结果及最终结果。执行子模块协调服务间输入输出关系,在读取到服务调用序列中,如果某一个基本数据査询服务的原子操作输入不是用户在定制时直接输入的参数,而是服务调用序列已被执行过的基本数据査询服务的原子操作,则将执行过的基本数据查询服务的原子操作生成的中间结果作为此次基本数据査询服务的输入。反之,则直接将用户定制时输入的参数作为基本数据査询服务原子操作的输入,执行原子操作。待整个服务调用序列执行完毕,输出最终结果。若出现异常导致执行失败,则转步骤十。步骤九结果生成子模块按照请求所描述结果显示格式生成最终数据査询分析结果,以浏览器页面的形式向客户端返回应答;进行结果显示。步骤十由异常处理子模块生成失败信息,并返回给客户端显示。本发明一种基于服务组合的可定制查询方法的实现前提为领域数据的抽象建模,并对领域内数据进行分类,构建领域数据对象模型库。然后针对每种领域数据对象的基本査询需求构建数据査询服务,作为基本服务发布到数据查询服务器的服务代理模块。下面将结合附图和一个在线商店系统的商品査询作为实施例对本发明作进一步的详细说明本实施例中,有用户初始查询请求,査询产品为HP品牌、2007年之后上市,且当前有库存的computer数据,要求显示电脑的型号、报价、配置信息,按报价由低到高的顺序排序。假设本实施例中,模板库中没有类似功能的模板可供直接调用。处理步骤如下步骤一领域分析,电脑即computer数据对象具有属性为商品编号、型号、品牌、厂商、上市时间、报价、配置信息;库存商品即storage数据对象具有属性为商品编号、库存量、成本价格、售价、管理员信息。computer数据对象与storage数据对象关联关系为computer数据对象的商品编号属性等于storage数据对象的商品编号属性。对应的数据査询基本月艮务为computerQservice和storageQService。computerQService提f共丰艮据电脑品牌和获得电脑对象实例的原子操作computerOperByBrand,根据电脑上市时间获得电脑对象实例的原子操作computerOperByTTM,根据电脑品牌和价格联合获得电脑对象实例的原子操作computerOperByBrandAndPrice,根据电脑的商品编号获得电脑对象实例的原子操作computerOperByID,关联查询原子操作computerOperRela;storageQService提供根据库存量获得库存商品对象实例的原子操作storageOperByStock,关联查询原子操作storageOperRela。步骤二用户进入可定制数据查询客户端页面,此时数据査询客户端初始化获得领域数据对象模型库,其中包含两个领域数据对象控件computer和storage,本实施例中以JavaScript实现。模板库内容为空;模板库中没有与査询computer相对应的数据查询功能,用户需要开始一个新的功能定制过程。A)定制查询内容。用户从定制页面中拖拽computer控件到査询内容定制框,并勾选型号、报价、配置信息作为结果属性;B)定制查询条件。用户从定制页面中拖拽computer控件到査询条件定制框,勾选品牌属性,填写属性值为"HP",勾选上市时间属性,填写属性值为">2007";从定制页面中拖拽库存产品控件添加到查询条件定制框,勾选库存量属性,填写属性值为">0"。用箭头建立査询条件与査询内容之间的关联关系computer:brand=HP;TTM=>2007和storage:stock>0,两者都关联于查询内容computer;C)定制结果显示格式。对该请求定制结果显示数据列表表头如下表1定制结果显示数据列表表头<table>tableseeoriginaldocumentpage21</column></row><table>computer:model表示电脑型号,computer:price表示电脑f介格,computer:configure表示电脑的配置信息,该结果按照第一列属性即price—列排序。D)勾选保存本次定制按钮,并输入本次定制对应的模板名称为"可购买电脑产品査询"。本实施例中模板库中无用户定制功能,若有模板名称为"査询电脑产品"具有用户定制的功能,则处理过程如下选择此模板,页面査询内容部分展现为computer数据对象,已勾选的属性为型号、报价、配置信息。页面查珣条件部分展现为computer数据对象和storage数据对象,computer数据对象已勾选的属性为上市时间、品牌,属'性值为空,storage数据对象已勾选的属性为库存量,属性值为空。查询结果格式为空,由用户自行填充。用户为作为查询条件的computer数据对象的上市时间属性填写属性值为">2007",品牌属性属性值为"HP",为作为査询条件的storage数据对象的库存量属性填写属性值为">0";填写结果格式如上述表1所示。步骤三客户端定制结果封装子模块封装用户定制结果,如图7所示,以xml形式表示用户定制结果。以request为根节点,由一个process和一个resultForm构成。process由一个goal节点和一个parameter节点构成。goal节点由一个数据对象节点model构成,model节点的name为computer表示此封装的数据对象为电脑,model有三个属性property节点。property节点的name分别是model,price,configure,分别表示电脑的型号、价格、配置信息。parameter节点由多个model节点组成。第一个model节点名称name为computer,属性property节点,property节点name为brand,值value为HP。其余model与此model类似。resultForm表示结果格式,其中包含若干个列column节点。第一个column节点包含列名称name为价格,和列的值value为computer:price。其余column与此column类似。把这个xml作为参数,发送数据査询http请求至数据査询处理服务器。步骤四数据査询处理服务器的请求队列管理子模块接收客户端发送的数据査询请求,并将请求存储到请求队列中。步骤五请求解析模块采用DOM方式解析请求队列中的第一个数据查询分析请求,初始状态中,用PROCESS表示查询过程集合,target-(computer)表示本査询过程的目标数据对象是computer,parameter-((computer:brand=HP;TTM=>2007)(storage:stock>0))表示本査询过程的査询条件是computer的品牌为HP,上市时间TTM为2007年之后,库存商品对象库存量为大于零,即有库存;RESULT表示查询结果,PLAN表示服务调用序列。对前述请求解析结果为表2请求解析结果初始状态<table>tableseeoriginaldocumentpage22</column></row><table>PLAN()目标状态RESULT(computer)PLAN(planForPROCESS)约束条件无目标状态中,查询过程PROCESS已经处理完毕为空,査询结果RESULT为处理成功的PROCESS中的目标对象的集合,即computer,服务调用序列PLAN为planForPROCESS,是指对初始状态中的PROCESS生成的服务调用序列。该请求队列不为空,则判断此次査询不是模板库中功能的一种,则需要由服务组合引擎子模块生成服务调用序列。如果是模板库中功能的一种,则根据模板名称査询后台数据库,由执行子模块获得此模板对应的査询请求处理服务调用序列,并初始状态中的parameter作为参数值,匹配基本数据査询服务原子操作,作为原子操作的输入,转步骤八。如果请求队列为空,则转步骤十。步骤六服务组合引擎为本次数据査询请求生成服务调用序列。本次数据査询请求包含一个PROCESS,如图8所示,生成服务调用序列过程详述如下PROCESS:査询内容为computer,参数为(computer:brand=HP;TTM=>2007)和(storage:stock>0),本査询过程初始状态(target-(computer)parameter-((computer:brand=HP;TTM=>2007)(storage:stock>0))plan=()),本査询过程目标状态(target=(computer)parameter-()plan=(*)),*表示预先分配的空闲空间。stepl:从査询过程中提取本次服务组合过程的源状态S。,S。=(target-(computer)parameter-((computer:brand=HP;TTM=>2007)(storage:stock>0))plan=());添加S。至用于临时存储数据的可用状态队列TmpS,TmpS={So}。step2:判断TmpS不为空,转step3。step3:从TmpS中取出位于队列头的S。作为当前状态S。step4:S的査询条件为parameter=((computer:brand=HP;TTM=>2007)(storage:stock>0))不为空,把该条件于临时存储査询条件的队列A,即A={(computer:brand=HP;TTM=>2007),(storage:stock>0)}。step5:A不空,转step6。step6:从A取出位于队列头的査询条件(computer:brand-HP;TTM=>2007)作为当前条件,搜索可用于当前条件的基本数据査询服务为computerQService,其对应的原子操作为computerOperByBrand和computerOperByTTM,原子操作computerOperByBrandAndPrice有brand作为一个输入参数,但是另外一个输入参数为价格,当前多件不包含price,因此这个原子操作对于当前条件不可用。转step7。step7:矛巴(computerQService:computerOperByBrand(HP))(computerQService:computerOperByTTM(>2007))添加入S的服务调用序列plan中,此时plan=(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))。step8:生成亲斤状态S,=(target-(computer)parameter=((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)))),当前条件对应的领域数据对象为computer,目标对象亦为computer,直接把S,加入可用TmpS,此时TmpS={(target=(computer)parameter-((storage:stock>0))plan-((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))))};转step5a。step5a:A={(storage:stock>0)}不为空,转step6a。step6a:从A取出位于队列头的查询条件(storage:stock>0)作为当前条件,搜索到可用于当前条件的基本数据査询服务为storageQService,其对应的原子操作为storageOperByStock,转step7a。step7a:把storageQService:storageOperByStock(>0)添加入S的服务调用序列plan中,此时plan-(storageQService:storageOperByStock(>0))。step8a:生成新状态S,=(target-(computer)parameter-((computer:brand=HP;TTM=>2007))plan=(storageQService:storageOperByStock(>0))),当前条件对应的领域数据对象为storage与目标领域数据对象computer不一致,调用storageQService的关联查询基本操作storageOperRela,得到结果storage:ID等价computer:ID,添加关联属性至S,的查询条件生成后继状态(target=(computer)parameter-((computer:brand=HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))plan=(storageQService:storageOperByStock(>0))),并添加后继状态到TmpS,此时TmpS爿(target=(computer)parameter-((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)))),(target-(computer)parameter-((computer:brand-HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))plan=(storageQService:storageOperByStock(>0)))};转step5b。step5b:A为空,转step2c。step2c:TmpS不为空,转step3c。step3c:从TmpS中取出位于队列头的状态作为当前状态S,S={(target=(computer)parameter-((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))))}。step4c:当前状态S的査询条件不为空,将S的査询条件存储至A,则AH(storage:stock>0)}。step5c:A不空,转step6c。step6c:从A取出位于队列头的查询条件(storage:stock>0)作为当前条件,搜索到可用于当前条件的基本数据查询服务为storageQService,其对应的原子操作为storageOperByStock,转step7c。step7c:把storageQService:storageOperByStock(>0)添加入S的服务调用序列plan中,此时plan-(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0)。step8c:生成亲斤状态S,=(target-(computer)parameter-()plan-((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),(storageQService:storageOperByStock(>0))),当前条件对应的领域数据对象为storage与目标领域数据对象computer不一致,调用storageQService的关联查询基本操作storageOperRela,得到结果storage:ID等价computer:ID,添加关联属性至S,的查询条件生成后继状态(target=(computer)parameter-((computer:ID=(storageQService:storageOperByStock(>0))))plan-((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0))),并添加后继状态到TmpS,此时TmpS={(target-(computer)parameter-((computer:brand-HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))plan-(storageQService:storageOperByStock(>0))),(targets(computer)parameter-((computer:ID=(storageQService:storageOperByStock(>0))))plan-((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0)))},转step5d。step5d:A为空,转step2e。step2e:TmpS不为空,转step3e。step3e:从TmpS中取出位于队列头的状态作为当前状态S,S={(target=(computer)parameter-((computer:brand-HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))plan=(storageQService:storageOperByStock(>0)))}。step4e:当前状态S的査询条件不为空,将S的査询条件存储至A,A={(computer:brand-HP;TTM=>2007;ID=(storageQService:StorageOperByStock(>0)))};step5e:A不为空,转step6e。step6e:从A取出位于队列头的查询条件(computer:brand-HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))作为当前条件,搜索可用于当前条件的基本数据查询服务为computerQService,其对应的原子操作为computerOperByBrand,computerOperByTTM和computerOperByID,转step7e。step7e:矛巴(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))AcomputerQService:computerOperByID(storageQService:storageOperByStock(>0))添力D入S的月艮务调用序歹ijplan中,此时plan-(storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))A(computerQService:computerOperByID(storageQService:storageOperByStock(>0)))。step8e:生成亲斥状态S,=(target-(computer)parameter-()plan=(storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))A(computerQService:computerOperByID(storageQService:storageOperByStock(>0)))),当前条件对应的领域数据对象为computer,目标对象亦为computer,直接把S,加入可用TmpS,此时TmpS-((target-(computer)parameter-((computer:ID=(storageQService:StorageOperByStock(>0))))plan-((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0))),(target=(computer)parameter-()plan=((storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))AcomputerQService:computerOperByID(storageQService:storageOperByStock(>0)))},转step5f。step5f:A为空,转step2g。step2g:TmpS不为空,转step3g。step3g:从TmpS中取出位于队列头的状态作为当前状态S,S={(target=(computer)parameter-((computer:ID=(storageQService:storageOperByStock(>0))))plan=((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0)))}。step4g:判断当前状态S的査询条件不为空,把S的查询条件存储至临时存储查询条件的队歹JA,A={(computer:ID=(storageQService:storageOperByStock(>0)))}。step5g:A不为空转step6g。step6g:从A取出位于队列头的Slt^^4computer^IEt=^storageQService;storageOperByStock(>0)))作为当前条件,搜索可用于当前条件的基本数据査询服务为computerQService该服务已经被当前状态S调用过,放弃当前状态S,转step2h。step2h:TmpS不为空,转step3h。step3h:从TmpS中取出位于队列头的状态作为当前状态S,S=(target-(computer)parameter-()plan=((storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))AcomputerQService:computerOperByID(storageQService:storageOperByStock(>0))。step4h:当前状态查询条件为空,输出服务调用序列(storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))A(computerQService:computerOperByID(storageQService:storageOperByStock(>0)))),该查询过程的服务组合过程完毕。由于本次査询请求只包含这一个査询过程,故本次査询请求的服务组合过程完毕。如果服务组合失败,则转到步骤十。步骤七定制存储模块存储成功生成的服务调用序列及此次数据査询请求功能对应的模板到模板库。存储的模板记录中,模板ID为后台数据库自动生成,模板名称为用户定制封装结果xml中的模板名称即"可购买电脑产品查询",模板对应配置信息为从用户定制封装结果xml中解析出的本次数据査询对应的査询内容为computer、查询条件为((computer:brand=,,;TTM=',)(storage:stock=,,)),表示査询条件为电脑对象的品牌属性、上市时间属性,库存商品对象的库存量属性。模板对应的服务调用序列为前述服务组合过程生成的服务调用序列,伹不包括参数值,即(storageQService:storageOperByStock()),(computerQService:computerOperByBrand())A(computerQService:computerOperByTTM())A(computerQService:computerOperByID(storageQService:storageOperByStock()))),表示首先调用storageQService基本数据查询服务的storageOperByStock原子操作,此操作表示根据库存量査询库存商品对象的所有实例。然后分别调用computerQService基本数据査询服务的computerOperByBrand原子操作(表示按照品牌查询电脑商品)、computerOperByTTM原子操作(表示按照上市时间查询电脑商品)、computerOperByID原子操作(表示按照商品编号查询电脑商品),并对以上三个原子操作的输出结果取交集得到此服务调用序列的最终结果。步骤八执行子模块按照生成的服务调用序列顺序调用基本服务,按照序列中指定的输入作为基本数据査询服务原子操作的输入,最终输出computer数据对象实例的集合。computerQService:computerOperByID()此原子操作的输入为前步执行storageQService:StorageOperByStock(>0)的输出结果storage对象的ID属性,在执行到computerQService:computerOperByID()原子操作时,取出storageQService:storageOperByStock(>0)结果storage实例集合中每一个storage实例的ID属性,构成一个list,作为computerQService:computerOperByID()的输入。如果执行过程中出现服务调用失败、参数类型错误等导致执行失败,则转步骤十。步骤九按照步骤二描述的结果格式,以步骤八输出的结果数据对象实例为数据来源,从数据来源的computer数据对象中提取价格、型号、配置数据,生成此次数据查询结果,将获得的所有行数据依据computer:price列进行排序,以排序后的数据列表为数据来源生成服务器端应答HTML页面,并返回应答。步骤十异常处理子模块向客户端返回失败信息,指明失败类型及详细信息。权利要求1、一种基于服务组合的可定制查询方法,其特征在于,由如下步骤组成步骤一建立可定制查询客户端和数据查询服务器,并对领域内数据进行抽象分类,为所建立的模型构建可编辑控件,存入可定制查询客户端中的领域数据对象模型库,并在数据查询服务器中构建对应的基本数据查询服务,存入基本数据查询服务库;步骤二初始化可定制查询客户端的领域数据对象模型库和存储已有的定制功能的模板库;用户把自身个性化需求与模板库中的已有功能相比较,如果存在满足用户此次需求的功能的模版,从模板库中选择特定的功能的模板,页面展示为此功能对应定制的查询内容、查询条件、结果显示格式,并调整显示格式,重新填写定制的查询条件属性值,构造相同功能的新请求;否则由领域数据对象模型库和定制结果封装子模块定制数据查询;步骤三可定制查询客户端的定制结果封装子模块封装用户定制结果;如果本次定制来源于模板库,设定模板的标识位表示来源于已有定制模板,否则设定相应的标识表示为新定制;发送至数据查询服务器的请求队列管理子模块;步骤四请求队列管理子模块接收客户端发送的数据查询请求,并加入到请求队列中;步骤五请求解析子模块取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式;如果请求队列不为空,判断此次数据查询是否模板库中功能的一种,如果是,则由执行子模块直接获得其服务调用序列,转步骤八;否则调用服务组合引擎进行服务组合;如果请求队列为空,则转步骤十;步骤六服务组合引擎根据初始状态和目标状态,调用服务代理子模块获得的当前能够使用的基本数据查询服务信息,逐一处理初始状态中的查询过程,在满足中间过程约束条件的前提下,为每一查询过程进行服务组合,生成服务调用序列;如果服务组合失败,则转到步骤十;步骤七由定制存储模块存储对应的功能及服务调用序列到模板库;步骤八执行子模块按照服务调用流程序列的顺序调用基本数据查询服务库中的基本数据查询服务,并协调服务间输入输出关系;如果出现异常则转到步骤十;步骤九由结果生成子模块按照请求所描述结果显示格式生成最终数据查询分析结果,向客户端返回应答,进行结果显示;步骤十由异常处理子模块生成失败信息,并返回给客户端显示。2、根据权利要求1所述一种基于服务组合的可定制查询方法,其特征在于所述步骤一中的对数据进行抽象分类是按照面向对象的思想,对数据进行特征提取;将抽象出的领域数据对象模型所包含的属性作为对象模型的属性,每个领域数据对象模型以客户端脚本的方式被编写为可定制査询客户端的可编辑控件,向应用系统描述自身的数据查询需求。3、根据权利要求2所述一种基于服务组合的可定制査询方法,其特征在于所述步骤一中的领域数据对象模型库包括逻辑控件,用运算及逻辑操作对两个或多个领域数据对象属性之间的关联关系进行描述,每个逻辑控件以脚本方式被编写。4、根据权利要求1所述一种基于服务组合的可定制査询方法,其特征在于所述步骤一中的基本数据査询服务库的基本数据查询服务与领域数据对象模型库的领域数据对象模型一一对应,提供领域数据对象查询的原子操作,仅通过对应的领域数据对象模型的一个或几个属性,从后台数据库中获得具有此属性的数据对象实例的集合。5、根据权利要求4所述一种基于服务组合的可定制査询方法,其特征在于所述步骤一中的基本数据査询服务库的每个基本数据査询服务包含一个査询关联属性的原子操作,获得对应领域数据对象的关联数据对象及其属性的原子操作,输出关联数据对象及关联数据对象的属性集合。6、根据权利要求1所述一种基于服务组合的可定制査询方法,其特征在于所述步骤二中的定制数据査询,包括如下步骤步骤a:在可定制查询客户端的页面上从领域数据+莫型库的控件中选择各可编辑控件,指定本次查询的各查询内容数据对象;选择各可编辑控件的属性作为本次数据査询的结果数据列表的一列;步骤b:在定制页面上从领域数据模型库的可视控件中选择各可编辑控件,指定本次查询的条件数据对象;选择各可编辑控件的属性并为该属性选择、填写属性值,并指定此次选择的查询条件用于的査询内容数据对象;步骤c:排列选择的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列;步骤d:命名新定制的数据查询,保存本次定制,并命名本次定制对应的模板。7、根据权利要求1所述一种基于服务组合的可定制査询方法,其特征在于所述步骤五中的初始状态,由査询过程集合、査询结果和服务调用序列组成;查询过程集合包括本次用户请求需要査询的数据对象的查询过程,查询结果和服务调用序列为空。8、根据权利要求1所述一种基于服务组合的可定制査询方法,其特征在于所述步骤五中的目标状态,由査询过程集合、查询结果和服务调用序列组成;查询过程集合为空,査询结果为査询过程集合中每个査询过程的目标数据对象,服务调用序列为一段空闲的内存空间。9、根据权利要求1所述一种基于服务组合的可定制査询方法,其特征在于所述步骤六中的服务组合,包括如下步骤stepl:服务组合引擎提取本次服务组合过程的源状态,包括查询过程的目标数据对象、查询条件集合和空的服务调用序列;添加源状态至用于临时存储数据的可用状态队列;step2:如果可用状态队列为空,则输出服务组合失败信息,服务组合过程结束;否则转step3;step3:从可用状态队列中取出位于队列头的可用状态作为当前状态;step4:如果当前状态的査询条件为空,则输出当前状态的服务调用序列,服务组合过程结束;否则将当前状态的查询条件存储于存储査询条件的临时队列;step5:如果临时队列为空,转step2;否则转step6;step6:从临时队列中取出位于队列头的査询条件作为当前条件,搜索能用于当前条件的基本数据査询服务并査找其对应的原子操作,如果所有基本数据査询服务都已调用过,则转step2;否则转step7;step7:把査找到的原子操作以等价关系添加到当前状态的服务调用序列;step8:针对当前状态的当前査询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列,转step5。10、根据权利要求9所述一种基于服务组合的可定制查询方法,其特征在于所述step8生成当前状态的后继状态时,若当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,并将删除当前条件后的状态作为后继状态加入可用状态队列,生成完毕;否则,调用当前条件对应的基本数据查询服务的关联査询原子操作,获得关联属性集合,分别添加每个关联属性及属性值来源,并从当前状态中删除当前条件并作为后继状态加入可用状态队列;接着处理下一个关联属性并把所有的后继状态加入可用状态队列,直至关联属性集合中所有关联属性都已生成后继状态。11、一种基于服务组合的可定制査询平台,其特征在于,包括可定制査询客户端和数据查询服务器;可定制査询客户端,包括领域数据对象^莫型库,用来对领域内数据进行抽象分类,存入为所建立的模型构建的可编辑控件;数据查询服务器,包括基本数据査询服务库,构建并存储可编辑控件对应的基本数据査询服务;可定制査询客户端还包括模板库、定制结果封装子模块;模板库,用来存储已有的定制功能,初始化模板库后,用户把自身个性化需求与模板库中的已有功能相比较,如果存在满足用户此次需求的功能的模版,从模板库中选择特定的功能的模板,页面展示为此功能对应定制的査询内容、査询条件、结果显示格式,并调整显示格式,重新填写定制的查询条件属性值,构造相同功能的新请求;否则由领域数据对象模型库和定制结果封装子模块定制数据查询;定制结果封装子纟莫块,用来封装用户定制结果;如果本次定制来源于纟莫板库,设定模板的标识位表示来源于已有定制t莫板,否则设定相应的标识为表示为新定制;发送至数据査询服务器的请求队列管理子模块;数据査询服务器还包括请求队列管理子模块、请求解析子模块、服务代理子模块、服务组合引擎、定制存储模块、执行子模块、结果生成子模块和异常处理子模块;请求队列管理子模块,请求队列管理子模块接收客户端发送的数据查询请求,并加入到请求队列中;请求解析子模块,取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式;如果请求队列不为空,判断此次数据査询是否模板库中功能的一种,如果是,则由执行子+莫块直接获得其服务调用序列,否则调用服务组合引擎进行服务组合;如果请求队列为空,则发送到异常处理子t莫块处理;服务代理子模块,获得当前能够使用的基本数据査询服务信息;服务组合引擎,根据初始状态和目标状态,调用当前能够使用的基本数据查询服务信息,逐一处理初始状态中的査询过程,在满足中间过程约束条件的前提下,为每一査询过程进行服务组合,生成服务调用序列;如果服务组合失败,则发送到异常处理子模块处理;定制存储t莫块,存储对应的功能及服务调用序列到t莫板库;执行子模块,按照服务调用流程序列的顺序调用基本数据查询服务库中的基本数据査询服务,并协调服务间输入输出关系;如果出现异常,则发送到异常处理子模块处理;结果生成子^莫块,按照请求所描述结果显示格式生成最终数据査询分析结果,向客户端返回应答,进行结果显示;异常处理子模块,生成失败信息,并返回给客户端显示。12、根据权利要求11所述一种基于服务组合的可定制查询平台,其特征在于所述领域数据对象模型库中,对数据进行抽象分类是按照面向对象的思想,对数据进行特征提取;将抽象出的领域数据对象模型所包含的属性作为对象模型的属性,每个领域数据对象模型以客户端脚本的方式被编写为可定制査询客户端的可编辑控件,向应用系统描述自身的数据查询需求。13、根据权利要求12所述一种基于服务组合的可定制査询平台,其特征在于所述领域数据对象模型库包括逻辑控件,用运算及逻辑操作对两个或多个领域数据对象属性之间的关联关系进行描述,每个逻辑控件以脚本方式被编写。14、根据权利要求11所述一种基于服务组合的可定制查询平台,其特征在于所述基本数据查询服务库的基本数据査询服务与领域数据对象f莫型库的领域数据对象模型一一对应,提供领域数据对象査询的原子操作,仅通过对应的领域数据对象模型的一个或几个属性,从后台数据库中获得具有此属性的数据对象实例的集合。15、根据权利要求14所述一种基于服务组合的可定制査询平台,其特征在于所述基本数据査询服务库的每个基本数据査询服务包含一个査询关联属性的原子操作,获得对应领域数据对象的关联数据对象及其属性的原子操作,输出关联数据对象及关联数据对象的属性集合。16、根据禾又利要求11所述一种基于服务组合的可定制査询平台,其特征在于所述可定制査询客户端进行的定制数据査询在可定制査询客户端的页面上从领域数据模型库的控件中选择各可编辑控件,指定本次査询的各查询内容数据对象;选择各可编辑控件的属性作为本次数据査询的结果数据列表的一列;在定制页面上从领域数据模型库的可视控件中选择各可编辑控件,指定本次査询的条件数据对象;选择各可编辑控件的属性并为该属性选择、填写属性值,并指定此次选择的査询条件用于的査询内容数据对象;排列选择的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列;命名新定制的数据查询,保存本次定制,并命名本次定制对应的模板。17、根据权利要求11所述一种基于服务组合的可定制査询平台,其特征在于所述请求解析子模块得到的初始状态,由査询过程集合、査询结果和服务调用序列组成;查询过程集合包括本次用户请求需要査询的数据对象的査询过程,査询结果和服务调用序列为空。18、根据权利要求ll所述一种基于服务组合的可定制查询平台,其特征在于所述请求解析子模块得到的目标状态,由查询过程集合、查询结果和服务调用序列组成;査询过程集合为空,査询结果为査询过程集合中每个査询过程的目标数据对象,服务调用序列为一段空闲的内存空间。19、根据权利要求11所述一种基于服务组合的可定制査询平台,其特征在于所述服务组合引擎提取本次服务组合过程的源状态,包括査询过程的目标数据对象、査询条件集合和空的服务调用序列;添加源状态至用于临时存储数据的可用状态队列;如果可用状态队列为空,则输出服务组合失败信息,服务组合过程结束;否则从可用状态队列中取出位于队列头的可用状态作为当前状态;如果当前状态的査询条件为空,则输出当前状态的服务调用序列,服务组合过程结束;否则将当前状态的査询条件存储于存储查询条件的临时队列;如果临时队列为空,对可用状态队列是否为空进行判断并处理;否则从临时队列中取出位于队列头的査询条件作为当前条件,搜索能用于当前条件的基本数据查询服务并查找其对应的原子操作,如果所有基本数据査询服务都已调用过,则对可用状态队列是否为空进行判断并处理;否则把査找到的原子操作以等价关系添加到当前状态的服务调用序列;针对当前状态的当前査询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列,对临时队列是否为空进行判断并处理。20、根据权利要求19所述一种基于服务组合的可定制查询平台,其特征在于所述服务组合引擎的服务组合过程生成当前状态的后继状态,若当前条件对应的领域数据对象是本査询过程的目标对象,则从当前状态中删除当前条件,并将删除当前条件后的状态作为后继状态加入可用状态队列,生成完毕;否则,调用当前条件对应的基本数据査询服务的关联查询原子操作,获得关联属性集合,分别添加每个关联属性及属性值来源,并从当前状态中删除当前条件并作为后继状态加入可用状态队列;接着处理下一个关联属性并把所有的后继状态加入可用状态队列,直至关联属性集合中所有关联属性都已生成后继状态。全文摘要本发明提出一种基于服务组合的可定制查询方法与平台,用户通过指定的客户端可视组件并通过选择、填写组件属性值的操作,向平台描述自身需求,数据查询请求的初始状态和目标状态被解析出后,搜索并组合出对应的基本服务调用序列,然后执行序列中的基本服务,进而得到包含用户期望结果数据的结果集,并经过筛选、排序、组装后生成最终结果向用户显示。本方法中用户主动向系统描述自身需求,系统通过接收用户描述并动态分析处理,可有效适应不同用户的不同个性化需求,降低应用系统开发工作量和后期维护成本,并提高了数据查询应用系统的友好性。使用户主动地定制数据查询,将查询进行得灵活而方便。文档编号H04L29/06GK101350023SQ20081011924公开日2009年1月21日申请日期2008年8月29日优先权日2008年8月29日发明者丹余,钢叶,曾婧娜,李先军,叶王,马世龙申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1