CN101350023A - 一种基于服务组合的可定制查询方法与平台 - Google Patents
一种基于服务组合的可定制查询方法与平台 Download PDFInfo
- Publication number
- CN101350023A CN101350023A CNA2008101192450A CN200810119245A CN101350023A CN 101350023 A CN101350023 A CN 101350023A CN A2008101192450 A CNA2008101192450 A CN A2008101192450A CN 200810119245 A CN200810119245 A CN 200810119245A CN 101350023 A CN101350023 A CN 101350023A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- service
- data object
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种基于服务组合的可定制查询方法与平台,用户通过指定的客户端可视组件并通过选择、填写组件属性值的操作,向平台描述自身需求,数据查询请求的初始状态和目标状态被解析出后,搜索并组合出对应的基本服务调用序列,然后执行序列中的基本服务,进而得到包含用户期望结果数据的结果集,并经过筛选、排序、组装后生成最终结果向用户显示。本方法中用户主动向***描述自身需求,***通过接收用户描述并动态分析处理,可有效适应不同用户的不同个性化需求,降低应用***开发工作量和后期维护成本,并提高了数据查询应用***的友好性。使用户主动地定制数据查询,将查询进行得灵活而方便。
Description
技术领域
本发明属于计算机数据管理领域,具体涉及一种基于服务组合的可定制数据查询方法及其平台。
背景技术
传统基于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中的服务组合,包括如下步骤:
step1:服务组合引擎提取本次服务组合过程的源状态,包括查询过程的目标数据对象、查询条件集合和空的服务调用序列;添加源状态至用于临时存储数据的可用状态队列;
step2:如果可用状态队列为空,则输出服务组合失败信息,服务组合过程结束;否则转step3;
step3:从可用状态队列中取出位于队列头的可用状态作为当前状态;
step4:如果当前状态的查询条件为空,则输出当前状态的服务调用序列,服务组合过程结束;否则将当前状态的查询条件存储于存储查询条件的临时队列;
step5:如果临时队列为空,转step2;否则转step6;
step6:从临时队列中取出位于队列头的查询条件作为当前条件,搜索能用于当前条件的基本数据查询服务并查找其对应的原子操作,如果所有基本数据查询服务都已调用过,则转step2;否则转step7;
step7:把查找到的原子操作以等价关系添加到当前状态的服务调用序列;
step8:针对当前状态的当前查询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列,转step5。
所述step8生成当前状态的后继状态时,若当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,并将删除当前条件后的状态作为后继状态加入可用状态队列,生成完毕;否则,调用当前条件对应的基本数据查询服务的关联查询原子操作,获得关联属性集合,分别添加每个关联属性及属性值来源,并从当前状态中删除当前条件并作为后继状态加入可用状态队列;接着处理下一个关联属性并把所有的后继状态加入可用状态队列,直至关联属性集合中所有关联属性都已生成后继状态。
一种基于服务组合的可定制查询平台,其特征在于,包括如下模块:
建立的可定制查询客户端和数据查询服务器;可定制查询客户端,包括领域数据对象模型库,用来对领域内数据进行抽象分类,存入为所建立的模型构建的可编辑控件;数据查询服务器,包括基本数据查询服务库,构建并存储可编辑控件对应的基本数据查询服务;
可定制查询客户端还包括模板库、定制结果封装子模块;
模板库,用来存储已有的定制功能,初始化模板库后,用户把自身个性化需求与模板库中的已有功能相比较,如果存在满足用户此次需求的功能的模版,从模板库中选择特定的功能的模板,页面展示为此功能对应定制的查询内容、查询条件、结果显示格式,并调整显示格式,重新填写定制的查询条件属性值,构造相同功能的新请求;否则由领域数据对象模型库和定制结果封装子模块定制数据查询;
定制结果封装子模块,用来封装用户定制结果;如果本次定制来源于模板库,设定模板的标识位表示来源于已有定制模板,否则设定相应的标识位表示为新定制;发送至数据查询服务器的请求队列管理子模块;
数据查询服务器还包括请求队列管理子模块、请求解析子模块、服务代理子模块、服务组合引擎、定制存储模块、执行子模块、结果生成子模块和异常处理子模块;
请求队列管理子模块,请求队列管理子模块接收客户端发送的数据查询请求,并加入到请求队列中;
请求解析子模块,取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式;如果请求队列不为空,判断此次数据查询是否模板库中功能的一种,如果是,则由执行子模块直接获得其服务调用序列,否则调用服务组合引擎进行服务组合;如果请求队列为空,则发送到异常处理子模块处理;
服务代理子模块,获得当前能够使用的基本数据查询服务信息;
服务组合引擎,根据初始状态和目标状态,调用当前能够使用的基本数据查询服务信息,逐一处理初始状态中的查询过程,在满足中间过程约束条件的前提下,为每一查询过程进行服务组合,生成服务调用序列;如果服务组合失败,则发送到异常处理子模块处理;
定制存储模块,存储对应的功能及服务调用序列到模板库;
执行子模块,按照服务调用流程序列的顺序调用基本数据查询服务库中的基本数据查询服务,并协调服务间输入输出关系;如果出现异常,则发送到异常处理子模块处理;
结果生成子模块,按照请求所描述结果显示格式生成最终数据查询分析结果,向客户端返回应答,进行结果显示;
异常处理子模块,生成失败信息,并返回给客户端显示。
所述领域数据对象模型库中,对数据进行抽象分类是按照面向对象的思想,对数据进行特征提取;将抽象出的领域数据对象模型所包含的属性作为对象模型的属性,每个领域数据对象模型以客户端脚本的方式被编写为可定制查询客户端的可编辑控件,向应用***描述自身的数据查询需求。
所述领域数据对象模型库包括逻辑控件,用运算及逻辑操作对两个或多个领域数据对象属性之间的关联关系进行描述,每个逻辑控件以脚本方式被编写。
所述基本数据查询服务库的基本数据查询服务与领域数据对象模型库的领域数据对象模型一一对应,提供领域数据对象查询的原子操作,仅通过对应的领域数据对象模型的一个或几个属性,从后台数据库中获得具有此属性的数据对象实例的集合。
所述基本数据查询服务库的每个基本数据查询服务包含一个查询关联属性的原子操作,获得对应领域数据对象的关联数据对象及其属性的原子操作,输出关联数据对象及关联数据对象的属性集合。
所述可定制查询客户端进行的定制数据查询:
在可定制查询客户端的页面上从领域数据模型库的控件中选择各可编辑控件,指定本次查询的各查询内容数据对象;选择各可编辑控件的属性作为本次数据查询的结果数据列表的一列;
在定制页面上从领域数据模型库的可视控件中选择各可编辑控件,指定本次查询的条件数据对象;选择各可编辑控件的属性并为该属性选择、填写属性值,并指定此次选择的查询条件用于的查询内容数据对象;
排列选择的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列;
命名新定制的数据查询,保存本次定制,并命名本次定制对应的模板。
所述请求解析子模块得到的初始状态,由查询过程集合、查询结果和服务调用序列组成;查询过程集合包括本次用户请求需要查询的数据对象的查询过程,查询结果和服务调用序列为空。
所述请求解析子模块得到的目标状态,由查询过程集合、查询结果和服务调用序列组成;查询过程集合为空,查询结果为查询过程集合中每个查询过程的目标数据对象,服务调用序列为一段空闲的内存空间。
所述服务组合引擎提取本次服务组合过程的源状态,包括查询过程的目标数据对象、查询条件集合和空的服务调用序列;添加源状态至用于临时存储数据的可用状态队列;
如果可用状态队列为空,则输出服务组合失败信息,服务组合过程结束;否则:
从可用状态队列中取出位于队列头的可用状态作为当前状态;
如果当前状态的查询条件为空,则输出当前状态的服务调用序列,服务组合过程结束;否则将当前状态的查询条件存储于存储查询条件的临时队列;
如果临时队列为空,对可用状态队列是否为空进行判断并处理;否则:
从临时队列中取出位于队列头的查询条件作为当前条件,搜索能用于当前条件的基本数据查询服务并查找其对应的原子操作,如果所有基本数据查询服务都已调用过,则对可用状态队列是否为空进行判断并处理;否则:
把查找到的原子操作以等价关系添加到当前状态的服务调用序列;
针对当前状态的当前查询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列,对临时队列是否为空进行判断并处理。
所述服务组合引擎的服务组合过程生成当前状态的后继状态,若当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,并将删除当前条件后的状态作为后继状态加入可用状态队列,生成完毕;否则,调用当前条件对应的基本数据查询服务的关联查询原子操作,获得关联属性集合,分别添加每个关联属性及属性值来源,并从当前状态中删除当前条件并作为后继状态加入可用状态队列;接着处理下一个关联属性并把所有的后继状态加入可用状态队列,直至关联属性集合中所有关联属性都已生成后继状态。
本发明一种基于服务组合的可定制查询方法与平台,优点在于:
(1)本发明采用由用户主动制定一次查询的查询目的、查询条件及查询结果显示格式的方式可有效应对用户多样化的数据查询分析需求,允许用户随时根据自身需求对查询过程进行修改,而无需改变***结构。
(2)本发明采用数据查询基本服务建立方式,以领域数据抽象建模为基础,运用面向对象的思想为每种领域数据对象建立一个独立的数据查询基本服务,符合大众思维逻辑;同时在基本服务范围内提供原子操作,代表不同的输入-输出对,使服务内部不同的查询方式清晰区分;原子操作建立不仅包括由领域数据对象的一种属性查询具有该属性值的所有领域数据对象实例,而且包括由通常作为联合属性的多个属性查询具有这些属性值的所有领域数据对象实例,避免了在仅提供单一属性查询时对后台数据库的多次查询操作以及对多个数据查询结果取交集的操作,提高查询效率。
(3)基于服务组合技术构造数据查询处理逻辑,在给定服务组合流程的初始状态和目标状态的条件下,可以动态生成服务合成调用序列,自动应对定制客户端的多变数据查询请求。
附图说明
图1为本发明一种基于服务组合的可定制查询方法的方法流程图;
图2为本发明一种基于服务组合的可定制查询平台的平台结构图;
图3为本发明一种基于服务组合的可定制查询方法的定制数据查询功能的流程图;
图4为本发明一种基于服务组合的可定制查询方法的用户定制结果xml的形式化描述图;
图5为本发明一种基于服务组合的可定制查询方法的服务组合流程图;
图6为本发明一种基于服务组合的可定制查询方法的生成后继状态的流程图;
图7为本发明一种基于服务组合的可定制查询方法的实施例中的xml形式的用户定制结果;
图8为本发明一种基于服务组合的可定制查询方法的实施例中的服务调用序列生成过程的状态转换图。
具体实施方式
本发明提出一种基于服务组合的可定制查询方法与平台,支持用户向***描述自身需求,***根据用户需求动态组装基本数据查询服务,生成能够满足用户需求的基本数据查询服务调用序列构成的组合服务,执行组合服务并按照用户期望展示数据查询分析结果。
一种基于服务组合的可定制查询平台,如图2所示,包括可定制查询客户端和数据查询服务器两部分。
可定制数据查询客户端包括模板库、领域数据对象模型库、定制结果封装子模块。
模板库用于向用户提供该***存储的典型数据查询功能。模板库是平台中已有的数据查询功能的集合,来源于用户定制存储子模块读取的存储于后台数据库的***前期成功处理过的用户定制。用户选择模板库中一项功能,使页面显示为此项功能对应的查询内容、查询条件、查询结果格式的展示。
领域数据对象模型库提供领域数据对象模型可视化控件及逻辑控件。
定制结果封装子模块把用户在客户端上以可视方式定制的个性化查询需求转换为形式化描述。
模板库提供平台中已有的数据查询功能,用户查询时先查询模板库中是否有符合自身需求的数据查询功能模板,有满足需求的模板则选取此模板,修改模板中相应内容,输出用户定制结果至定制结果封装子模块,定制结果封装子模块把用户定制的可视化结果封装为xml描述,并作为HTTP请求的参数发送给数据查询服务器;若没有满足需求的模板,则转向领域数据对象模型库,用户从领域数据对象模型库分别选择查询内容、查询条件对应的领域数据对象控件及其属性,并在需要时填写属性值,指定数据查询分析结果的显示格式,输出到定制结果封装子模块,并仍由定制结果封装子模块把用户定制的可视化结果封装为xml描述,并作为HTTP请求的参数发送给数据查询服务器。
数据查询服务器包括服务代理子模块、请求队列管理子模块、请求解析子模块、服务组合引擎、执行子模块、结果生成子模块、定制存储子模块、异常处理子模块和基本数据查询服务库。其中:
服务代理子模块用于管理领域数据查询基本服务。
基本数据查询服务库的每个基本数据查询服务需要向服务代理子模块注册,提供自身对特定的领域对象模型进行查询的信息,并以可接受参数的方式,描述本服务提供的对该类领域数据对象模型的全部基本查询操作。基本数据查询服务可以在必要时添加,需保证新的基本数据查询服务与原有基本数据查询服务不存在冲突,且与前述基本数据查询服务的发布规范一致的方式发布到服务代理子模块。
请求队列管理子模块用于接收数据查询客户端发送的数据查询分析请求,并缓存这些请求。
请求解析子模块用于解析数据查询分析请求,将可定制查询客户端发送的请求所携带的用户定制结果转换为服务组合引擎可理解数据查询请求。
服务组合引擎用于结合服务代理子模块提供的可用服务的细节,根据请求解析模块传递的解析结果,针对结果中包含的查询过程逐一生成可满足需求的服务调用序列。
执行子模块用于按照服务组合引擎生成的服务调用序列,依次执行序列中的服务。
结果生成子模块用于把执行子模块输出的结果根据用户定制的结果格式生成HTTP应答。
定制存储子模块用于存储本次用户定制的功能,及用户定制功能的处理方式。
异常处理子模块用于在请求解析模块无法解析数据查询请求、服务组合引擎无法生成满足用户需求的服务序列、执行模块执行服务失败时,向数据查询客户端返回出错信息。
基本数据查询服务库中的每个基本数据查询服务向服务代理子模块提供自身信息,包括对应的领域数据对象类型和可提供的原子操作。服务代理子模块将其获得的所有基本数据查询服务信息维护成当前可用的基本数据查询服务列表,供服务组合引擎查询。
数据查询处理服务器的请求队列管理子模块接收到定制结果封装子模块发送的数据查询请求,并缓存入请求队列。请求解析子模块取出位于请求队列头的请求,并从中解析出本次请求的初始状态和目标状态,把解析结果发送给服务组合引擎。服务组合引擎获得服务代理子模块提供的当前可用的基本数据查询服务的信息,根据请求的初始状态和目标状态,生成能够处理本次数据查询请求的服务调用序列,并将生成结果交由执行子模块执行。执行子模块按照服务组合引擎生成的服务调用序列顺序执行各基本数据查询服务,向结果生成子模块输出包含用户期望结果的数据对象实例集合。结果生成子模块从执行模块输出的结果中提取用户定制结果中指定的待显示内容,并将待显示内容按照用户定制时指定的排序方式排序,生成应答HTML页面,并向可定制数据查询客户端返回HTTP应答。在请求解析模块无法解析数据查询请求、服务组合引擎无法生成满足用户需求的服务序列、执行模块执行服务失败时,异常处理子模块将捕获这些失败信息,数据查询客户端返回出错信息。
一种基于服务组合的可定制查询方法,如图1所示,包括如下步骤:
步骤一:领域分析,对领域内数据进行抽象分类,为所建立的模型构建可定制查询客户端的可编辑控件,存入领域数据对象模型库,并构建对应的基本数据查询服务库。基本数据查询服务库中的每一个基本数据查询服务对应一个领域数据对象模型库中对象控件。基本数据查询服务是多个原子操作的集合。原子操作代表一个输入-输出对,输入是领域数据对象模型的一个或者几个属性,输出是具有指定输入属性值的领域数据对象模型的实例的集合。原子操作包括为对象控件的每一个属性提供根据该属性查询领域数据对象实例,和同时根据几个属性联合获得数据对象实例两种方式。其中后者所述的联合的属性是在进行需求分析时考虑到的、经常被联合起来作为一次查询条件的属性。
步骤二:初始化可定制查询客户端,即初始化可定制查询客户端的领域数据对象模型库和存储已有定制功能的模板库。领域数据对象模型库中的控件以脚本形式实现。已有定制功能模板库中的模板来源于历史成功处理过的数据查询分析请求;模板的信息存储于后台数据库,每个模板对应数据库中的一条记录,该记录包括模板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节点内容。由于生成组合服务的过程尚未执行,查询结果为空,服务调用序列为空。目标状态为由当前待执行的查询过程集合、查询结果和服务调用序列三部分组成。在目标状态下,所有查询过程已经处理完毕,待执行查询过程集合为空。查询结果表示每一个查询过程均被成功执行,每个查询过程的目标数据对象均可以成功查询获得,因此查询结果是每个查询过程的目标数据对象构成的集合。服务调用序列因为生成服务调用序列的服务组合过程尚未执行,待服务组合过程执行完毕后被填充,目前为一段空闲的内存空间。如果请求队列不为空,判断此次数据查询是来源于定制功能模板库中功能的一种,如果是,则直接根据来源的模板名称查询后台数据库,获得处理此模板对应的数据查询功能时需要的服务调用序列,转步骤八;否则调用服务组合引擎进行服务组合,如步骤六所示。
若发现队列为空即请求解析失败,则转步骤十。
步骤六:服务组合引擎子模块根据初始状态和目标状态,调用服务代理子模块获得当前可用的基本数据查询服务信息,逐一处理初始状态中的查询过程,在满足中间过程约束条件的前提下,为每一查询过程进行服务组合,生成服务调用序列。
生成服务调用序列,如图5所示,包括以下步骤:
step1:从查询过程中提取本次服务组合过程的源状态S0,S0包括此查询过程的目标数据对象,查询条件集合,空的服务调用序列。目标数据对象指明本查询过程需要获得的数据的领域数据对象类型;查询条件集合是用户在定制页面选择并填写的查询条件,且是关联于本查询过程目标数据对象的条件;初始状态下服务调用序列为空。添加S0至用于临时存储数据的可用状态队列TmpS。
step2:判断TmpS是否为空,若为空说明当前已经没有可供处理的状态,则输出服务组合失败信息,服务组合过程结束;若不为空,则转step3。
step3:从于TmpS中取出位于队列头的可用状态作为当前状态S,TmpS中的下一可用状态被放置在队列头。
step4:判断当前状态S的查询条件是否为空,为空则输出当前状态S的服务调用序列,服务组合过程结束;不为空则将S的查询条件存储于临时存储查询条件的队列A。
step5:若A为空则说明当前状态下,所有查询条件均以分别被使用且生成了对应的后继状态,转step2;否则仍有未被使用的查询条件转step6。
step6:从A取出位于队列头的查询条件作为当前条件,A中的下一查询条件被放置在队列头。搜索可用于当前条件的基本数据查询服务并查找其对应的原子操作,如果所有基本数据查询服务都已调用过,表明此状态下有不能被处理的查询条件,由此状态不能到达目标状态,则放弃当前状态转step2;否则转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提供根据电脑品牌和获得电脑对象实例的原子操作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定制结果显示数据列表表头
显示 | 价铬 | 电脑型号 | 电脑配置 |
值 | computer:price(排序列) | computer:model | computer:configure |
computer:model表示电脑型号,computer:price表示电脑价格,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请求解析结果
初始状态 | {PROCESS(target=(computer)parameter=((computer:brand=HP;TTM=>2007)(storage:stock=>0)))RESULT() |
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=(*)),*表示预先分配的空闲空间。
step1:从查询过程中提取本次服务组合过程的源状态S0,S0=(target=(computer)parameter=((computer:brand=HP;TTM=>2007)(storage:stock>0))plan=());添加S0至用于临时存储数据的可用状态队列TmpS,TmpS={S0}。
step2:判断TmpS不为空,转step3。
step3:从TmpS中取出位于队列头的S0作为当前状态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))∧(computerQService:computerOperByTTM(>2007))。
step8:生成新状态S’=(target=(computer)parameter=((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007)))),当前条件对应的领域数据对象为computer,目标对象亦为computer,直接把S’加入可用TmpS,此时TmpS={(target=(computer)parameter=((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))∧(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))∧(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))∧(computerQService:computerOperByTTM(>2007))))}。
step4c:当前状态S的查询条件不为空,将S的查询条件存储至A,则A={(storage:stock>0)}。
step5c:A不空,转step6c。
step6c:从A取出位于队列头的查询条件(storage:stock>0)作为当前条件,搜索到可用于当前条件的基本数据查询服务为storageQService,其对应的原子操作为storageOperByStock,转step7c。
step7c:把storageQService:storageOperByStock(>0)添加入S的服务调用序列plan中,此时plan=(computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0)。
step8c:生成新状态S’=(target=(computer)parameter=()plan=((computerQService:computerOperByBrand(HP))∧(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))∧(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0))),并添加后继状态到TmpS,此时TmpS={(target=(computer)parameter=((computer:brand=HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))plan=(storageQService:storageOperByStock(>0))),(target=(computer)parameter=((computer:ID=(storageQService:storageOperByStock(>0))))plan=((computerQService:computerOperByBrand(HP))∧(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))∧(computerQService:computerOperByTTM(>2007))∧computerQService:computerOperByID(storageQService:storageOperByStock(>0))添加入S的服务调用序列plan中,此时plan=(storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007))∧(computerQService:computerOperByID(storageQService:storageOperByStock(>0)))。
step8e:生成新状态S’=(target=(computer)parameter=()plan=(storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007))∧(computerQService:computerOperByID(storageQService:storageOperByStock(>0)))),当前条件对应的领域数据对象为computer,目标对象亦为computer,直接把S’加入可用TmpS,此时TmpS={(target=(computer)parameter=((computer:ID=(storageQService:storageOperByStock(>0))))plan=((computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0))),(target=(computer)parameter=()plan=((storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007))∧computerQService: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))∧(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0)))}。
step4g:判断当前状态S的查询条件不为空,把S的查询条件存储至临时存储查询条件的队列A,A={(computer:ID=(storageQService:storageOperByStock(>0)))}。
step5g:A不为空转step6g。
step6g:从A取出位于队列头的查询条件(computer:ID=(storageQService:storageOperByStock(>0)))作为当前条件,搜索可用于当前条件的基本数据查询服务为computerQService该服务已经被当前状态S调用过,放弃当前状态S,转step2h。
step2h:TmpS不为空,转step3h。
step3h:从TmpS中取出位于队列头的状态作为当前状态S,S=(target=(computer)parameter=()plan=((storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007))∧computerQService:computerOperByID(storageQService:storageOperByStock(>0))。
step4h:当前状态查询条件为空,输出服务调用序列:(storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007))∧(computerQService:computerOperByID(storageQService:storageOperByStock(>0)))),该查询过程的服务组合过程完毕。由于本次查询请求只包含这一个查询过程,故本次查询请求的服务组合过程完毕。
如果服务组合失败,则转到步骤十。
步骤七:定制存储模块存储成功生成的服务调用序列及此次数据查询请求功能对应的模板到模板库。存储的模板记录中,模板ID为后台数据库自动生成,模板名称为用户定制封装结果xml中的模板名称即“可购买电脑产品查询”,模板对应配置信息为从用户定制封装结果xml中解析出的本次数据查询对应的查询内容为computer、查询条件为((computer:brand=’’;TTM=’’)(storage:stock=’’)),表示查询条件为电脑对象的品牌属性、上市时间属性,库存商品对象的库存量属性。模板对应的服务调用序列为前述服务组合过程生成的服务调用序列,但不包括参数值,即(storageQService:storageOperByStock()),(computerQService:computerOperByBrand())∧(computerQService:computerOperByTTM())∧(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页面,并返回应答。
步骤十:异常处理子模块向客户端返回失败信息,指明失败类型及详细信息。
Claims (20)
1、一种基于服务组合的可定制查询方法,其特征在于,由如下步骤组成:
步骤一:建立可定制查询客户端和数据查询服务器,并对领域内数据进行抽象分类,为所建立的模型构建可编辑控件,存入可定制查询客户端中的领域数据对象模型库,并在数据查询服务器中构建对应的基本数据查询服务,存入基本数据查询服务库;
步骤二:初始化可定制查询客户端的领域数据对象模型库和存储已有的定制功能的模板库;用户把自身个性化需求与模板库中的已有功能相比较,如果存在满足用户此次需求的功能的模版,从模板库中选择特定的功能的模板,页面展示为此功能对应定制的查询内容、查询条件、结果显示格式,并调整显示格式,重新填写定制的查询条件属性值,构造相同功能的新请求;否则由领域数据对象模型库和定制结果封装子模块定制数据查询;
步骤三:可定制查询客户端的定制结果封装子模块封装用户定制结果;如果本次定制来源于模板库,设定模板的标识位表示来源于已有定制模板,否则设定相应的标识表示为新定制;发送至数据查询服务器的请求队列管理子模块;
步骤四:请求队列管理子模块接收客户端发送的数据查询请求,并加入到请求队列中;
步骤五:请求解析子模块取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式;如果请求队列不为空,判断此次数据查询是否模板库中功能的一种,如果是,则由执行子模块直接获得其服务调用序列,转步骤八;否则调用服务组合引擎进行服务组合;如果请求队列为空,则转步骤十;
步骤六:服务组合引擎根据初始状态和目标状态,调用服务代理子模块获得的当前能够使用的基本数据查询服务信息,逐一处理初始状态中的查询过程,在满足中间过程约束条件的前提下,为每一查询过程进行服务组合,生成服务调用序列;如果服务组合失败,则转到步骤十;
步骤七:由定制存储模块存储对应的功能及服务调用序列到模板库;
步骤八:执行子模块按照服务调用流程序列的顺序调用基本数据查询服务库中的基本数据查询服务,并协调服务间输入输出关系;如果出现异常则转到步骤十;
步骤九:由结果生成子模块按照请求所描述结果显示格式生成最终数据查询分析结果,向客户端返回应答,进行结果显示;
步骤十:由异常处理子模块生成失败信息,并返回给客户端显示。
2、根据权利要求1所述一种基于服务组合的可定制查询方法,其特征在于:所述步骤一中的对数据进行抽象分类是按照面向对象的思想,对数据进行特征提取;将抽象出的领域数据对象模型所包含的属性作为对象模型的属性,每个领域数据对象模型以客户端脚本的方式被编写为可定制查询客户端的可编辑控件,向应用***描述自身的数据查询需求。
3、根据权利要求2所述一种基于服务组合的可定制查询方法,其特征在于:所述步骤一中的领域数据对象模型库包括逻辑控件,用运算及逻辑操作对两个或多个领域数据对象属性之间的关联关系进行描述,每个逻辑控件以脚本方式被编写。
4、根据权利要求1所述一种基于服务组合的可定制查询方法,其特征在于:所述步骤一中的基本数据查询服务库的基本数据查询服务与领域数据对象模型库的领域数据对象模型一一对应,提供领域数据对象查询的原子操作,仅通过对应的领域数据对象模型的一个或几个属性,从后台数据库中获得具有此属性的数据对象实例的集合。
5、根据权利要求4所述一种基于服务组合的可定制查询方法,其特征在于:所述步骤一中的基本数据查询服务库的每个基本数据查询服务包含一个查询关联属性的原子操作,获得对应领域数据对象的关联数据对象及其属性的原子操作,输出关联数据对象及关联数据对象的属性集合。
6、根据权利要求1所述一种基于服务组合的可定制查询方法,其特征在于:所述步骤二中的定制数据查询,包括如下步骤:
步骤a:在可定制查询客户端的页面上从领域数据模型库的控件中选择各可编辑控件,指定本次查询的各查询内容数据对象;选择各可编辑控件的属性作为本次数据查询的结果数据列表的一列;
步骤b:在定制页面上从领域数据模型库的可视控件中选择各可编辑控件,指定本次查询的条件数据对象;选择各可编辑控件的属性并为该属性选择、填写属性值,并指定此次选择的查询条件用于的查询内容数据对象;
步骤c:排列选择的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列;
步骤d:命名新定制的数据查询,保存本次定制,并命名本次定制对应的模板。
7、根据权利要求1所述一种基于服务组合的可定制查询方法,其特征在于:所述步骤五中的初始状态,由查询过程集合、查询结果和服务调用序列组成;查询过程集合包括本次用户请求需要查询的数据对象的查询过程,查询结果和服务调用序列为空。
8、根据权利要求1所述一种基于服务组合的可定制查询方法,其特征在于:所述步骤五中的目标状态,由查询过程集合、查询结果和服务调用序列组成;查询过程集合为空,查询结果为查询过程集合中每个查询过程的目标数据对象,服务调用序列为一段空闲的内存空间。
9、根据权利要求1所述一种基于服务组合的可定制查询方法,其特征在于:所述步骤六中的服务组合,包括如下步骤:
step1:服务组合引擎提取本次服务组合过程的源状态,包括查询过程的目标数据对象、查询条件集合和空的服务调用序列;添加源状态至用于临时存储数据的可用状态队列;
step2:如果可用状态队列为空,则输出服务组合失败信息,服务组合过程结束;否则转step3;
step3:从可用状态队列中取出位于队列头的可用状态作为当前状态;
step4:如果当前状态的查询条件为空,则输出当前状态的服务调用序列,服务组合过程结束;否则将当前状态的查询条件存储于存储查询条件的临时队列;
step5:如果临时队列为空,转step2;否则转step6;
step6:从临时队列中取出位于队列头的查询条件作为当前条件,搜索能用于当前条件的基本数据查询服务并查找其对应的原子操作,如果所有基本数据查询服务都已调用过,则转step2;否则转step7;
step7:把查找到的原子操作以等价关系添加到当前状态的服务调用序列;
step8:针对当前状态的当前查询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列,转step5。
10、根据权利要求9所述一种基于服务组合的可定制查询方法,其特征在于:所述step8生成当前状态的后继状态时,若当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,并将删除当前条件后的状态作为后继状态加入可用状态队列,生成完毕;否则,调用当前条件对应的基本数据查询服务的关联查询原子操作,获得关联属性集合,分别添加每个关联属性及属性值来源,并从当前状态中删除当前条件并作为后继状态加入可用状态队列;接着处理下一个关联属性并把所有的后继状态加入可用状态队列,直至关联属性集合中所有关联属性都已生成后继状态。
11、一种基于服务组合的可定制查询平台,其特征在于,包括可定制查询客户端和数据查询服务器;可定制查询客户端,包括领域数据对象模型库,用来对领域内数据进行抽象分类,存入为所建立的模型构建的可编辑控件;数据查询服务器,包括基本数据查询服务库,构建并存储可编辑控件对应的基本数据查询服务;
可定制查询客户端还包括模板库、定制结果封装子模块;
模板库,用来存储已有的定制功能,初始化模板库后,用户把自身个性化需求与模板库中的已有功能相比较,如果存在满足用户此次需求的功能的模版,从模板库中选择特定的功能的模板,页面展示为此功能对应定制的查询内容、查询条件、结果显示格式,并调整显示格式,重新填写定制的查询条件属性值,构造相同功能的新请求;否则由领域数据对象模型库和定制结果封装子模块定制数据查询;
定制结果封装子模块,用来封装用户定制结果;如果本次定制来源于模板库,设定模板的标识位表示来源于已有定制模板,否则设定相应的标识为表示为新定制;发送至数据查询服务器的请求队列管理子模块;
数据查询服务器还包括请求队列管理子模块、请求解析子模块、服务代理子模块、服务组合引擎、定制存储模块、执行子模块、结果生成子模块和异常处理子模块;
请求队列管理子模块,请求队列管理子模块接收客户端发送的数据查询请求,并加入到请求队列中;
请求解析子模块,取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式;如果请求队列不为空,判断此次数据查询是否模板库中功能的一种,如果是,则由执行子模块直接获得其服务调用序列,否则调用服务组合引擎进行服务组合;如果请求队列为空,则发送到异常处理子模块处理;
服务代理子模块,获得当前能够使用的基本数据查询服务信息;
服务组合引擎,根据初始状态和目标状态,调用当前能够使用的基本数据查询服务信息,逐一处理初始状态中的查询过程,在满足中间过程约束条件的前提下,为每一查询过程进行服务组合,生成服务调用序列;如果服务组合失败,则发送到异常处理子模块处理;
定制存储模块,存储对应的功能及服务调用序列到模板库;
执行子模块,按照服务调用流程序列的顺序调用基本数据查询服务库中的基本数据查询服务,并协调服务间输入输出关系;如果出现异常,则发送到异常处理子模块处理;
结果生成子模块,按照请求所描述结果显示格式生成最终数据查询分析结果,向客户端返回应答,进行结果显示;
异常处理子模块,生成失败信息,并返回给客户端显示。
12、根据权利要求11所述一种基于服务组合的可定制查询平台,其特征在于:所述领域数据对象模型库中,对数据进行抽象分类是按照面向对象的思想,对数据进行特征提取;将抽象出的领域数据对象模型所包含的属性作为对象模型的属性,每个领域数据对象模型以客户端脚本的方式被编写为可定制查询客户端的可编辑控件,向应用***描述自身的数据查询需求。
13、根据权利要求12所述一种基于服务组合的可定制查询平台,其特征在于:所述领域数据对象模型库包括逻辑控件,用运算及逻辑操作对两个或多个领域数据对象属性之间的关联关系进行描述,每个逻辑控件以脚本方式被编写。
14、根据权利要求11所述一种基于服务组合的可定制查询平台,其特征在于:所述基本数据查询服务库的基本数据查询服务与领域数据对象模型库的领域数据对象模型一一对应,提供领域数据对象查询的原子操作,仅通过对应的领域数据对象模型的一个或几个属性,从后台数据库中获得具有此属性的数据对象实例的集合。
15、根据权利要求14所述一种基于服务组合的可定制查询平台,其特征在于:所述基本数据查询服务库的每个基本数据查询服务包含一个查询关联属性的原子操作,获得对应领域数据对象的关联数据对象及其属性的原子操作,输出关联数据对象及关联数据对象的属性集合。
16、根据权利要求11所述一种基于服务组合的可定制查询平台,其特征在于:所述可定制查询客户端进行的定制数据查询:
在可定制查询客户端的页面上从领域数据模型库的控件中选择各可编辑控件,指定本次查询的各查询内容数据对象;选择各可编辑控件的属性作为本次数据查询的结果数据列表的一列;
在定制页面上从领域数据模型库的可视控件中选择各可编辑控件,指定本次查询的条件数据对象;选择各可编辑控件的属性并为该属性选择、填写属性值,并指定此次选择的查询条件用于的查询内容数据对象;
排列选择的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列;
命名新定制的数据查询,保存本次定制,并命名本次定制对应的模板。
17、根据权利要求11所述一种基于服务组合的可定制查询平台,其特征在于:所述请求解析子模块得到的初始状态,由查询过程集合、查询结果和服务调用序列组成;查询过程集合包括本次用户请求需要查询的数据对象的查询过程,查询结果和服务调用序列为空。
18、根据权利要求11所述一种基于服务组合的可定制查询平台,其特征在于:所述请求解析子模块得到的目标状态,由查询过程集合、查询结果和服务调用序列组成;查询过程集合为空,查询结果为查询过程集合中每个查询过程的目标数据对象,服务调用序列为一段空闲的内存空间。
19、根据权利要求11所述一种基于服务组合的可定制查询平台,其特征在于:所述服务组合引擎提取本次服务组合过程的源状态,包括查询过程的目标数据对象、查询条件集合和空的服务调用序列;添加源状态至用于临时存储数据的可用状态队列;
如果可用状态队列为空,则输出服务组合失败信息,服务组合过程结束;否则:
从可用状态队列中取出位于队列头的可用状态作为当前状态;
如果当前状态的查询条件为空,则输出当前状态的服务调用序列,服务组合过程结束;否则将当前状态的查询条件存储于存储查询条件的临时队列;
如果临时队列为空,对可用状态队列是否为空进行判断并处理;否则:
从临时队列中取出位于队列头的查询条件作为当前条件,搜索能用于当前条件的基本数据查询服务并查找其对应的原子操作,如果所有基本数据查询服务都已调用过,则对可用状态队列是否为空进行判断并处理;否则:
把查找到的原子操作以等价关系添加到当前状态的服务调用序列;
针对当前状态的当前查询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列,对临时队列是否为空进行判断并处理。
20、根据权利要求19所述一种基于服务组合的可定制查询平台,其特征在于:所述服务组合引擎的服务组合过程生成当前状态的后继状态,若当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,并将删除当前条件后的状态作为后继状态加入可用状态队列,生成完毕;否则,调用当前条件对应的基本数据查询服务的关联查询原子操作,获得关联属性集合,分别添加每个关联属性及属性值来源,并从当前状态中删除当前条件并作为后继状态加入可用状态队列;接着处理下一个关联属性并把所有的后继状态加入可用状态队列,直至关联属性集合中所有关联属性都已生成后继状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101192450A CN101350023B (zh) | 2008-08-29 | 2008-08-29 | 一种基于服务组合的可定制查询方法与平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101192450A CN101350023B (zh) | 2008-08-29 | 2008-08-29 | 一种基于服务组合的可定制查询方法与平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101350023A true CN101350023A (zh) | 2009-01-21 |
CN101350023B CN101350023B (zh) | 2011-05-04 |
Family
ID=40268818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101192450A Expired - Fee Related CN101350023B (zh) | 2008-08-29 | 2008-08-29 | 一种基于服务组合的可定制查询方法与平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101350023B (zh) |
Cited By (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043627A (zh) * | 2010-12-24 | 2011-05-04 | 中国农业银行股份有限公司 | 浏览器服务器架构的参照数据展示程序开发方法及*** |
CN102685195A (zh) * | 2011-12-20 | 2012-09-19 | 中兴通讯股份有限公司 | 应用服务组合方法、装置及*** |
CN102819557A (zh) * | 2012-06-28 | 2012-12-12 | 用友软件股份有限公司 | 数据查询处理装置和数据查询处理方法 |
CN102819545A (zh) * | 2011-12-22 | 2012-12-12 | 金蝶软件(中国)有限公司 | 基于通用过滤条件复合组件的单据查询方法及装置 |
CN102855250A (zh) * | 2011-06-30 | 2013-01-02 | 北京新媒传信科技有限公司 | 一种用户信息的显示输出方法和*** |
CN103294755A (zh) * | 2013-02-01 | 2013-09-11 | 税友软件集团股份有限公司 | 一种灵活组装分析方法 |
CN103559307A (zh) * | 2013-11-18 | 2014-02-05 | 中国农业银行股份有限公司 | 一种查询的缓存方法及装置 |
CN103685207A (zh) * | 2012-09-21 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 跨数据源的数据整合***、装置及方法 |
CN103793433A (zh) * | 2012-11-01 | 2014-05-14 | 航天信息软件技术有限公司 | 一种帐表数据的查询和处理方法 |
CN103929477A (zh) * | 2014-03-31 | 2014-07-16 | 国网山东省电力公司 | 基于Http协议的***间无耦合集成模拟方法及*** |
CN103970761A (zh) * | 2013-01-28 | 2014-08-06 | 阿里巴巴集团控股有限公司 | 一种商品数据搜索方法及装置 |
CN104104715A (zh) * | 2014-05-29 | 2014-10-15 | 银江股份有限公司 | 一种基于云计算平台的交通数据组合处理方法 |
CN104281676A (zh) * | 2014-09-29 | 2015-01-14 | 蓝盾信息安全技术股份有限公司 | 一种基于flex动态生成查询列表的方法 |
CN104346344A (zh) * | 2013-07-24 | 2015-02-11 | 北大方正集团有限公司 | 汇编图书的制作方法和装置 |
CN104361040A (zh) * | 2014-10-29 | 2015-02-18 | 中国建设银行股份有限公司 | 一种定制查询的方法及装置 |
CN104714973A (zh) * | 2013-12-17 | 2015-06-17 | 航天信息股份有限公司 | 一种处理查询语句的方法和装置 |
CN105100117A (zh) * | 2015-08-28 | 2015-11-25 | 北京奇艺世纪科技有限公司 | 一种用于访问组合服务的方法及装置 |
CN105160615A (zh) * | 2015-09-08 | 2015-12-16 | 浙江浙大中控信息技术有限公司 | 一种自由检索的病历搜索引擎***及搜索方法 |
CN105335132A (zh) * | 2014-06-13 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 一种自定义应用程序功能的方法、装置以及*** |
CN105389188A (zh) * | 2015-12-02 | 2016-03-09 | 中国建设银行股份有限公司 | 支持产品创新的设计方法及装置 |
CN105450501A (zh) * | 2014-09-01 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 设置定制化回复功能的方法及装置 |
CN105824637A (zh) * | 2016-03-17 | 2016-08-03 | 中国银行股份有限公司 | 定制查询方法及*** |
CN105871998A (zh) * | 2015-12-18 | 2016-08-17 | 乐视致新电子科技(天津)有限公司 | 一种数据展示方法及装置 |
CN106294579A (zh) * | 2016-07-27 | 2017-01-04 | 北京奇虎科技有限公司 | 一种定制搜索方法及装置 |
CN106708610A (zh) * | 2015-11-17 | 2017-05-24 | 北京京东尚科信息技术有限公司 | 一种业务模型的管理方法和*** |
CN107003867A (zh) * | 2014-11-13 | 2017-08-01 | 微软技术许可有限责任公司 | 使用区段以用于跨平台的应用的定制 |
CN107977380A (zh) * | 2016-10-25 | 2018-05-01 | 北京京东尚科信息技术有限公司 | 用于生成页面的方法和装置 |
CN108280091A (zh) * | 2017-01-06 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种任务请求执行方法和装置 |
CN108287853A (zh) * | 2017-01-10 | 2018-07-17 | 杭州有数金融信息服务有限公司 | 一种数据关系分析方法及其*** |
CN108388564A (zh) * | 2017-02-03 | 2018-08-10 | 百度在线网络技术(北京)有限公司 | 查询处理方法、装置及其设备 |
CN109213781A (zh) * | 2018-08-27 | 2019-01-15 | 平安科技(深圳)有限公司 | 风控数据查询方法及装置 |
CN109344165A (zh) * | 2018-11-23 | 2019-02-15 | 福建榕基软件股份有限公司 | 一种查询方法及存储设备 |
CN109523110A (zh) * | 2018-09-28 | 2019-03-26 | 深圳市德立信环境工程有限公司 | 定制垃圾分类服务的方法、其***及电子设备 |
CN109600443A (zh) * | 2018-12-14 | 2019-04-09 | 北京向上心科技有限公司 | 客户端功能模块后台运营***及方法 |
CN109947406A (zh) * | 2019-02-28 | 2019-06-28 | 中国空间技术研究院 | 一种通用化星务管理***架构 |
CN111190578A (zh) * | 2019-12-20 | 2020-05-22 | 天阳宏业科技股份有限公司 | 一种可定制的流程作业开发*** |
CN111191088A (zh) * | 2020-01-02 | 2020-05-22 | 武汉大学 | 一种跨界服务需求分析方法、***和可读介质 |
CN111625548A (zh) * | 2019-02-27 | 2020-09-04 | 北京京东尚科信息技术有限公司 | 查询方法、***、装置和计算机可读介质 |
CN111949632A (zh) * | 2020-07-29 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 一种集群环境下业务模型的展示方法及*** |
CN113805936A (zh) * | 2021-09-18 | 2021-12-17 | 中国能源建设集团广东省电力设计研究院有限公司 | 一种企业信息化系列产品版本管控方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109344853A (zh) * | 2018-08-06 | 2019-02-15 | 杭州雄迈集成电路技术有限公司 | 一种可定制目标检测算法的智能化云平台***及操作方法 |
-
2008
- 2008-08-29 CN CN2008101192450A patent/CN101350023B/zh not_active Expired - Fee Related
Cited By (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043627A (zh) * | 2010-12-24 | 2011-05-04 | 中国农业银行股份有限公司 | 浏览器服务器架构的参照数据展示程序开发方法及*** |
CN102855250B (zh) * | 2011-06-30 | 2016-06-29 | 北京新媒传信科技有限公司 | 一种用户信息的显示输出方法和*** |
CN102855250A (zh) * | 2011-06-30 | 2013-01-02 | 北京新媒传信科技有限公司 | 一种用户信息的显示输出方法和*** |
CN102685195A (zh) * | 2011-12-20 | 2012-09-19 | 中兴通讯股份有限公司 | 应用服务组合方法、装置及*** |
CN102685195B (zh) * | 2011-12-20 | 2016-07-06 | 中兴通讯股份有限公司 | 应用服务组合方法、装置及*** |
CN102819545A (zh) * | 2011-12-22 | 2012-12-12 | 金蝶软件(中国)有限公司 | 基于通用过滤条件复合组件的单据查询方法及装置 |
CN102819545B (zh) * | 2011-12-22 | 2015-01-28 | 金蝶软件(中国)有限公司 | 基于通用过滤条件复合组件的单据查询方法及装置 |
CN102819557B (zh) * | 2012-06-28 | 2016-01-13 | 用友网络科技股份有限公司 | 数据查询处理装置和数据查询处理方法 |
CN102819557A (zh) * | 2012-06-28 | 2012-12-12 | 用友软件股份有限公司 | 数据查询处理装置和数据查询处理方法 |
CN103685207A (zh) * | 2012-09-21 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 跨数据源的数据整合***、装置及方法 |
CN103685207B (zh) * | 2012-09-21 | 2018-01-19 | 百度在线网络技术(北京)有限公司 | 跨数据源的数据整合***、装置及方法 |
CN103793433A (zh) * | 2012-11-01 | 2014-05-14 | 航天信息软件技术有限公司 | 一种帐表数据的查询和处理方法 |
CN103970761A (zh) * | 2013-01-28 | 2014-08-06 | 阿里巴巴集团控股有限公司 | 一种商品数据搜索方法及装置 |
CN103970761B (zh) * | 2013-01-28 | 2018-05-01 | 阿里巴巴集团控股有限公司 | 一种商品数据搜索方法及装置 |
CN103294755A (zh) * | 2013-02-01 | 2013-09-11 | 税友软件集团股份有限公司 | 一种灵活组装分析方法 |
CN104346344A (zh) * | 2013-07-24 | 2015-02-11 | 北大方正集团有限公司 | 汇编图书的制作方法和装置 |
CN103559307A (zh) * | 2013-11-18 | 2014-02-05 | 中国农业银行股份有限公司 | 一种查询的缓存方法及装置 |
CN104714973A (zh) * | 2013-12-17 | 2015-06-17 | 航天信息股份有限公司 | 一种处理查询语句的方法和装置 |
CN103929477B (zh) * | 2014-03-31 | 2017-09-19 | 国网山东省电力公司 | 基于Http协议的***间无耦合集成模拟方法及*** |
CN103929477A (zh) * | 2014-03-31 | 2014-07-16 | 国网山东省电力公司 | 基于Http协议的***间无耦合集成模拟方法及*** |
CN104104715B (zh) * | 2014-05-29 | 2017-06-30 | 银江股份有限公司 | 一种基于云计算平台的交通数据组合处理方法 |
CN104104715A (zh) * | 2014-05-29 | 2014-10-15 | 银江股份有限公司 | 一种基于云计算平台的交通数据组合处理方法 |
CN105335132A (zh) * | 2014-06-13 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 一种自定义应用程序功能的方法、装置以及*** |
CN105335132B (zh) * | 2014-06-13 | 2020-03-24 | 阿里巴巴集团控股有限公司 | 一种自定义应用程序功能的方法、装置以及*** |
CN105450501A (zh) * | 2014-09-01 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 设置定制化回复功能的方法及装置 |
CN105450501B (zh) * | 2014-09-01 | 2019-01-01 | 阿里巴巴集团控股有限公司 | 设置定制化回复功能的方法及装置 |
CN104281676A (zh) * | 2014-09-29 | 2015-01-14 | 蓝盾信息安全技术股份有限公司 | 一种基于flex动态生成查询列表的方法 |
CN104361040A (zh) * | 2014-10-29 | 2015-02-18 | 中国建设银行股份有限公司 | 一种定制查询的方法及装置 |
US10895963B2 (en) | 2014-11-13 | 2021-01-19 | Microsoft Technology Licensing, Llc | Using sections for customization of applications across platforms |
CN107003867A (zh) * | 2014-11-13 | 2017-08-01 | 微软技术许可有限责任公司 | 使用区段以用于跨平台的应用的定制 |
CN107003867B (zh) * | 2014-11-13 | 2020-04-07 | 微软技术许可有限责任公司 | 使用区段以用于跨平台的应用的定制 |
CN105100117A (zh) * | 2015-08-28 | 2015-11-25 | 北京奇艺世纪科技有限公司 | 一种用于访问组合服务的方法及装置 |
CN105100117B (zh) * | 2015-08-28 | 2018-07-13 | 北京奇艺世纪科技有限公司 | 一种用于访问组合服务的方法及装置 |
CN105160615A (zh) * | 2015-09-08 | 2015-12-16 | 浙江浙大中控信息技术有限公司 | 一种自由检索的病历搜索引擎***及搜索方法 |
CN106708610A (zh) * | 2015-11-17 | 2017-05-24 | 北京京东尚科信息技术有限公司 | 一种业务模型的管理方法和*** |
CN105389188A (zh) * | 2015-12-02 | 2016-03-09 | 中国建设银行股份有限公司 | 支持产品创新的设计方法及装置 |
CN105871998A (zh) * | 2015-12-18 | 2016-08-17 | 乐视致新电子科技(天津)有限公司 | 一种数据展示方法及装置 |
CN105824637B (zh) * | 2016-03-17 | 2019-03-12 | 中国银行股份有限公司 | 定制查询方法及*** |
CN105824637A (zh) * | 2016-03-17 | 2016-08-03 | 中国银行股份有限公司 | 定制查询方法及*** |
CN106294579B (zh) * | 2016-07-27 | 2019-08-23 | 北京奇虎科技有限公司 | 一种定制搜索方法及装置 |
CN106294579A (zh) * | 2016-07-27 | 2017-01-04 | 北京奇虎科技有限公司 | 一种定制搜索方法及装置 |
CN107977380A (zh) * | 2016-10-25 | 2018-05-01 | 北京京东尚科信息技术有限公司 | 用于生成页面的方法和装置 |
CN108280091A (zh) * | 2017-01-06 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种任务请求执行方法和装置 |
CN108280091B (zh) * | 2017-01-06 | 2022-05-17 | 阿里巴巴集团控股有限公司 | 一种任务请求执行方法和装置 |
CN108287853A (zh) * | 2017-01-10 | 2018-07-17 | 杭州有数金融信息服务有限公司 | 一种数据关系分析方法及其*** |
CN108287853B (zh) * | 2017-01-10 | 2020-11-03 | 杭州有数金融信息服务有限公司 | 一种数据关系分析方法及其*** |
CN108388564A (zh) * | 2017-02-03 | 2018-08-10 | 百度在线网络技术(北京)有限公司 | 查询处理方法、装置及其设备 |
CN109213781A (zh) * | 2018-08-27 | 2019-01-15 | 平安科技(深圳)有限公司 | 风控数据查询方法及装置 |
CN109523110A (zh) * | 2018-09-28 | 2019-03-26 | 深圳市德立信环境工程有限公司 | 定制垃圾分类服务的方法、其***及电子设备 |
CN109344165A (zh) * | 2018-11-23 | 2019-02-15 | 福建榕基软件股份有限公司 | 一种查询方法及存储设备 |
CN109600443B (zh) * | 2018-12-14 | 2022-02-08 | 广州优虎科技有限公司 | 客户端功能模块后台运营***及方法 |
CN109600443A (zh) * | 2018-12-14 | 2019-04-09 | 北京向上心科技有限公司 | 客户端功能模块后台运营***及方法 |
CN111625548A (zh) * | 2019-02-27 | 2020-09-04 | 北京京东尚科信息技术有限公司 | 查询方法、***、装置和计算机可读介质 |
CN109947406A (zh) * | 2019-02-28 | 2019-06-28 | 中国空间技术研究院 | 一种通用化星务管理***架构 |
CN111190578A (zh) * | 2019-12-20 | 2020-05-22 | 天阳宏业科技股份有限公司 | 一种可定制的流程作业开发*** |
CN111190578B (zh) * | 2019-12-20 | 2023-03-21 | 天阳宏业科技股份有限公司 | 一种可定制的流程作业开发*** |
CN111191088A (zh) * | 2020-01-02 | 2020-05-22 | 武汉大学 | 一种跨界服务需求分析方法、***和可读介质 |
CN111191088B (zh) * | 2020-01-02 | 2022-02-01 | 武汉大学 | 一种跨界服务需求分析方法、***和可读介质 |
CN111949632A (zh) * | 2020-07-29 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 一种集群环境下业务模型的展示方法及*** |
CN111949632B (zh) * | 2020-07-29 | 2022-11-11 | 苏州浪潮智能科技有限公司 | 一种集群环境下业务模型的展示方法及*** |
CN113805936A (zh) * | 2021-09-18 | 2021-12-17 | 中国能源建设集团广东省电力设计研究院有限公司 | 一种企业信息化系列产品版本管控方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101350023B (zh) | 2011-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101350023B (zh) | 一种基于服务组合的可定制查询方法与平台 | |
CN110673848B (zh) | 一种基于JavaWeb的企业信息管理***配置装置 | |
US8046297B2 (en) | User interface, system and method for performing a web-based transaction | |
US20050021541A1 (en) | Data management system providing a data thesaurus for mapping between multiple data schemas or between multiple domains within a data schema | |
US20140250057A1 (en) | System of Centrally Managing Core Reference Data Associated with an Enterprise | |
US8838627B2 (en) | Systems and methods for providing template based output management | |
CN101634994B (zh) | 一种服务发现和组合装置 | |
US20080162266A1 (en) | Business object acting as a logically central source for agreements on objectives | |
US20080162164A1 (en) | Method and system for centralized management of sources of supply | |
R-Moreno et al. | Integrating planning and scheduling in workflow domains | |
CN102467701A (zh) | 分布式订单编排***中的基于事件的编排 | |
CN111401988B (zh) | 一种基于语义的产品配置需求响应***及订单生成方法 | |
Landolfi et al. | An ontology based semantic data model supporting a MaaS digital platform | |
Piccinelli et al. | Workflow: A language for composing web services | |
Brambilla | Extending hypertext conceptual models with process-oriented primitives | |
Brambilla et al. | Model-driven design of service-enabled web applications | |
Dragotto et al. | ZERO: Playing mathematical programming games | |
KR102368720B1 (ko) | 심의 요청 메뉴 및 익스플로러를 포함하는 통합 시스템 | |
Cepolina | Fostering the garment industry competitiveness: the ICT contribution | |
Meng et al. | Flexible inter-enterprise workflow management using e-services | |
Devi et al. | A model for information integration using service oriented architecture | |
Ridha et al. | Development of E-Supply Chain Management Design for Crispy Soybean Snacks Products Using Odoo 13.0 | |
CN104272294A (zh) | ***架构生成 | |
Park et al. | Conceptual modeling for big data to improve quality of business analytics | |
ter Hofstede et al. | Integrated specification of method and graphic knowledge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110504 Termination date: 20130829 |