CN101350023B - Method and platform capable of customizing enquiry based on service combination - Google Patents
Method and platform capable of customizing enquiry based on service combination Download PDFInfo
- Publication number
- CN101350023B CN101350023B CN2008101192450A CN200810119245A CN101350023B CN 101350023 B CN101350023 B CN 101350023B CN 2008101192450 A CN2008101192450 A CN 2008101192450A CN 200810119245 A CN200810119245 A CN 200810119245A CN 101350023 B CN101350023 B CN 101350023B
- Authority
- CN
- China
- Prior art keywords
- query
- data
- service
- result
- data object
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
技术领域technical field
本发明属于计算机数据管理领域,具体涉及一种基于服务组合的可定制数据查询方法及其平台。The invention belongs to the field of computer data management, and in particular relates to a service combination-based customizable data query method and a platform thereof.
背景技术Background technique
传统基于Web的数据查询由Web应用系统针对每项数据查询功能提供一个独立的数据查询条件输入页面。查询条件输入页面是此项数据查询功能的入口,页面对应的后台逻辑固定,以系统硬编码方式实现。对于存在复杂查询条件输入的功能,系统提供对简单查询条件做诸如“与”“或”“非”等逻辑拼接,构成复杂查询条件的输入方式。In the traditional web-based data query, the web application system provides an independent data query condition input page for each data query function. The query condition input page is the entrance of this data query function, and the background logic corresponding to the page is fixed and implemented in a system hard-coded way. For the function of inputting complex query conditions, the system provides an input method for simple query conditions such as "and", "or" and "not" to form complex query conditions.
用户进行数据查询时,首先在系统提供的功能集中选择需要的功能页面,然后按照系统指定方式选择、填写查询条件并提交数据查询请求,最后在系统返回的固定格式应答中获得关心的结果。系统视从同一数据查询条件输入页面进入的不同用户之间无差别,为这类用户提供同样的查询服务。When users query data, they first select the required function page from the function set provided by the system, then select and fill in the query conditions and submit the data query request according to the method specified by the system, and finally obtain the desired results in the fixed format response returned by the system. The system regards no difference between different users entering from the same data query condition input page, and provides the same query service for such users.
这类传统方法存在以下问题:Such traditional methods have the following problems:
第一、固定的数据查询处理方式不能满足用户个性化查询需求。对于同一功能,应用系统只可接受页面提供的待输入条件,系统输出则是固定格式的数据查询结果。若用户所预期的查询条件不是系统提供的条件输入页面项,则该查询需求不能被此系统接受;若用户不关心系统得到的查询结果中的部分数据,且希望其被过滤以利于数据分析,或者希望重点突出某部分数据,则这种系统固定输出结果格式的查询处理方式,不能满足这种具有用户偏好性质的需求。First, the fixed data query processing method cannot meet the user's personalized query needs. For the same function, the application system can only accept the input conditions provided by the page, and the system output is the data query result in a fixed format. If the query condition expected by the user is not the condition input page item provided by the system, the query requirement cannot be accepted by the system; if the user does not care about some data in the query result obtained by the system and wants it to be filtered for data analysis, Or if you want to focus on a certain part of the data, then the query processing method of the system with a fixed output result format cannot meet the needs of this user preference.
第二、应用系统支持的数据查询功能已预先分类,用户的一次查询动作被限制在一个提供的该查询功能的页面中。如果用户需要进行的查询分类与应用系统的查询功能分类不同,则该查询需求无法在系统提供的一个查询页面中完成,用户需要在其他相关的系统页面中进行多次查询,并由用户在逻辑上比对得到的多个查询结果。这种方式导致数据查询效率低下,用户的工作量增加,系统友好性差。Second, the data query functions supported by the application system have been classified in advance, and a user's query action is limited to a page provided with the query function. If the query classification required by the user is different from the query function classification of the application system, the query requirement cannot be fulfilled on one query page provided by the system, and the user needs to perform multiple queries on other related system pages, and the user will logically Multiple query results obtained from the above comparison. This method leads to low data query efficiency, increased user workload, and poor system friendliness.
第三、应用系统开发时需要为每种数据查询功能做硬编码工作,工作量大且重复劳动多。Third, when developing an application system, it is necessary to do hard-coding work for each data query function, which is a heavy workload and a lot of repetitive labor.
第四、当数据查询应用系统开发完毕投入使用之后,如有新功能需求产生,系统不能自动适应需求的变更。若通过系统升级方式解决,耗费人力物力的同时也极易破坏系统原有架构,使系统渐渐失去可维护性和可扩展性。Fourth, after the data query application system is developed and put into use, if there are new functional requirements, the system cannot automatically adapt to the changes in requirements. If it is solved by system upgrade, it will consume manpower and material resources, and at the same time, it will easily destroy the original structure of the system, making the system gradually lose maintainability and scalability.
专利号为200610059824.1,“一种性能数据的定制查询方法及系统”中提出一种性能数据的定制查询方法,通过系统定制模板指定查询对象的一个或多个相关属性作为模板属性并保存模板,用户通过选择模板并设置查询参数构造查询请求。服务器解析出要查询的模板属性和查询参数,构造出查询语句执行数据库查询。这种方法用户只能在系统提供的模板中选择需要的查询模式,模板指定的是一次查询的结果是何种属性数据,模板定制工作由系统管理员完成,用户不能直接干预,当系统提供的模板不能满足用户的查询需求的时候,用户仍需要进行多次查询并手工拼接查询结果甚至无法通过该系统获得期望数据。服务器端查询引擎对用户数据查询请求的处理方式为根据所述查询参数动态构造SQL语句后执行数据库查询。这种处理方式生成的SQL语句在执行之前,无法验证其逻辑合理性,而合理的SQL语句不能和对应查询功能关联,不具有重用性。Patent No. 200610059824.1, "A Custom Query Method and System for Performance Data" proposes a custom query method for performance data, specifying one or more related attributes of the query object as template attributes through the system customization template and saving the template, the user Construct a query request by selecting a template and setting query parameters. The server parses out the template attributes and query parameters to be queried, and constructs a query statement to execute the database query. In this method, the user can only select the required query mode in the template provided by the system. The template specifies what kind of attribute data is the result of a query. The template customization is completed by the system administrator, and the user cannot directly intervene. When the system provides When the template cannot meet the user's query requirements, the user still needs to perform multiple queries and manually assemble the query results, and even cannot obtain the expected data through the system. The server-side query engine processes the user data query request by dynamically constructing an SQL statement according to the query parameters and then executing the database query. Before the SQL statement generated by this processing method is executed, its logical rationality cannot be verified, and a reasonable SQL statement cannot be associated with the corresponding query function, so it is not reusable.
发明内容Contents of the invention
本发明提出一种基于服务组合的可定制查询方法与平台,用户通过指定的客户端可视组件并通过选择、填写组件属性值的操作,向平台描述自身需求,数据查询请求的初始状态和目标状态被解析出后,搜索并组合出对应的基本服务调用序列,然后执行序列中的基本服务,进而得到包含用户期望结果数据的结果集,并经过筛选、排序、组装后生成最终结果向用户显示。本方法中用户主动向系统描述自身需求,系统通过接收用户描述并动态分析处理,可有效适应不同用户的不同个性化需求,降低应用系统开发工作量和后期维护成本,并提高了数据查询应用系统的友好性。使用户主动地定制数据查询,将查询进行得灵活而方便。The present invention proposes a customizable query method and platform based on service combination. Users can describe their needs, initial status and goals of data query requests to the platform through specified client-side visual components and operations of selecting and filling component attribute values. After the state is parsed, search and combine the corresponding basic service call sequence, and then execute the basic service in the sequence, and then get the result set containing the user's expected result data, and generate the final result after filtering, sorting, and assembling to display to the user . In this method, users actively describe their needs to the system, and the system can effectively adapt to different individual needs of different users by receiving user descriptions and dynamically analyzing and processing them, reducing the workload of application system development and later maintenance costs, and improving the efficiency of data query application systems. friendliness. It enables users to actively customize data query, making the query flexible and convenient.
一种基于服务组合的可定制查询方法,包括以下步骤:A customizable query method based on service composition, comprising the following steps:
步骤1:建立可定制查询客户端和数据查询服务器,并对领域内数据进行抽象分类,为所建立的模型构建可编辑控件,存入可定制查询客户端中的领域数据对象模型库,并在数据查询服务器中构建对应的基本数据查询服务,存入基本数据查询服务库;Step 1: Establish a customizable query client and a data query server, abstract and classify the data in the domain, build an editable control for the established model, and store it in the domain data object model library in the customizable query client. Build the corresponding basic data query service in the data query server and store it in the basic data query service library;
步骤2:初始化可定制查询客户端的领域数据对象模型库和存储已有的定制功能的模板库;用户把自身个性化需求与模板库中的已有功能相比较,如果存在满足用户此次需求的功能的模版,从模板库中选择特定的功能的模板,页面展示为此功能对应定制的查询内容、查询条件、结果显示格式,并调整显示格式,重新填写定制的查询条件属性值,构造相同功能的新请求;否则由领域数据对象模型库和定制结果封装子模块定制数据查询;Step 2: Initialize the domain data object model library of the customizable query client and the template library that stores existing custom functions; the user compares his individual needs with the existing functions in the template library, and if there is a template library that meets the user's current needs Function template, select a specific function template from the template library, and the page display corresponds to the customized query content, query conditions, and result display format for this function, and adjust the display format, refill the customized query condition attribute value, and construct the same function The new request; otherwise, the domain data object model library and custom result encapsulation sub-module customize data query;
步骤3:可定制查询客户端的定制结果封装子模块封装用户定制结果;如果本次定制来源于模板库,设定模板的标识位表示来源于已有定制模板,否则设定相应的标识表示为新定制;发送至数据查询服务器的请求队列管理子模块;Step 3: You can customize the query client's customized results and encapsulate the submodule to encapsulate the user's customized results; if this customization comes from the template library, set the template's identification bit to indicate that it comes from an existing customized template, otherwise set the corresponding identification to indicate that it is new Customization; the request queue management submodule sent to the data query server;
步骤4:请求队列管理子模块接收客户端发送的数据查询请求,并加入到请求队列中;Step 4: The request queue management submodule receives the data query request sent by the client and adds it to the request queue;
步骤5:请求解析子模块取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式;如果请求队列不为空,判断此次数据查询是否模板库中功能的一种,如果是,则由执行子模块直接获得其服务调用序列,转步骤8;否则调用服务组合引擎进行服务组合;如果请求队列为空,则转步骤10;Step 5: The request parsing sub-module takes out the first request in the request queue, and obtains the initial state, target state, constraint conditions and result display format after parsing the request; if the request queue is not empty, judge whether the data query is a template library One of the functions, if it is, the execution sub-module directly obtains its service call sequence, and then go to
步骤6:服务组合引擎根据初始状态和目标状态,调用服务代理子模块获得的当前能够使用的基本数据查询服务信息,逐一处理初始状态中的查询过程,在满足中间过程约束条件的前提下,为每一查询过程进行服务组合,生成服务调用序列;如果服务组合失败,则转到步骤10;Step 6: According to the initial state and the target state, the service composition engine calls the basic data that can be used currently obtained by the service agent sub-module to query service information, and processes the query process in the initial state one by one. On the premise of satisfying the constraints of the intermediate process, for Each query process performs service combination to generate a service call sequence; if the service combination fails, go to step 10;
步骤7:由定制存储模块存储对应的功能及服务调用序列到模板库;Step 7: Store the corresponding function and service call sequence into the template library by the customized storage module;
步骤8:执行子模块按照服务调用流程序列的顺序调用基本数据查询服务库中的基本数据查询服务,并协调服务间输入输出关系;如果出现异常则转到步骤10;Step 8: The execution sub-module calls the basic data query service in the basic data query service library according to the order of the service call process sequence, and coordinates the input and output relationship between services; if there is an exception, go to step 10;
步骤9:由结果生成子模块按照请求所描述结果显示格式生成最终数据查询分析结果,向客户端返回应答,进行结果显示;Step 9: The result generation sub-module generates the final data query and analysis result according to the result display format described in the request, returns a response to the client, and displays the result;
步骤10:由异常处理子模块生成失败信息,并返回给客户端显示。Step 10: The exception handling sub-module generates failure information and returns it to the client for display.
所述步骤1中的对数据进行抽象分类是按照面向对象的思想,对数据进行特征提取;将抽象出的领域数据对象模型所包含的属性作为对象模型的属性,每个领域数据对象模型以客户端脚本的方式被编写为可定制查询客户端的可编辑控件,向应用系统描述自身的数据查询需求。The abstract classification of the data in the step 1 is to extract the features of the data according to the object-oriented thinking; the attributes contained in the abstracted domain data object model are used as the attributes of the object model, and each domain data object model is based on the customer The client-side script is written as an editable control that can customize the query client, and describes its own data query requirements to the application system.
所述步骤1中的领域数据对象模型库包括逻辑控件,用运算及逻辑操作对两个或多个领域数据对象属性之间的关联关系进行描述,每个逻辑控件以脚本方式被编写。The domain data object model library in the step 1 includes logic controls, which describe the relationship between two or more domain data object attributes by means of operations and logic operations, and each logic control is written in a script.
所述步骤1中的基本数据查询服务库的基本数据查询服务与领域数据对象模型库的领域数据对象模型一一对应,提供领域数据对象查询的原子操作,仅通过对应的领域数据对象模型的一个或几个属性,从后台数据库中获得具有此属性的数据对象实例的集合。The basic data query service of the basic data query service library in the step 1 corresponds to the domain data object model of the domain data object model library one by one, and provides the atomic operation of the domain data object query, only through one of the corresponding domain data object models or several attributes, and obtain a collection of data object instances with this attribute from the background database.
所述步骤1中的基本数据查询服务库的每个基本数据查询服务包含一个查询关联属性的原子操作,获得对应领域数据对象的关联数据对象及其属性的原子操作,输出关联数据对象及关联数据对象的属性集合。Each basic data query service of the basic data query service library in step 1 includes an atomic operation for querying associated attributes, an atomic operation for obtaining associated data objects and their attributes of corresponding domain data objects, and outputting associated data objects and associated data A collection of properties for an object.
所述步骤2中的定制数据查询,包括如下步骤:The customized data query in the step 2 includes the following steps:
步骤a:在可定制查询客户端的页面上从领域数据模型库的控件中选择各可编辑控件,指定本次查询的各查询内容数据对象;选择各可编辑控件的属性作为本次数据查询的结果数据列表的一列;Step a: On the page of the customizable query client, select each editable control from the controls in the domain data model library, specify each query content data object of this query; select the properties of each editable control as the result of this data query A column of the data list;
步骤b:在定制页面上从领域数据模型库的可视控件中选择各可编辑控件,指定本次查询的条件数据对象;选择各可编辑控件的属性并为该属性选择、填写属性值,并指定此次选择的查询条件用于的查询内容数据对象;Step b: Select each editable control from the visual controls of the domain data model library on the customization page, specify the conditional data object for this query; select the attribute of each editable control, select and fill in the attribute value for this attribute, and Specify the query content data object used for the query condition selected this time;
步骤c:排列选择的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列;Step c: Arrange the sequence of the selected control properties, fill in the data list header of the custom page result, and specify the sorting column of the result list;
步骤d:命名新定制的数据查询,保存本次定制,并命名本次定制对应的模板。Step d: Name the newly customized data query, save this customization, and name the template corresponding to this customization.
所述步骤5中的初始状态,由查询过程集合、查询结果和服务调用序列组成;查询过程集合包括本次用户请求需要查询的数据对象的查询过程,查询结果和服务调用序列为空。The initial state in step 5 is composed of query process set, query result and service call sequence; the query process set includes the query process of the data object to be queried in this user request, and the query result and service call sequence are empty.
所述步骤5中的目标状态,由查询过程集合、查询结果和服务调用序列组成;查询过程集合为空,查询结果为查询过程集合中每个查询过程的目标数据对象,服务调用序列为一段空闲的内存空间。The target state in the step 5 is composed of query process set, query result and service call sequence; the query process set is empty, the query result is the target data object of each query process in the query process set, and the service call sequence is an idle period memory space.
所述步骤6中的服务组合,包括如下步骤:The service combination in the step 6 includes the following steps:
step1:服务组合引擎提取本次服务组合过程的源状态,包括查询过程的目标数据对象、查询条件集合和空的服务调用序列;添加源状态至用于临时存储数据的可用状态队列;Step1: The service composition engine extracts the source state of this service composition process, including the target data object of the query process, query condition set and empty service call sequence; add the source state to the available state queue for temporary storage of data;
step2:如果可用状态队列为空,则输出服务组合失败信息,服务组合过程结束;否则转step3;Step2: If the available status queue is empty, then output service combination failure information, and the service combination process ends; otherwise, go to step3;
step3:从可用状态队列中取出位于队列头的可用状态作为当前状态;Step3: Take the available state at the head of the queue from the available state queue as the current state;
step4:如果当前状态的查询条件为空,则输出当前状态的服务调用序列,服务组合过程结束;否则将当前状态的查询条件存储于存储查询条件的临时队列;Step4: If the query condition of the current state is empty, output the service call sequence of the current state, and the service composition process ends; otherwise, store the query condition of the current state in the temporary queue for storing the query condition;
step5:如果临时队列为空,转step2;否则转step6;Step5: If the temporary queue is empty, go to step2; otherwise, go to step6;
step6:从临时队列中取出位于队列头的查询条件作为当前条件,搜索能用于当前条件的基本数据查询服务并查找其对应的原子操作,如果所有基本数据查询服务都已调用过,则转step2;否则转step7;Step6: Take the query condition at the head of the queue from the temporary queue as the current condition, search for the basic data query service that can be used for the current condition and find its corresponding atomic operation, if all the basic data query services have been called, go to step2 ;Otherwise go to step7;
step7:把查找到的原子操作以等价关系添加到当前状态的服务调用序列;Step7: Add the found atomic operation to the service call sequence of the current state in an equivalence relationship;
step8:针对当前状态的当前查询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列,转step5。Step8: According to the current query condition of the current state, generate the successor state of the current state, and add the successor state to the available state queue, then go to step5.
所述step8生成当前状态的后继状态时,若当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,并将删除当前条件后的状态作为后继状态加入可用状态队列,生成完毕;否则,调用当前条件对应的基本数据查询服务的关联查询原子操作,获得关联属性集合,分别添加每个关联属性及属性值来源,并从当前状态中删除当前条件并作为后继状态加入可用状态队列;接着处理下一个关联属性并把所有的后继状态加入可用状态队列,直至关联属性集合中所有关联属性都已生成后继状态。When the step8 generates the successor state of the current state, if the domain data object corresponding to the current condition is the target object of the query process, delete the current condition from the current state, and add the state after deleting the current condition as the successor state to the available state Queue, generated; otherwise, call the associated query atomic operation of the basic data query service corresponding to the current condition, obtain the set of associated attributes, add each associated attribute and the source of the attribute value, and delete the current condition from the current state as a successor state Join the available state queue; then process the next associated attribute and add all subsequent states to the available state queue until all associated attributes in the associated attribute set have generated subsequent states.
一种基于服务组合的可定制查询平台,其特征在于,包括如下模块:A customizable query platform based on service composition, characterized in that it includes the following modules:
建立的可定制查询客户端和数据查询服务器;可定制查询客户端,包括领域数据对象模型库,用来对领域内数据进行抽象分类,存入为所建立的模型构建的可编辑控件;数据查询服务器,包括基本数据查询服务库,构建并存储可编辑控件对应的基本数据查询服务;The established customizable query client and data query server; the customizable query client includes the domain data object model library, which is used to abstract and classify the data in the domain and store them in the editable control built for the established model; data query The server, including the basic data query service library, builds and stores the basic data query service corresponding to the editable control;
可定制查询客户端还包括模板库、定制结果封装子模块;The customizable query client also includes a template library and a custom result encapsulation sub-module;
模板库,用来存储已有的定制功能,初始化模板库后,用户把自身个性化需求与模板库中的已有功能相比较,如果存在满足用户此次需求的功能的模版,从模板库中选择特定的功能的模板,页面展示为此功能对应定制的查询内容、查询条件、结果显示格式,并调整显示格式,重新填写定制的查询条件属性值,构造相同功能的新请求;否则由领域数据对象模型库和定制结果封装子模块定制数据查询;The template library is used to store the existing customized functions. After the template library is initialized, the user compares his individual needs with the existing functions in the template library. Select a template for a specific function, and the page display corresponds to the customized query content, query conditions, and result display format for this function, and adjust the display format, refill the custom query condition attribute value, and construct a new request for the same function; otherwise, the domain data Object model library and custom result encapsulation sub-module to customize data query;
定制结果封装子模块,用来封装用户定制结果;如果本次定制来源于模板库,设定模板的标识位表示来源于已有定制模板,否则设定相应的标识位表示为新定制;发送至数据查询服务器的请求队列管理子模块;Customized result encapsulation sub-module, which is used to encapsulate user-customized results; if this customization comes from the template library, set the identification bit of the template to indicate that it comes from an existing customized template, otherwise set the corresponding identification bit to indicate that it is a new customization; send to The request queue management sub-module of the data query server;
数据查询服务器还包括请求队列管理子模块、请求解析子模块、服务代理子模块、服务组合引擎、定制存储模块、执行子模块、结果生成子模块和异常处理子模块;The data query server also includes a request queue management submodule, a request parsing submodule, a service proxy submodule, a service composition engine, a custom storage module, an execution submodule, a result generation submodule and an exception handling submodule;
请求队列管理子模块,请求队列管理子模块接收客户端发送的数据查询请求,并加入到请求队列中;The request queue management sub-module, the request queue management sub-module receives the data query request sent by the client and adds it to the request queue;
请求解析子模块,取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式;如果请求队列不为空,判断此次数据查询是否模板库中功能的一种,如果是,则由执行子模块直接获得其服务调用序列,否则调用服务组合引擎进行服务组合;如果请求队列为空,则发送到异常处理子模块处理;The request parsing sub-module takes out the first request in the request queue, and obtains the initial state, target state, constraints and result display format after parsing the request; if the request queue is not empty, judge whether the data query is a function in the template library If it is, the execution sub-module will directly obtain its service call sequence, otherwise it will call the service composition engine for service composition; if the request queue is empty, it will be sent to the exception handling sub-module for processing;
服务代理子模块,获得当前能够使用的基本数据查询服务信息;The service agent sub-module obtains the basic data query service information that can be used currently;
服务组合引擎,根据初始状态和目标状态,调用当前能够使用的基本数据查询服务信息,逐一处理初始状态中的查询过程,在满足中间过程约束条件的前提下,为每一查询过程进行服务组合,生成服务调用序列;如果服务组合失败,则发送到异常处理子模块处理;The service composition engine, according to the initial state and the target state, invokes the basic data that can be used currently to query service information, processes the query process in the initial state one by one, and performs service composition for each query process on the premise of satisfying the constraints of the intermediate process. Generate a service call sequence; if the service combination fails, it will be sent to the exception handling sub-module for processing;
定制存储模块,存储对应的功能及服务调用序列到模板库;Customize the storage module, store the corresponding function and service call sequence to the template library;
执行子模块,按照服务调用流程序列的顺序调用基本数据查询服务库中的基本数据查询服务,并协调服务间输入输出关系;如果出现异常,则发送到异常处理子模块处理;The execution sub-module calls the basic data query service in the basic data query service library according to the order of the service call process sequence, and coordinates the input and output relationship between services; if an exception occurs, it is sent to the exception handling sub-module for processing;
结果生成子模块,按照请求所描述结果显示格式生成最终数据查询分析结果,向客户端返回应答,进行结果显示;The result generation sub-module generates the final data query and analysis results according to the result display format described in the request, returns a response to the client, and displays the results;
异常处理子模块,生成失败信息,并返回给客户端显示。The exception handling sub-module generates failure information and returns it to the client for display.
所述领域数据对象模型库中,对数据进行抽象分类是按照面向对象的思想,对数据进行特征提取;将抽象出的领域数据对象模型所包含的属性作为对象模型的属性,每个领域数据对象模型以客户端脚本的方式被编写为可定制查询客户端的可编辑控件,向应用系统描述自身的数据查询需求。In the domain data object model library, the abstract classification of data is to extract the features of the data according to the idea of object-oriented; the attributes contained in the abstracted domain data object model are used as the attributes of the object model, and each domain data object The model is written in the form of client script as an editable control that can be customized to query the client, and describes its own data query requirements to the application system.
所述领域数据对象模型库包括逻辑控件,用运算及逻辑操作对两个或多个领域数据对象属性之间的关联关系进行描述,每个逻辑控件以脚本方式被编写。The domain data object model library includes logic controls, which use operations and logic operations to describe the relationship between two or more domain data object attributes, and each logic control is written in a script.
所述基本数据查询服务库的基本数据查询服务与领域数据对象模型库的领域数据对象模型一一对应,提供领域数据对象查询的原子操作,仅通过对应的领域数据对象模型的一个或几个属性,从后台数据库中获得具有此属性的数据对象实例的集合。The basic data query service of the basic data query service library is in one-to-one correspondence with the domain data object models of the domain data object model library, providing atomic operations for domain data object query, and only through one or several attributes of the corresponding domain data object model , to obtain a collection of data object instances with this property from the background database.
所述基本数据查询服务库的每个基本数据查询服务包含一个查询关联属性的原子操作,获得对应领域数据对象的关联数据对象及其属性的原子操作,输出关联数据对象及关联数据对象的属性集合。Each basic data query service of the basic data query service library includes an atomic operation for querying associated attributes, an atomic operation for obtaining associated data objects and their attributes of corresponding domain data objects, and outputting associated data objects and attribute sets of associated data objects .
所述可定制查询客户端进行的定制数据查询:The customized data query performed by the customizable query client:
在可定制查询客户端的页面上从领域数据模型库的控件中选择各可编辑控件,指定本次查询的各查询内容数据对象;选择各可编辑控件的属性作为本次数据查询的结果数据列表的一列;On the page of the customizable query client, select each editable control from the controls in the domain data model library, and specify each query content data object of this query; select the properties of each editable control as the result data list of this data query a row;
在定制页面上从领域数据模型库的可视控件中选择各可编辑控件,指定本次查询的条件数据对象;选择各可编辑控件的属性并为该属性选择、填写属性值,并指定此次选择的查询条件用于的查询内容数据对象;On the customization page, select each editable control from the visual controls in the domain data model library, and specify the conditional data object for this query; select the attribute of each editable control, select and fill in the attribute value for this attribute, and specify this time The query content data object for the selected query condition;
排列选择的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列;Arrange the order of the selected control properties, fill in the data list header of the custom page result, and specify the sorting column of the result list;
命名新定制的数据查询,保存本次定制,并命名本次定制对应的模板。Name the newly customized data query, save this customization, and name the template corresponding to this customization.
所述请求解析子模块得到的初始状态,由查询过程集合、查询结果和服务调用序列组成;查询过程集合包括本次用户请求需要查询的数据对象的查询过程,查询结果和服务调用序列为空。The initial state obtained by the request parsing sub-module is composed of query process set, query result and service call sequence; the query process set includes the query process of the data object to be queried in this user request, and the query result and service call sequence are empty.
所述请求解析子模块得到的目标状态,由查询过程集合、查询结果和服务调用序列组成;查询过程集合为空,查询结果为查询过程集合中每个查询过程的目标数据对象,服务调用序列为一段空闲的内存空间。The target state obtained by the request parsing sub-module is composed of query process set, query result and service call sequence; the query process set is empty, and the query result is the target data object of each query process in the query process set, and the service call sequence is A free memory space.
所述服务组合引擎提取本次服务组合过程的源状态,包括查询过程的目标数据对象、查询条件集合和空的服务调用序列;添加源状态至用于临时存储数据的可用状态队列;The service composition engine extracts the source state of this service composition process, including the target data object of the query process, the query condition set and the empty service call sequence; adding the source state to the available state queue for temporarily storing data;
如果可用状态队列为空,则输出服务组合失败信息,服务组合过程结束;否则:If the available status queue is empty, output service composition failure information, and the service composition process ends; otherwise:
从可用状态队列中取出位于队列头的可用状态作为当前状态;Take the available state at the head of the queue from the available state queue as the current state;
如果当前状态的查询条件为空,则输出当前状态的服务调用序列,服务组合过程结束;否则将当前状态的查询条件存储于存储查询条件的临时队列;If the query condition of the current state is empty, output the service call sequence of the current state, and the service combination process ends; otherwise, store the query condition of the current state in the temporary queue for storing the query condition;
如果临时队列为空,对可用状态队列是否为空进行判断并处理;否则:If the temporary queue is empty, judge and process whether the available state queue is empty; otherwise:
从临时队列中取出位于队列头的查询条件作为当前条件,搜索能用于当前条件的基本数据查询服务并查找其对应的原子操作,如果所有基本数据查询服务都已调用过,则对可用状态队列是否为空进行判断并处理;否则:Take the query condition at the head of the queue from the temporary queue as the current condition, search for the basic data query service that can be used for the current condition and find its corresponding atomic operation, if all the basic data query services have been called, then the available state queue Whether it is empty is judged and processed; otherwise:
把查找到的原子操作以等价关系添加到当前状态的服务调用序列;Add the found atomic operation to the service call sequence of the current state in an equivalence relationship;
针对当前状态的当前查询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列,对临时队列是否为空进行判断并处理。According to the current query condition of the current state, the successor state of the current state is generated, and the successor state is added to the available state queue, and whether the temporary queue is empty is judged and processed.
所述服务组合引擎的服务组合过程生成当前状态的后继状态,若当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,并将删除当前条件后的状态作为后继状态加入可用状态队列,生成完毕;否则,调用当前条件对应的基本数据查询服务的关联查询原子操作,获得关联属性集合,分别添加每个关联属性及属性值来源,并从当前状态中删除当前条件并作为后继状态加入可用状态队列;接着处理下一个关联属性并把所有的后继状态加入可用状态队列,直至关联属性集合中所有关联属性都已生成后继状态。The service composition process of the service composition engine generates the successor state of the current state. If the domain data object corresponding to the current condition is the target object of the query process, the current condition is deleted from the current state, and the state after the deletion of the current condition is used as The subsequent state is added to the available state queue, and the generation is completed; otherwise, call the associated query atomic operation of the basic data query service corresponding to the current condition to obtain the set of associated attributes, add each associated attribute and the source of the attribute value, and delete the current state from the current state condition and add it to the available state queue as a successor state; then process the next associated attribute and add all the successor states to the available state queue until all associated attributes in the associated attribute set have generated successor states.
本发明一种基于服务组合的可定制查询方法与平台,优点在于:The invention provides a customizable query method and platform based on service combination, which has the advantages of:
(1)本发明采用由用户主动制定一次查询的查询目的、查询条件及查询结果显示格式的方式可有效应对用户多样化的数据查询分析需求,允许用户随时根据自身需求对查询过程进行修改,而无需改变系统结构。(1) The present invention adopts the method that the user actively formulates the query purpose, query conditions and query result display format of a query, which can effectively deal with the user's diverse data query and analysis needs, allowing the user to modify the query process at any time according to their own needs, and No need to change the system structure.
(2)本发明采用数据查询基本服务建立方式,以领域数据抽象建模为基础,运用面向对象的思想为每种领域数据对象建立一个独立的数据查询基本服务,符合大众思维逻辑;同时在基本服务范围内提供原子操作,代表不同的输入-输出对,使服务内部不同的查询方式清晰区分;原子操作建立不仅包括由领域数据对象的一种属性查询具有该属性值的所有领域数据对象实例,而且包括由通常作为联合属性的多个属性查询具有这些属性值的所有领域数据对象实例,避免了在仅提供单一属性查询时对后台数据库的多次查询操作以及对多个数据查询结果取交集的操作,提高查询效率。(2) The present invention adopts the method of establishing basic data query services, based on abstract modeling of domain data, and uses object-oriented thinking to establish an independent basic data query service for each domain data object, which is in line with the logic of public thinking; Atomic operations are provided within the scope of the service, representing different input-output pairs, so that different query methods within the service can be clearly distinguished; the creation of atomic operations not only includes querying all domain data object instances with this attribute value by an attribute of the domain data object, And it includes querying all domain data object instances with these attribute values by multiple attributes that are usually used as joint attributes, avoiding multiple query operations on the background database and intersection of multiple data query results when only a single attribute query is provided operation to improve query efficiency.
(3)基于服务组合技术构造数据查询处理逻辑,在给定服务组合流程的初始状态和目标状态的条件下,可以动态生成服务合成调用序列,自动应对定制客户端的多变数据查询请求。(3) Construct data query processing logic based on service composition technology. Given the initial state and target state of the service composition process, it can dynamically generate service composition call sequences, and automatically respond to the variable data query requests of customized clients.
附图说明Description of drawings
图1为本发明一种基于服务组合的可定制查询方法的方法流程图;Fig. 1 is a method flowchart of a customizable query method based on service composition in the present invention;
图2为本发明一种基于服务组合的可定制查询平台的平台结构图;Fig. 2 is a platform structure diagram of a customizable query platform based on service combination in the present invention;
图3为本发明一种基于服务组合的可定制查询方法的定制数据查询功能的流程图;Fig. 3 is a flow chart of the customized data query function of a customizable query method based on service combination in the present invention;
图4为本发明一种基于服务组合的可定制查询方法的用户定制结果xml的形式化描述图;FIG. 4 is a formalized description diagram of the user-customized result xml of a service-combination-based customizable query method in the present invention;
图5为本发明一种基于服务组合的可定制查询方法的服务组合流程图;Fig. 5 is a service composition flowchart of a customizable query method based on service composition in the present invention;
图6为本发明一种基于服务组合的可定制查询方法的生成后继状态的流程图;FIG. 6 is a flow chart of generating a subsequent state of a customizable query method based on service composition in the present invention;
图7为本发明一种基于服务组合的可定制查询方法的实施例中的xml形式的用户定制结果;FIG. 7 is a user customization result in xml form in an embodiment of a service composition-based customizable query method of the present invention;
图8为本发明一种基于服务组合的可定制查询方法的实施例中的服务调用序列生成过程的状态转换图。FIG. 8 is a state transition diagram of a service call sequence generation process in an embodiment of a service composition-based customizable query method of the present invention.
具体实施方式Detailed ways
本发明提出一种基于服务组合的可定制查询方法与平台,支持用户向系统描述自身需求,系统根据用户需求动态组装基本数据查询服务,生成能够满足用户需求的基本数据查询服务调用序列构成的组合服务,执行组合服务并按照用户期望展示数据查询分析结果。The present invention proposes a customizable query method and platform based on service combination, which supports users to describe their own needs to the system, and the system dynamically assembles basic data query services according to user needs, and generates a combination of basic data query service call sequences that can meet user needs Services, execute combined services and display data query and analysis results according to user expectations.
一种基于服务组合的可定制查询平台,如图2所示,包括可定制查询客户端和数据查询服务器两部分。A customizable query platform based on service composition, as shown in Figure 2, includes two parts: a customizable query client and a data query server.
可定制数据查询客户端包括模板库、领域数据对象模型库、定制结果封装子模块。The customizable data query client includes a template library, a domain data object model library, and a custom result encapsulation sub-module.
模板库用于向用户提供该系统存储的典型数据查询功能。模板库是平台中已有的数据查询功能的集合,来源于用户定制存储子模块读取的存储于后台数据库的系统前期成功处理过的用户定制。用户选择模板库中一项功能,使页面显示为此项功能对应的查询内容、查询条件、查询结果格式的展示。The template library is used to provide users with typical data query functions stored in the system. The template library is a collection of existing data query functions in the platform, which is derived from the user customizations read by the user customization storage sub-module and stored in the background database that have been successfully processed in the early stage of the system. The user selects a function in the template library, so that the page is displayed as a display of the query content, query conditions, and query result formats corresponding to this function.
领域数据对象模型库提供领域数据对象模型可视化控件及逻辑控件。The domain data object model library provides domain data object model visualization controls and logic controls.
定制结果封装子模块把用户在客户端上以可视方式定制的个性化查询需求转换为形式化描述。The customized result encapsulation sub-module transforms the personalized query requirements customized by the user on the client side into a formal description.
模板库提供平台中已有的数据查询功能,用户查询时先查询模板库中是否有符合自身需求的数据查询功能模板,有满足需求的模板则选取此模板,修改模板中相应内容,输出用户定制结果至定制结果封装子模块,定制结果封装子模块把用户定制的可视化结果封装为xml描述,并作为HTTP请求的参数发送给数据查询服务器;若没有满足需求的模板,则转向领域数据对象模型库,用户从领域数据对象模型库分别选择查询内容、查询条件对应的领域数据对象控件及其属性,并在需要时填写属性值,指定数据查询分析结果的显示格式,输出到定制结果封装子模块,并仍由定制结果封装子模块把用户定制的可视化结果封装为xml描述,并作为HTTP请求的参数发送给数据查询服务器。The template library provides the existing data query function in the platform. When users query, they first check whether there is a data query function template that meets their own needs in the template library. If there is a template that meets the needs, select this template, modify the corresponding content in the template, and output user-defined From the result to the custom result encapsulation sub-module, the custom result encapsulation sub-module encapsulates the user-customized visualization result into an xml description, and sends it to the data query server as an HTTP request parameter; if there is no template that meets the requirements, it will turn to the domain data object model library , the user selects the query content, the corresponding domain data object control and its properties corresponding to the query conditions from the domain data object model library, and fills in the property values when necessary, specifies the display format of the data query analysis results, and outputs them to the customized result packaging sub-module. And still, the customized result encapsulation sub-module encapsulates the user-customized visualization result into an xml description, and sends it to the data query server as a parameter of the HTTP request.
数据查询服务器包括服务代理子模块、请求队列管理子模块、请求解析子模块、服务组合引擎、执行子模块、结果生成子模块、定制存储子模块、异常处理子模块和基本数据查询服务库。其中:The data query server includes a service proxy submodule, a request queue management submodule, a request parsing submodule, a service composition engine, an execution submodule, a result generation submodule, a custom storage submodule, an exception handling submodule and a basic data query service library. in:
服务代理子模块用于管理领域数据查询基本服务。The service agent sub-module is used to manage the basic services of domain data query.
基本数据查询服务库的每个基本数据查询服务需要向服务代理子模块注册,提供自身对特定的领域对象模型进行查询的信息,并以可接受参数的方式,描述本服务提供的对该类领域数据对象模型的全部基本查询操作。基本数据查询服务可以在必要时添加,需保证新的基本数据查询服务与原有基本数据查询服务不存在冲突,且与前述基本数据查询服务的发布规范一致的方式发布到服务代理子模块。Each basic data query service in the basic data query service library needs to register with the service agent sub-module, provide its own query information for a specific domain object model, and describe the domain provided by this service in the form of acceptable parameters All basic query operations of the data object model. The basic data query service can be added when necessary. It is necessary to ensure that the new basic data query service does not conflict with the original basic data query service, and is released to the service agent sub-module in a manner consistent with the release specification of the aforementioned basic data query service.
请求队列管理子模块用于接收数据查询客户端发送的数据查询分析请求,并缓存这些请求。The request queue management sub-module is used to receive data query analysis requests sent by data query clients, and cache these requests.
请求解析子模块用于解析数据查询分析请求,将可定制查询客户端发送的请求所携带的用户定制结果转换为服务组合引擎可理解数据查询请求。The request parsing sub-module is used to parse the data query and analysis request, and convert the user-customized result carried in the request sent by the customizable query client into a data query request understandable by the service composition engine.
服务组合引擎用于结合服务代理子模块提供的可用服务的细节,根据请求解析模块传递的解析结果,针对结果中包含的查询过程逐一生成可满足需求的服务调用序列。The service composition engine is used to combine the details of the available services provided by the service proxy sub-module, and according to the analysis results delivered by the request analysis module, generate service call sequences that can meet the requirements one by one for the query process included in the results.
执行子模块用于按照服务组合引擎生成的服务调用序列,依次执行序列中的服务。The execution sub-module is used to sequentially execute the services in the sequence according to the service invocation sequence generated by the service composition engine.
结果生成子模块用于把执行子模块输出的结果根据用户定制的结果格式生成HTTP应答。The result generation sub-module is used to generate an HTTP response based on the result output by the execution sub-module according to the user-defined result format.
定制存储子模块用于存储本次用户定制的功能,及用户定制功能的处理方式。The customized storage sub-module is used to store the functions customized by the user this time, and the processing method of the customized functions.
异常处理子模块用于在请求解析模块无法解析数据查询请求、服务组合引擎无法生成满足用户需求的服务序列、执行模块执行服务失败时,向数据查询客户端返回出错信息。The exception handling sub-module is used to return an error message to the data query client when the request parsing module cannot parse the data query request, the service composition engine cannot generate a service sequence that meets the user's needs, and the execution module fails to execute the service.
基本数据查询服务库中的每个基本数据查询服务向服务代理子模块提供自身信息,包括对应的领域数据对象类型和可提供的原子操作。服务代理子模块将其获得的所有基本数据查询服务信息维护成当前可用的基本数据查询服务列表,供服务组合引擎查询。Each basic data query service in the basic data query service library provides its own information to the service agent sub-module, including the corresponding domain data object type and available atomic operations. The service agent sub-module maintains all the basic data query service information obtained by it into a list of currently available basic data query services for query by the service composition engine.
数据查询处理服务器的请求队列管理子模块接收到定制结果封装子模块发送的数据查询请求,并缓存入请求队列。请求解析子模块取出位于请求队列头的请求,并从中解析出本次请求的初始状态和目标状态,把解析结果发送给服务组合引擎。服务组合引擎获得服务代理子模块提供的当前可用的基本数据查询服务的信息,根据请求的初始状态和目标状态,生成能够处理本次数据查询请求的服务调用序列,并将生成结果交由执行子模块执行。执行子模块按照服务组合引擎生成的服务调用序列顺序执行各基本数据查询服务,向结果生成子模块输出包含用户期望结果的数据对象实例集合。结果生成子模块从执行模块输出的结果中提取用户定制结果中指定的待显示内容,并将待显示内容按照用户定制时指定的排序方式排序,生成应答HTML页面,并向可定制数据查询客户端返回HTTP应答。在请求解析模块无法解析数据查询请求、服务组合引擎无法生成满足用户需求的服务序列、执行模块执行服务失败时,异常处理子模块将捕获这些失败信息,数据查询客户端返回出错信息。The request queue management sub-module of the data query processing server receives the data query request sent by the customized result encapsulation sub-module, and caches it into the request queue. The request parsing sub-module takes out the request at the head of the request queue, parses out the initial state and target state of the request, and sends the parsing result to the service composition engine. The service composition engine obtains the information of the currently available basic data query services provided by the service agent sub-module, generates a service call sequence capable of processing this data query request according to the initial state and target state of the request, and delivers the generated results to the execution sub-module module execution. The execution sub-module executes each basic data query service sequentially according to the service call sequence generated by the service composition engine, and outputs a set of data object instances containing user expected results to the result generation sub-module. The result generation sub-module extracts the content to be displayed specified in the user-customized result from the result output by the execution module, sorts the content to be displayed according to the sorting method specified by the user during customization, generates a response HTML page, and queries the client for customizable data Return an HTTP response. When the request parsing module cannot parse the data query request, the service composition engine cannot generate a service sequence that meets the user's needs, and the execution module fails to execute the service, the exception handling sub-module will capture these failure information, and the data query client will return an error message.
一种基于服务组合的可定制查询方法,如图1所示,包括如下步骤:A customizable query method based on service composition, as shown in Figure 1, includes the following steps:
步骤一:领域分析,对领域内数据进行抽象分类,为所建立的模型构建可定制查询客户端的可编辑控件,存入领域数据对象模型库,并构建对应的基本数据查询服务库。基本数据查询服务库中的每一个基本数据查询服务对应一个领域数据对象模型库中对象控件。基本数据查询服务是多个原子操作的集合。原子操作代表一个输入-输出对,输入是领域数据对象模型的一个或者几个属性,输出是具有指定输入属性值的领域数据对象模型的实例的集合。原子操作包括为对象控件的每一个属性提供根据该属性查询领域数据对象实例,和同时根据几个属性联合获得数据对象实例两种方式。其中后者所述的联合的属性是在进行需求分析时考虑到的、经常被联合起来作为一次查询条件的属性。Step 1: domain analysis, abstract and classify the data in the domain, build editable controls that can customize the query client for the established model, store them in the domain data object model library, and build the corresponding basic data query service library. Each basic data query service in the basic data query service library corresponds to an object control in the domain data object model library. The basic data query service is a collection of multiple atomic operations. An atomic operation represents an input-output pair. The input is one or several attributes of the domain data object model, and the output is a collection of instances of the domain data object model with specified input attribute values. The atomic operation includes providing two methods for each attribute of the object control to query the domain data object instance according to the attribute, and to jointly obtain the data object instance according to several attributes at the same time. The combined attributes described in the latter are attributes that are taken into consideration during requirement analysis and are often combined as a query condition.
步骤二:初始化可定制查询客户端,即初始化可定制查询客户端的领域数据对象模型库和存储已有定制功能的模板库。领域数据对象模型库中的控件以脚本形式实现。已有定制功能模板库中的模板来源于历史成功处理过的数据查询分析请求;模板的信息存储于后台数据库,每个模板对应数据库中的一条记录,该记录包括模板ID、模板名称、模板对应的配置信息(即此模板对应的查询内容、查询条件)、模板功能对应的服务调用序列四部分。当用户打开定制的页面时,领域对象模型库的展现形式为可编辑控件的集合,已有定制功能模板库的展现形式为已有定制功能模板名称的集合。Step 2: Initialize the customizable query client, that is, initialize the domain data object model library of the customizable query client and the template library that stores existing customized functions. Controls in the domain data object model library are implemented as scripts. The templates in the existing customized function template library come from the data query and analysis requests that have been successfully processed in history; the template information is stored in the background database, and each template corresponds to a record in the database, which includes template ID, template name, and template corresponding There are four parts: the configuration information of the template (that is, the query content and query conditions corresponding to this template), and the service call sequence corresponding to the template function. When the user opens the customized page, the display form of the domain object model library is a collection of editable controls, and the display form of the existing customized function template library is a collection of existing customized function template names.
用户把自身个性化需求与模板库中的已有功能相比较,如果存在满足用户此次需求的功能,则从模板库中选择特定模板名称,读取模板名称对应的模板ID以及模板配置信息中该模板对应定制的查询内容、查询条件、结果显示格式,并生成查询内容对应的可编辑控件及属性,查询条件对应的可编辑控件及属性,结果显示列表的表头。用户通过调整结果显示格式,重新填写定制的查询条件属性的值,构造出相同功能的新查询请求。The user compares his personalized needs with the existing functions in the template library. If there is a function that meets the user's needs this time, select a specific template name from the template library, read the template ID corresponding to the template name and the template configuration information. The template corresponds to the customized query content, query conditions, and result display format, and generates editable controls and properties corresponding to the query content, editable controls and properties corresponding to the query conditions, and the header of the result display list. The user constructs a new query request with the same function by adjusting the display format of the result and refilling the value of the customized query condition attribute.
如果不存在满足用户此次需求的功能,则由可定制查询客户端定制数据查询,定制一个全新的数据查询功能,如图3所示,包括如下步骤:If there is no function that meets the needs of the user, the customizable query client can customize the data query and customize a new data query function, as shown in Figure 3, including the following steps:
A)定制查询内容。在可定制查询客户端的页面上从领域数据模型库控件中选择各可编辑控件,拖拽入查询内容定制框从而指定本次查询的各查询内容数据对象,查询结果数据来源于查询内容数据对象的部分属性,勾选各可编辑控件的属性作为本次数据查询的结果数据列表的一列,即指明查询结果数据是查询内容数据对象的哪些属性。A) Customize the query content. On the page of the customizable query client, select each editable control from the domain data model library control, drag and drop it into the query content customization box to specify each query content data object of this query, and the query result data comes from the query content data object Some attributes, check the attributes of each editable control as a column of the result data list of this data query, that is, indicate which attributes of the query content data object the query result data is.
B)定制查询条件。在定制页面上从领域数据模型库可视控件中选择各可编辑控件,拖拽入查询条件定制框从而指定本次查询的条件数据对象,勾选这些可编辑控件的属性并为该属性选择、填写属性值,即指定作为查询条件的参数来源于何种数据对象的何种属性,且确定这种属性的属性值。指定此次选择的查询条件用于哪个查询内容数据对象,用箭头从查询条件数据对象控件指向查询内容数据对象控件以表示关联。B) Customize query conditions. On the customization page, select each editable control from the visual control of the domain data model library, drag and drop it into the query condition customization box to specify the condition data object of this query, check the properties of these editable controls and select, Fill in the attribute value, that is, specify which attribute of the data object the parameter used as the query condition comes from, and determine the attribute value of this attribute. Specify which query content data object the selected query condition is used for, and use an arrow to point from the query condition data object control to the query content data object control to indicate association.
C)定制结果显示格式。按用户偏好排列A)中勾选的控件属性的先后顺序,填充定制页面结果的数据列表表头,并指定结果列表的排序列,把排序列放在第一列。C) Customize the display format of the results. Arrange the order of the control attributes checked in A) according to user preference, fill in the data list header of the custom page result, and specify the sorting column of the result list, and put the sorting column in the first column.
D)为新定制的数据查询功能命名。用户勾选保存本次定制按钮,并在模板名称文本框中输入本次定制的功能对应的模板的名称。D) Name the new custom data query function. The user checks the button of saving this customization, and enters the name of the template corresponding to the function customized this time in the template name text box.
步骤三:用户定制过程完毕,由可定制查询客户端的定制结果封装子模块封装用户定制结果。如果本次定制来源于模板库,设定相应标识位表示来源于已有定制模板,若否,则本次定制为一个全新的定制,设定相应的标识为表示为新定制。用户定制结果封装为一个xml文件,如附图4所示。Step 3: After the user customization process is completed, the customized result packaging sub-module of the customizable query client encapsulates the user customized results. If this customization comes from the template library, set the corresponding flag to indicate that it comes from an existing custom template, if not, then this customization is a brand new customization, and set the corresponding flag to indicate that it is a new customization. The user-customized result is packaged as an xml file, as shown in Figure 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请求至数据查询处理服务器。With request as the root node, it consists of several processes and a resultForm. process represents a query process, which consists of a goal node (that is, the query content) and a parameter (that is, the query condition) node. The goal node is composed of a data object node model, and the model node includes a name node of the model and multiple property nodes of the model. The property node contains the name of the property and the value of the property (empty here). The parameter node is composed of multiple model nodes. Each model node includes a name node of the model, and multiple property nodes of the model. The property node contains the name of the property and the value of the property, and the value is not empty. resultForm represents the result format, which contains several column nodes. Each column node contains the column name (that is, the header name of the data query result list) name, and the value of the column (that is, the data source of this column data) value. The encapsulation result is used as a parameter, and the data query http request is sent to the data query processing server.
步骤四:数据查询服务器的请求队列管理子模块接收客户端发送的数据查询请求,并加入到请求队列中。Step 4: The request queue management sub-module of the data query server receives the data query request sent by the client and adds it to the request queue.
步骤五:请求解析子模块取出请求队列中的第一个请求,解析该请求后获得初始状态,目标状态,约束条件及结果显示格式。初始状态,由当前待执行的查询过程集合、查询结果和服务调用序列三部分组成。待执行查询过程集合来源于本次数据查询请求携带的参数xml文件中,request节点下的process节点内容。由于生成组合服务的过程尚未执行,查询结果为空,服务调用序列为空。目标状态为由当前待执行的查询过程集合、查询结果和服务调用序列三部分组成。在目标状态下,所有查询过程已经处理完毕,待执行查询过程集合为空。查询结果表示每一个查询过程均被成功执行,每个查询过程的目标数据对象均可以成功查询获得,因此查询结果是每个查询过程的目标数据对象构成的集合。服务调用序列因为生成服务调用序列的服务组合过程尚未执行,待服务组合过程执行完毕后被填充,目前为一段空闲的内存空间。如果请求队列不为空,判断此次数据查询是来源于定制功能模板库中功能的一种,如果是,则直接根据来源的模板名称查询后台数据库,获得处理此模板对应的数据查询功能时需要的服务调用序列,转步骤八;否则调用服务组合引擎进行服务组合,如步骤六所示。Step 5: The request parsing sub-module takes out the first request in the request queue, and obtains the initial state, target state, constraint conditions and result display format after parsing the request. The initial state consists of three parts: the set of query procedures currently to be executed, the query results, and the sequence of service calls. The set of query processes to be executed comes from the content of the process node under the request node in the parameter xml file carried in this data query request. Since the process of generating the composite service has not yet been executed, the query result is empty and the sequence of service calls is empty. The target state is composed of three parts: the set of currently to-be-executed query procedures, the query results, and the sequence of service calls. In the target state, all query processes have been processed, and the set of query processes to be executed is empty. The query result indicates that each query process has been successfully executed, and the target data objects of each query process can be successfully queried, so the query result is a collection of target data objects of each query process. Service call sequence Because the service composition process that generates the service call sequence has not been executed, it will be filled after the service composition process is completed, and it is currently a free memory space. If the request queue is not empty, it is judged that the data query is from a function in the custom function template library. If so, the background database is directly queried according to the template name of the source to obtain the data query function corresponding to this template. service call sequence, go to
若发现队列为空即请求解析失败,则转步骤十。If the queue is found to be empty, that is, the request parsing fails, go to step ten.
步骤六:服务组合引擎子模块根据初始状态和目标状态,调用服务代理子模块获得当前可用的基本数据查询服务信息,逐一处理初始状态中的查询过程,在满足中间过程约束条件的前提下,为每一查询过程进行服务组合,生成服务调用序列。Step 6: According to the initial state and the target state, the service composition engine sub-module calls the service proxy sub-module to obtain the currently available basic data query service information, and handles the query process in the initial state one by one. Each query process performs service composition to generate a service invocation sequence.
生成服务调用序列,如图5所示,包括以下步骤:Generate a service call sequence, as shown in Figure 5, including the following steps:
step1:从查询过程中提取本次服务组合过程的源状态So,So包括此查询过程的目标数据对象,查询条件集合,空的服务调用序列。目标数据对象指明本查询过程需要获得的数据的领域数据对象类型;查询条件集合是用户在定制页面选择并填写的查询条件,且是关联于本查询过程目标数据对象的条件;初始状态下服务调用序列为空。添加So至用于临时存储数据的可用状态队列TmpS。Step1: Extract the source state So of this service composition process from the query process, So includes the target data object of this query process, query condition set, and empty service call sequence. The target data object indicates the domain data object type of the data that needs to be obtained in this query process; the query condition set is the query condition selected and filled in by the user on the customized page, and is the condition associated with the target data object of the query process; the service call in the initial state The sequence is empty. Add So to the available state queue TmpS for temporary storage of data.
step2:判断TmpS是否为空,若为空说明当前已经没有可供处理的状态,则输出服务组合失败信息,服务组合过程结束;若不为空,则转step3。Step2: Determine whether TmpS is empty, if it is empty, it means that there is no state available for processing, then output service combination failure information, and the service combination process ends; if it is not empty, go to step3.
step3:从于TmpS中取出位于队列头的可用状态作为当前状态S,TmpS中的下一可用状态被放置在队列头。Step3: Take the available state at the head of the queue from TmpS as the current state S, and the next available state in TmpS is placed at the head of the queue.
step4:判断当前状态S的查询条件是否为空,为空则输出当前状态S的服务调用序列,服务组合过程结束;不为空则将S的查询条件存储于临时存储查询条件的队列A。Step4: Determine whether the query condition of the current state S is empty, and if it is empty, output the service call sequence of the current state S, and the service combination process ends; if it is not empty, store the query condition of S in the queue A that temporarily stores the query condition.
step5:若A为空则说明当前状态下,所有查询条件均以分别被使用且生成了对应的后继状态,转step2;否则仍有未被使用的查询条件转step6。Step5: If A is empty, it means that in the current state, all query conditions are used respectively and the corresponding successor state is generated, go to step2; otherwise, there are still unused query conditions and go to step6.
step6:从A取出位于队列头的查询条件作为当前条件,A中的下一查询条件被放置在队列头。搜索可用于当前条件的基本数据查询服务并查找其对应的原子操作,如果所有基本数据查询服务都已调用过,表明此状态下有不能被处理的查询条件,由此状态不能到达目标状态,则放弃当前状态转step2;否则转step7。Step6: Take the query condition at the head of the queue from A as the current condition, and the next query condition in A is placed at the head of the queue. Search for the basic data query services that can be used for the current conditions and find their corresponding atomic operations. If all basic data query services have been called, it indicates that there are query conditions that cannot be processed in this state, so the state cannot reach the target state, then Give up the current state and go to step2; otherwise, go to step7.
step7:把查找到的原子操作添加入S的服务调用序列,若根据当前条件可搜索到一个基本数据查询服务的多个原子操作,在具有相同输入的原子操作之间优先选择具有多个条件输入的原子操作,输入不同的原子操作都是必须调用的。这些原子操作以等价关系加入当前状态的服务调用序列,每个原子操作单独执行,然后对执行结果取交集作为本基本数据查询服务调用的输出。Step7: Add the found atomic operation to the service call sequence of S. If multiple atomic operations of a basic data query service can be searched according to the current conditions, choose among the atomic operations with the same input to have multiple conditional inputs. Atomic operations of different inputs must be called. These atomic operations are added to the service call sequence of the current state with an equivalence relationship. Each atomic operation is executed separately, and then the intersection of the execution results is taken as the output of the basic data query service call.
step8:针对当前状态的当前查询条件,生成当前状态的后继状态,并将后继状态加入可用状态队列。Step8: According to the current query condition of the current state, generate the successor state of the current state, and add the successor state to the available state queue.
如图6所示,后继状态的生成包括两种情况:第一种是当前条件对应的领域数据对象是本查询过程的目标对象,则从当前状态中删除当前条件,表明当前条件已经作为基本数据查询服务的原子操作的输入条件使用,不能被以后的基本数据查询服务使用。将删除当前条件后的状态作为后继状态,加入TmpS,表示生成了一个新的可用状态,生成完毕;第二种当前条件对应的领域数据对象不是本查询过程的目标对象,这种情况生成后继状态方法为,调用当前条件对应的基本数据查询服务的关联查询原子操作,获得关联属性集合。关联属性的属性值来源为当前条件的基本数据查询服务对应的原子操作的输出。从当前状态中删除当前条件并分别添加每个关联属性及属性值来源,表示当前条件不能直接用来筛选本查询过程的目标数据对象,但当前条件可以通过关联关系生成其他条件,这些生成的条件是可以用来筛选本查询过程的目标数据对象的。把新生成的状态作为后继状态加入TmpS,表示生成了一个新的可用状态。处理下一个关联属性直至关联属性集合中所有关联属性都已生成后继状态,所有的后继状态加入TmpS后,生成完毕。As shown in Figure 6, the generation of the subsequent state includes two situations: the first is that the domain data object corresponding to the current condition is the target object of this query process, then the current condition is deleted from the current state, indicating that the current condition has been used as the basic data The input condition of the atomic operation of the query service cannot be used by the basic data query service in the future. The state after deleting the current condition is used as the successor state, and TmpS is added to indicate that a new usable state has been generated, and the generation is complete; the domain data object corresponding to the second current condition is not the target object of the query process, in which case a successor state is generated The method is to call the associated query atomic operation of the basic data query service corresponding to the current condition to obtain the associated attribute set. The attribute value source of the associated attribute is the output of the atomic operation corresponding to the basic data query service of the current condition. Delete the current condition from the current state and add each associated attribute and attribute value source separately, indicating that the current condition cannot be directly used to filter the target data object of this query process, but the current condition can generate other conditions through the association relationship, and these generated conditions It can be used to filter the target data object of this query process. Add the newly generated state to TmpS as a successor state, indicating that a new usable state has been generated. Process the next associated attribute until all associated attributes in the associated attribute set have generated a successor state, and after all the successor states are added to TmpS, the generation is completed.
后继状态生成完毕后,继续处理下一条件,转step5。After the successor state is generated, continue to process the next condition and go to step5.
多个查询过程生成的服务调用序列可以被并行处理,即查询过程之间是彼此独立,可以同时执行两个或者多个查询过程生成的服务调用序列。The service call sequences generated by multiple query processes can be processed in parallel, that is, the query processes are independent of each other, and the service call sequences generated by two or more query processes can be executed simultaneously.
如果服务组合失败,无法生成服务调用序列,则转步骤十。If the service combination fails and the service invocation sequence cannot be generated, go to step ten.
步骤七:由定制存储模块存储对应的功能及服务调用序列到模板库,成为一条模板信息记录,该记录的模板ID为后台数据库自动生成;模板名称为用户定制结果xml中的模板名称;模板对应的配置信息中查询内容为用户定制结果xml中的查询内容,查询条件为用户定制结果xml中的查询条件,查询条件仅包括查询条件所属数据对象及属性,不包括属性值;模板对应的服务调用序列为上述步骤六生成的服务调用序列,其中每个基本数据查询服务原子操作的输入为空。Step 7: The custom storage module stores the corresponding function and service call sequence into the template library, and becomes a template information record. The template ID of the record is automatically generated by the background database; the template name is the template name in the user-customized result xml; the template corresponds to The query content in the configuration information is the query content in the user-customized result xml, and the query condition is the query condition in the user-customized result xml. The query condition only includes the data object and attribute to which the query condition belongs, excluding the attribute value; the service call corresponding to the template The sequence is the service call sequence generated in step 6 above, where the input of each basic data query service atomic operation is empty.
步骤八:执行子模块按照服务调用流程序列的顺序调用基本数据查询服务库中的基本数据查询服务,生成中间结果及最终结果。执行子模块协调服务间输入输出关系,在读取到服务调用序列中,如果某一个基本数据查询服务的原子操作输入不是用户在定制时直接输入的参数,而是服务调用序列已被执行过的基本数据查询服务的原子操作,则将执行过的基本数据查询服务的原子操作生成的中间结果作为此次基本数据查询服务的输入。反之,则直接将用户定制时输入的参数作为基本数据查询服务原子操作的输入,执行原子操作。待整个服务调用序列执行完毕,输出最终结果。若出现异常导致执行失败,则转步骤十。Step 8: The execution sub-module invokes the basic data query service in the basic data query service library according to the order of the service calling process sequence, and generates intermediate results and final results. The execution sub-module coordinates the input and output relationship between services. When reading the service call sequence, if the atomic operation input of a certain basic data query service is not the parameter directly input by the user when customizing, but the service call sequence has been executed For the atomic operation of the basic data query service, the intermediate result generated by the executed atomic operation of the basic data query service is used as the input of the basic data query service. On the contrary, the parameters entered by the user during customization are directly used as the input of the atomic operation of the basic data query service, and the atomic operation is executed. After the entire service call sequence is executed, the final result is output. If an exception occurs and the execution fails, go to step ten.
步骤九:结果生成子模块按照请求所描述结果显示格式生成最终数据查询分析结果,以浏览器页面的形式向客户端返回应答;进行结果显示。Step 9: The result generation sub-module generates the final data query and analysis result according to the result display format described in the request, and returns a response to the client in the form of a browser page; and displays the result.
步骤十:由异常处理子模块生成失败信息,并返回给客户端显示。Step 10: The exception handling sub-module generates failure information and returns it to the client for display.
本发明一种基于服务组合的可定制查询方法的实现前提为领域数据的抽象建模,并对领域内数据进行分类,构建领域数据对象模型库。然后针对每种领域数据对象的基本查询需求构建数据查询服务,作为基本服务发布到数据查询服务器的服务代理模块。The realization premise of a customizable query method based on service combination in the present invention is the abstract modeling of domain data, classifying the data in the domain, and constructing the domain data object model library. Then build a data query service according to the basic query requirements of each domain data object, and publish it as a basic service to the service proxy module of the data query server.
下面将结合附图和一个在线商店系统的商品查询作为实施例对本发明作进一步的详细说明:The present invention will be described in further detail below in conjunction with the commodity inquiry of accompanying drawing and an online shop system as embodiment:
本实施例中,有用户初始查询请求,查询产品为HP品牌、2007年之后上市,且当前有库存的computer数据,要求显示电脑的型号、报价、配置信息,按报价由低到高的顺序排序。假设本实施例中,模板库中没有类似功能的模板可供直接调用。处理步骤如下:In this embodiment, there is an initial query request from the user, and the query product is HP brand, which was launched after 2007, and currently has computer data in stock. It is required to display the computer model, quotation, and configuration information, sorted according to the order of quotation from low to high . It is assumed that in this embodiment, there is no template with a similar function available for direct calling in the template library. The processing steps are as follows:
步骤一:领域分析,电脑即computer数据对象具有属性为:商品编号、型号、品牌、厂商、上市时间、报价、配置信息;库存商品即storage数据对象具有属性为:商品编号、库存量、成本价格、售价、管理员信息。computer数据对象与storage数据对象关联关系为:computer数据对象的商品编号属性等于storage数据对象的商品编号属性。对应的数据查询基本服务为computerQservice和storageQService。computerQService提供根据电脑品牌和获得电脑对象实例的原子操作computerOperByBrand,根据电脑上市时间获得电脑对象实例的原子操作computerOperByTTM,根据电脑品牌和价格联合获得电脑对象实例的原子操作computerOperByBrandAndPrice,根据电脑的商品编号获得电脑对象实例的原子操作computerOperByID,关联查询原子操作computerOperRela;storageQService提供根据库存量获得库存商品对象实例的原子操作storageOperByStock,关联查询原子操作storageOperRela。Step 1: domain analysis, the computer is the computer data object has attributes: product number, model, brand, manufacturer, time to market, quotation, configuration information; the inventory product is the storage data object has attributes: product number, inventory, cost price , selling price, administrator information. The relationship between the computer data object and the storage data object is as follows: the item number attribute of the computer data object is equal to the item number attribute of the storage data object. The corresponding basic data query services are computerQservice and storageQService. computerQService provides the atomic operation computerOperByBrand for obtaining computer object instances according to the computer brand and computerOperByTTM, the atomic operation computerOperByTTM for obtaining computer object instances according to the computer brand and price, and computerOperByBrandAndPrice for obtaining computer object instances according to the computer product number. The atomic operation computerOperByID of the object instance, the atomic operation computerOperRela of the associated query; storageQService provides the atomic operation storageOperByStock and the atomic operation storageOperRela of the associated query to obtain the object instance of the stock commodity according to the inventory.
步骤二:用户进入可定制数据查询客户端页面,此时数据查询客户端初始化获得领域数据对象模型库,其中包含两个领域数据对象控件computer和storage,本实施例中以JavaScript实现。模板库内容为空;模板库中没有与查询computer相对应的数据查询功能,用户需要开始一个新的功能定制过程。Step 2: The user enters the customizable data query client page. At this time, the data query client initializes to obtain the domain data object model library, which includes two domain data object controls computer and storage, implemented in JavaScript in this embodiment. The content of the template library is empty; there is no data query function corresponding to the query computer in the template library, and the user needs to start a new function customization process.
A)定制查询内容。用户从定制页面中拖拽computer控件到查询内容定制框,并勾选型号、报价、配置信息作为结果属性;A) Customize the query content. The user drags the computer control from the customization page to the query content customization box, and checks the model, quotation, and configuration information as the result attributes;
B)定制查询条件。用户从定制页面中拖拽computer控件到查询条件定制框,勾选品牌属性,填写属性值为“HP”,勾选上市时间属性,填写属性值为“>2007”;从定制页面中拖拽库存产品控件添加到查询条件定制框,勾选库存量属性,填写属性值为“>0”。用箭头建立查询条件与查询内容之间的关联关系:computer:brand=HP;TTM=>2007和storage:stock>0,两者都关联于查询内容computer;B) Customize query conditions. The user drags the computer control from the customization page to the query condition customization box, checks the brand attribute, fills in the attribute value as "HP", checks the time-to-market attribute, and fills in the attribute value as ">2007"; drags and drops the inventory from the customization page Add the product control to the query condition customization box, check the inventory attribute, and fill in the attribute value as ">0". Use arrows to establish the relationship between query conditions and query content: computer: brand=HP; TTM=>2007 and storage: stock>0, both of which are associated with the query content computer;
C)定制结果显示格式。对该请求定制结果显示数据列表表头如下:C) Customize the display format of the results. Customize the result of this request to display the header of the data list as follows:
表1定制结果显示数据列表表头Table 1 Customized result display data list header
computer:model表示电脑型号,computer:price表示电脑价格,computer:configure表示电脑的配置信息,该结果按照第一列属性即price一列排序。computer:model indicates the computer model, computer:price indicates the computer price, computer:configure indicates the configuration information of the computer, and the results are sorted according to the first column attribute, that is, the price column.
D)勾选保存本次定制按钮,并输入本次定制对应的模板名称为“可购买电脑产品查询”。D) Check the button to save this customization, and enter the name of the template corresponding to this customization as "Purchasable Computer Product Query".
本实施例中模板库中无用户定制功能,若有模板名称为“查询电脑产品”具有用户定制的功能,则处理过程如下:选择此模板,页面查询内容部分展现为computer数据对象,已勾选的属性为型号、报价、配置信息。页面查询条件部分展现为computer数据对象和storage数据对象,computer数据对象已勾选的属性为上市时间、品牌,属性值为空,storage数据对象已勾选的属性为库存量,属性值为空。查询结果格式为空,由用户自行填充。用户为作为查询条件的computer数据对象的上市时间属性填写属性值为“>2007”,品牌属性属性值为“HP”,为作为查询条件的storage数据对象的库存量属性填写属性值为“>0”;填写结果格式如上述表1所示。In this embodiment, there is no user-customized function in the template library. If there is a template named "Query Computer Products" with user-customized functions, the processing process is as follows: select this template, and the page query content part is displayed as a computer data object, which has been checked The attributes of are model, quotation, and configuration information. The query condition part of the page is displayed as a computer data object and a storage data object. The checked attributes of the computer data object are launch time and brand, and the attribute value is empty. The checked attributes of the storage data object are inventory, and the attribute value is empty. The query result format is empty and filled by the user. The user fills in the attribute value of ">2007" for the time-to-market attribute of the computer data object used as the query condition, "HP" for the brand attribute attribute value, and ">0" for the inventory attribute of the storage data object used as the query condition ”; fill in the result format as shown in Table 1 above.
步骤三:客户端定制结果封装子模块封装用户定制结果,如图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请求至数据查询处理服务器。Step 3: Client customized result encapsulation The sub-module encapsulates the user customized result, as shown in Figure 7, expressing the user customized result in the form of xml. With request as the root node, it consists of a process and a resultForm. The process consists of a goal node and a parameter node. The goal node is composed of a data object node model. The name of the model node is computer, indicating that the encapsulated data object is a computer. The model has three property nodes. The names of the property nodes are model, price, and configure, which respectively represent the model, price, and configuration information of the computer. The parameter node is composed of multiple model nodes. The name of the first model node is computer, the attribute property node, the name of the property node is brand, and the value is HP. The rest of the model is similar to this model. resultForm represents the result format, which contains several column nodes. The first column node contains the column name price, and the column value computer:price. The rest of the columns are similar to this column. Use this xml as a parameter to send a data query http request to the data query processing server.
步骤四:数据查询处理服务器的请求队列管理子模块接收客户端发送的数据查询请求,并将请求存储到请求队列中。Step 4: The request queue management sub-module of the data query processing server receives the data query request sent by the client, and stores the request in the request queue.
步骤五:请求解析模块采用DOM方式解析请求队列中的第一个数据查询分析请求,初始状态中,用PROCESS表示查询过程集合,target=(computer)表示本查询过程的目标数据对象是computer,parameter=((computer:brand=HP;TTM=>2007)(storage:stock>0))表示本查询过程的查询条件是computer的品牌为HP,上市时间TTM为2007年之后,库存商品对象库存量为大于零,即有库存;RESULT表示查询结果,PLAN表示服务调用序列。对前述请求解析结果为:Step 5: The request parsing module uses DOM to parse the first data query and analysis request in the request queue. In the initial state, PROCESS is used to represent the set of query processes, and target=(computer) means that the target data object of this query process is computer, parameter =((computer:brand=HP; TTM=>2007)(storage:stock>0)) indicates that the query condition of this query process is that the brand of the computer is HP, the TTM of the time to market is after 2007, and the stock quantity of the stock commodity object is If it is greater than zero, there is inventory; RESULT indicates the query result, and PLAN indicates the service call sequence. The result of parsing the preceding request is:
表2请求解析结果Table 2 request parsing results
目标状态中,查询过程PROCESS已经处理完毕为空,查询结果RESULT为处理成功的PROCESS中的目标对象的集合,即computer,服务调用序列PLAN为planForPROCESS,是指对初始状态中的PROCESS生成的服务调用序列。In the target state, the query process PROCESS has been processed and is empty, the query result RESULT is the set of target objects in the successfully processed PROCESS, that is, computer, and the service call sequence PLAN is planForPROCESS, which refers to the service call generated by the PROCESS in the initial state sequence.
该请求队列不为空,则判断此次查询不是模板库中功能的一种,则需要由服务组合引擎子模块生成服务调用序列。如果是模板库中功能的一种,则根据模板名称查询后台数据库,由执行子模块获得此模板对应的查询请求处理服务调用序列,并初始状态中的parameter作为参数值,匹配基本数据查询服务原子操作,作为原子操作的输入,转步骤八。如果请求队列为空,则转步骤十。If the request queue is not empty, it is judged that the query is not a type of function in the template library, and a service call sequence needs to be generated by the service composition engine sub-module. If it is one of the functions in the template library, query the background database according to the template name, and obtain the query request processing service call sequence corresponding to the template by the execution sub-module, and use the parameter in the initial state as the parameter value to match the basic data query service atom Operation, as the input of the atomic operation, go to
步骤六:服务组合引擎为本次数据查询请求生成服务调用序列。本次数据查询请求包含一个PROCESS,如图8所示,生成服务调用序列过程详述如下:Step 6: The service composition engine generates a service call sequence for this data query request. This data query request contains a PROCESS, as shown in Figure 8, and the process of generating a service call sequence is detailed as follows:
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=(*)),*表示预先分配的空闲空间。PROCESS: The query content is computer, the parameters are (computer: brand=HP; TTM=>2007) and (storage: stock>0), the initial state of this query process: (target=(computer)parameter=((computer: brand= HP; TTM=>2007)(storage:stock>0))plan=()), the target status of this query process: (target=(computer)parameter=()plan=(*)), * means pre-allocated idle space.
step1:从查询过程中提取本次服务组合过程的源状态S0,S0=(target=(computer)parameter=((computer:brand=HP;TTM=>2007)(storage:stock>0))plan=());添加S0至用于临时存储数据的可用状态队列TmpS,TmpS={S0}。Step1: Extract the source state S 0 of this service composition process from the query process, S 0 =(target=(computer)parameter=((computer: brand=HP; TTM=>2007)(storage: stock>0)) plan=()); Add S 0 to the available state queue TmpS for temporary storage of data, TmpS={S 0 }.
step2:判断TmpS不为空,转step3。Step2: Determine that TmpS is not empty, go to step3.
step3:从TmpS中取出位于队列头的So作为当前状态S。Step3: Take So at the head of the queue from TmpS as the current state S.
step4:S的查询条件为parameter=((computer:brand=HP;TTM=>2007)(storage:stock>0))不为空,把该条件于临时存储查询条件的队列A,即A={(computer:brand=HP;TTM=>2007),(storage:stock>0)}。step4: The query condition of S is that parameter=((computer: brand=HP; TTM=>2007)(storage:stock>0)) is not empty, put this condition in the queue A of the temporary storage query condition, that is, A={ (computer: brand=HP; TTM=>2007), (storage: stock>0)}.
step5:A不空,转step6。step5: A is not empty, go to step6.
step6:从A取出位于队列头的查询条件(computer:brand=HP;TTM=>2007)作为当前条件,搜索可用于当前条件的基本数据查询服务为computerQService,其对应的原子操作为computerOperByBrand和computerOperByTTM,原子操作computerOperByBrandAndPrice有brand作为一个输入参数,但是另外一个输入参数为价格,当前条件不包含price,因此这个原子操作对于当前条件不可用。转step7。step6: Take out the query condition at the head of the queue from A (computer: brand=HP; TTM=>2007) as the current condition, search for the basic data query service that can be used for the current condition is computerQService, and its corresponding atomic operations are computerOperByBrand and computerOperByTTM, The atomic operation computerOperByBrandAndPrice has brand as an input parameter, but the other input parameter is price, and the current condition does not contain price, so this atomic operation is not available for the current condition. Go to step7.
step7:把(computerQService:computerOperByBrand(HP))(computerQService:computerOperByTTM(>2007))添加入S的服务调用序列plan中,此时plan=(computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007))。Step7: Add (computerQService: computerOperByBrand(HP))(computerQService:computerOperByTTM(>2007)) into the service call sequence plan of S, at this time 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。step8: Generate a new state S'=(target=(computer)parameter=((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007)))), current The domain data object corresponding to the condition is computer, and the target object is also computer, so directly add S' to the available TmpS, at this time TmpS={(target=(computer)parameter=((storage:stock>0))plan=((computerQService :computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007))))}; turn to step5a.
step5a:A={(storage:stock>0)}不为空,转step6a。step5a: A={(storage: stock>0)} is not empty, go to step6a.
step6a:从A取出位于队列头的查询条件(storage:stock>0)作为当前条件,搜索到可用于当前条件的基本数据查询服务为storageQService,其对应的原子操作为storageOperByStock,转step7a。Step6a: Take out the query condition (storage: stock>0) at the head of the queue from A as the current condition, search for the basic data query service that can be used for the current condition is storageQService, and its corresponding atomic operation is storageOperByStock, go to step7a.
step7a:把storageQService:storageOperByStock(>0)添加入S的服务调用序列plan中,此时plan=(storageQService:storageOperByStock(>0))。Step7a: Add storageQService:storageOperByStock(>0) into the service call sequence plan of S, at this time 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。step8a: Generate a new state S'=(target=(computer)parameter=((computer: brand=HP; TTM=>2007)) plan=(storageQService:storageOperByStock(>0))), the domain data object corresponding to the current condition Because storage is inconsistent with the target field data object computer, call storageQService’s associated query basic operation storageOperRela to get the result storage: ID equivalent to computer: ID, add the associated attribute to the query condition of S’ to generate a subsequent state (target=(computer)parameter= ((computer: brand=HP; TTM=>2007; ID=(storageQService:storageOperByStock(>0))))plan=(storageQService:storageOperByStock(>0))), and add subsequent state to 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)))}; turn to step5b.
step5b:A为空,转step2c。step5b: A is empty, go to step2c.
step2c:TmpS不为空,转step3c。step2c: TmpS is not empty, go to step3c.
step3c:从TmpS中取出位于队列头的状态作为当前状态S,S={(target=(computer)parameter=((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007))))}。step3c: Take out the state at the head of the queue from TmpS as the current state S, S={(target=(computer)parameter=((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))∧(computerQService :computerOperByTTM(>2007))))}.
step4c:当前状态S的查询条件不为空,将S的查询条件存储至A,则A={(storage:stock>0)}。step4c: The query condition of the current state S is not empty, store the query condition of S in A, then A={(storage: stock>0)}.
step5c:A不空,转step6c。step5c: A is not empty, turn to step6c.
step6c:从A取出位于队列头的查询条件(storage:stock>0)作为当前条件,搜索到可用于当前条件的基本数据查询服务为storageQService,其对应的原子操作为storageOperByStock,转step7c。Step6c: Take out the query condition (storage: stock>0) at the head of the queue from A as the current condition, search for the basic data query service that can be used for the current condition is storageQService, and its corresponding atomic operation is storageOperByStock, go to step7c.
step7c:把storageQService:storageOperByStock(>0)添加入S的服务调用序列plan中,此时plan=(computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0)。step7c: add storageQService:storageOperByStock(>0) into the service call sequence plan of S, then 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。step8c: Generate a new state S'=(target=(computer)parameter=() plan=((computerQService: computerOperByBrand(HP))∧(computerQService: computerOperByTTM(>2007)), (storageQService: storageOperByStock(>0))) , the domain data object corresponding to the current condition is storage and the target domain data object computer is inconsistent, call storageQService’s associated query basic operation storageOperRela, get the result storage: ID is equivalent to computer: ID, add the associated attribute to the query condition of S’ to generate a subsequent state (target=(computer)parameter=((computer: ID=(storageQService:storageOperByStock(>0))))plan=((computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock (>0))), and add subsequent state to 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)))}, turn to step5d.
step5d:A为空,转steD2e。step5d: A is empty, turn to steD2e.
step2e:TmpS不为空,转step3e。step2e: TmpS is not empty, go to step3e.
step3e:从TmpS中取出位于队列头的状态作为当前状态S,S={(target=(computer)parameter=((computer:brand=HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))plan=(storageQService:storageOperByStock(>0)))}。step3e: Take out the state at the head of the queue from TmpS as the current state 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)))};step4e: The query condition of the current state S is not empty, store the query condition of S in A, A={(computer: brand=HP; TTM=>2007; ID=(storageQService:storageOperByStock(>0)))};
step5e:A不为空,转step6e。step5e: A is not empty, go to step6e.
step6e:从A取出位于队列头的查询条件(computer:brand=HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))作为当前条件,搜索可用于当前条件的基本数据查询服务为computerQService,其对应的原子操作为computerOperByBrand,computerOperByTTM和computerOperByID,转step7e。step6e: Take the query condition at the head of the queue from A (computer: brand=HP; TTM=>2007; ID=(storageQService:storageOperByStock(>0)))) as the current condition, and search for the basic data query service that can be used for the current condition It is computerQService, and its corresponding atomic operations are computerOperByBrand, computerOperByTTM and computerOperByID, turn to 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)))。Step7e: Add (computerQService: computerOperByBrand(HP))∧(computerQService: computerOperByTTM(>2007))∧computerQService:computerOperByID(storageQService:storageOperByStock(>0)) into the service call sequence plan of S, then 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。step8e: Generate a new state S'=(target=(computer)parameter=() plan=(storageQService:storageOperByStock(>0)), (computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007))∧( computerQService: computerOperByID(storageQService: storageOperByStock(>0)))), the domain data object corresponding to the current condition is computer, and the target object is also computer, directly add S' to the available TmpS, at this time 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)))}, turn to step5f.
step5f:A为空,转step2g。step5f: A is empty, turn to step2g.
step2g:TmpS不为空,转step3g。step2g: TmpS is not empty, go to step3g.
step3g:从TmpS中取出位于队列头的状态作为当前状态S,S={(target=(computer)parameter=((computer:ID=(storageQService:storageOperByStock(>0))))plan=((computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0)))}。step3g: Take out the state at the head of the queue from TmpS as the current state 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)))}。step4g: Determine that the query condition of the current state S is not empty, store the query condition of S in the queue A for temporarily storing the query condition, A={(computer: ID=(storageQService:storageOperByStock(>0)))}.
step5g:A不为空转step6g。step5g: A is not idling step6g.
step6g:从A取出位于队列头的查询条件(computer:ID=(storageQService:storageOperByStock(>0)))作为当前条件,搜索可用于当前条件的基本数据查询服务为computerQService该服务已经被当前状态S调用过,放弃当前状态S,转step2h。step6g: Take the query condition at the head of the queue from A (computer: ID=(storageQService:storageOperByStock(>0))) as the current condition, and search for the basic data query service that can be used for the current condition as computerQService, which has been called by the current state S However, give up the current state S and go to step2h.
step2h:TmpS不为空,转step3h。step2h: TmpS is not empty, go to step3h.
step3h:从TmpS中取出位于队列头的状态作为当前状态S,S=(target=(computer)parameter=()plan=((storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))∧(computerQService:computerOperByTTM(>2007))∧computerQService:computerOperByID(storageQService:storageOperByStock(>0))。step3h: Take out the state at the head of the queue from TmpS as the current state 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)))),该查询过程的服务组合过程完毕。由于本次查询请求只包含这一个查询过程,故本次查询请求的服务组合过程完毕。step4h: The current status query condition is empty, and the output service call sequence: (storageQService: storageOperByStock(>0)), (computerQService: computerOperByBrand(HP))∧(computerQService: computerOperByTTM(>2007))∧(computerQService: computerOperByID(storageQService: storageOperByStock(>0)))), the service composition process of the query process is completed. Since this query request only includes this query process, the service combination process of this query request is completed.
如果服务组合失败,则转到步骤十。If service composition fails, go to step ten.
步骤七:定制存储模块存储成功生成的服务调用序列及此次数据查询请求功能对应的模板到模板库。存储的模板记录中,模板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原子操作(表示按照商品编号查询电脑商品),并对以上三个原子操作的输出结果取交集得到此服务调用序列的最终结果。Step 7: The custom storage module stores the successfully generated service call sequence and the template corresponding to the data query request function in the template library. In the stored template records, the template ID is automatically generated by the background database, the template name is the template name in the user-defined package result xml, that is, "purchasable computer product query", and the corresponding configuration information of the template is parsed from the user-customized package result xml The query content corresponding to this data query is computer, and the query condition is ((computer: brand = "; TTM = ") (storage: stock = ")), indicating that the query condition is the brand attribute, time-to-market attribute, and inventory of the computer object The inventory attribute of the commodity object. The service call sequence corresponding to the template is the service call sequence generated by the aforementioned service combination process, but does not include the parameter value, namely (storageQService:storageOperByStock()), (computerQService:computerOperByBrand())∧(computerQService: computerOperByTTM())∧(computerQService:computerOperByID(storageQService:storageOperByStock()))), which means first calling the storageOperByStock atomic operation of the storageQService basic data query service, which means querying all instances of the stock commodity object according to the stock quantity. Then call computerQService separately The computerOperByBrand atomic operation of the basic data query service (represents querying computer products by brand), computerOperByTTM atomic operation (represents querying computer products by launch time), computerOperByID atomic operation (represents querying computer products by product number), and the above three atomic operations Take the intersection of the output results to get the final result of this service call sequence.
步骤八:执行子模块按照生成的服务调用序列顺序调用基本服务,按照序列中指定的输入作为基本数据查询服务原子操作的输入,最终输出computer数据对象实例的集合。computerQService:computerOperByID()此原子操作的输入为前步执行storageQService:storageOperByStock(>0)的输出结果storage对象的ID属性,在执行到computerQService:computerOperByID()原子操作时,取出storageQService:storageOperByStock(>0)结果storage实例集合中每一个storage实例的ID属性,构成一个list,作为computerQService:computerOperByID()的输入。Step 8: The execution sub-module invokes the basic services in sequence according to the generated service call sequence, uses the input specified in the sequence as the input of the atomic operation of the basic data query service, and finally outputs a set of computer data object instances. computerQService: computerOperByID() The input of this atomic operation is the ID attribute of the storage object that is the output result of the previous execution of storageQService: storageOperByStock(>0). When the atomic operation computerQService: computerOperByID() is executed, take out storageQService: storageOperByStock(>0) As a result, the ID attribute of each storage instance in the storage instance collection forms a list, which is used as the input of computerQService:computerOperByID().
如果执行过程中出现服务调用失败、参数类型错误等导致执行失败,则转步骤十。If the execution fails due to service call failure, wrong parameter type, etc. during execution, go to step 10.
步骤九:按照步骤二描述的结果格式,以步骤八输出的结果数据对象实例为数据来源,从数据来源的computer数据对象中提取价格、型号、配置数据,生成此次数据查询结果,将获得的所有行数据依据computer:price列进行排序,以排序后的数据列表为数据来源生成服务器端应答HTML页面,并返回应答。Step 9: According to the result format described in step 2, use the result data object instance output in
步骤十:异常处理子模块向客户端返回失败信息,指明失败类型及详细信息。Step 10: The exception handling sub-module returns failure information to the client, indicating the failure type and detailed information.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101192450A CN101350023B (en) | 2008-08-29 | 2008-08-29 | Method and platform capable of customizing enquiry based on service combination |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101192450A CN101350023B (en) | 2008-08-29 | 2008-08-29 | Method and platform capable of customizing enquiry based on service combination |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101350023A CN101350023A (en) | 2009-01-21 |
CN101350023B true CN101350023B (en) | 2011-05-04 |
Family
ID=40268818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101192450A Expired - Fee Related CN101350023B (en) | 2008-08-29 | 2008-08-29 | Method and platform capable of customizing enquiry based on service combination |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101350023B (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109344853A (en) * | 2018-08-06 | 2019-02-15 | 杭州雄迈集成电路技术有限公司 | A kind of the intelligent cloud plateform system and operating method of customizable algorithm of target detection |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043627A (en) * | 2010-12-24 | 2011-05-04 | 中国农业银行股份有限公司 | Development method and system of comparable data showing program of browser server architecture |
CN102855250B (en) * | 2011-06-30 | 2016-06-29 | 北京新媒传信科技有限公司 | The display output intent of a kind of user profile and system |
CN102685195B (en) * | 2011-12-20 | 2016-07-06 | 中兴通讯股份有限公司 | Application service combined method, Apparatus and system |
CN102819545B (en) * | 2011-12-22 | 2015-01-28 | 金蝶软件(中国)有限公司 | Bill inquiring method and device based on general filtering condition compound assembly |
CN102819557B (en) * | 2012-06-28 | 2016-01-13 | 用友网络科技股份有限公司 | Data query treating apparatus and data query disposal route |
CN103685207B (en) * | 2012-09-21 | 2018-01-19 | 百度在线网络技术(北京)有限公司 | Data integrated system, device and method across data source |
CN103793433A (en) * | 2012-11-01 | 2014-05-14 | 航天信息软件技术有限公司 | Querying and processing method for account table data |
CN103970761B (en) * | 2013-01-28 | 2018-05-01 | 阿里巴巴集团控股有限公司 | A kind of commodity data searching method and device |
CN103294755A (en) * | 2013-02-01 | 2013-09-11 | 税友软件集团股份有限公司 | Flexible assembling analysis method |
CN104346344A (en) * | 2013-07-24 | 2015-02-11 | 北大方正集团有限公司 | Compiled book manufacturing method and device |
CN103559307A (en) * | 2013-11-18 | 2014-02-05 | 中国农业银行股份有限公司 | Caching method and device for query |
CN104714973A (en) * | 2013-12-17 | 2015-06-17 | 航天信息股份有限公司 | Method and device for processing query statements |
CN103929477B (en) * | 2014-03-31 | 2017-09-19 | 国网山东省电力公司 | Http protocol-based non-coupling integration simulation method and system between systems |
CN104104715B (en) * | 2014-05-29 | 2017-06-30 | 银江股份有限公司 | A kind of traffic data combination treatment method based on cloud computing platform |
CN105335132B (en) * | 2014-06-13 | 2020-03-24 | 阿里巴巴集团控股有限公司 | Method, device and system for customizing application program function |
CN105450501B (en) * | 2014-09-01 | 2019-01-01 | 阿里巴巴集团控股有限公司 | The method and device for customizing recovery function is set |
CN104281676A (en) * | 2014-09-29 | 2015-01-14 | 蓝盾信息安全技术股份有限公司 | Method for dynamically generating query lists on basis of flex |
CN104361040A (en) * | 2014-10-29 | 2015-02-18 | 中国建设银行股份有限公司 | Method and device for customized query |
US9996230B2 (en) * | 2014-11-13 | 2018-06-12 | Microsoft Technology Licensing, Llc | Using sections for customization of applications across platforms |
CN105100117B (en) * | 2015-08-28 | 2018-07-13 | 北京奇艺世纪科技有限公司 | A kind of method and device for accessing composite services |
CN105160615A (en) * | 2015-09-08 | 2015-12-16 | 浙江浙大中控信息技术有限公司 | Free retrieval case search engine system and searching method |
CN106708610B (en) * | 2015-11-17 | 2020-11-03 | 北京京东尚科信息技术有限公司 | Service model management method and system |
CN105389188A (en) * | 2015-12-02 | 2016-03-09 | 中国建设银行股份有限公司 | Design method and apparatus for supporting product innovation |
CN105871998A (en) * | 2015-12-18 | 2016-08-17 | 乐视致新电子科技(天津)有限公司 | Data displaying method and device |
CN105824637B (en) * | 2016-03-17 | 2019-03-12 | 中国银行股份有限公司 | Method for inquiring customization and system |
CN106294579B (en) * | 2016-07-27 | 2019-08-23 | 北京奇虎科技有限公司 | A kind of customization searching method and device |
CN107977380B (en) * | 2016-10-25 | 2023-04-07 | 北京京东尚科信息技术有限公司 | Method and device for generating page |
CN108280091B (en) * | 2017-01-06 | 2022-05-17 | 阿里巴巴集团控股有限公司 | Task request execution method and device |
CN108287853B (en) * | 2017-01-10 | 2020-11-03 | 杭州有数金融信息服务有限公司 | Data relation analysis method and system |
CN108388564B (en) * | 2017-02-03 | 2022-11-01 | 百度在线网络技术(北京)有限公司 | Query processing method, device and equipment |
CN109213781B (en) * | 2018-08-27 | 2023-05-02 | 平安科技(深圳)有限公司 | Wind control data query method and device |
CN109523110A (en) * | 2018-09-28 | 2019-03-26 | 深圳市德立信环境工程有限公司 | Customize method, its system and the electronic equipment of garbage classification service |
CN109344165A (en) * | 2018-11-23 | 2019-02-15 | 福建榕基软件股份有限公司 | A kind of querying method and storage equipment |
CN109600443B (en) * | 2018-12-14 | 2022-02-08 | 广州优虎科技有限公司 | Client function module background operation system and method |
CN111625548B (en) * | 2019-02-27 | 2024-07-16 | 北京京东尚科信息技术有限公司 | Query method, system, apparatus and computer readable medium |
CN109947406B (en) * | 2019-02-28 | 2022-12-27 | 中国空间技术研究院 | Universal star affair management system architecture |
CN111190578B (en) * | 2019-12-20 | 2023-03-21 | 天阳宏业科技股份有限公司 | Customizable flow operation development system |
CN111191088B (en) * | 2020-01-02 | 2022-02-01 | 武汉大学 | Method, system and readable medium for analyzing cross-boundary service demand |
CN111949632B (en) * | 2020-07-29 | 2022-11-11 | 苏州浪潮智能科技有限公司 | A method and system for displaying a business model in a cluster environment |
CN113805936B (en) * | 2021-09-18 | 2022-07-12 | 中国能源建设集团广东省电力设计研究院有限公司 | Version control method for enterprise informatization series products |
CN114265985B (en) * | 2021-12-29 | 2025-04-15 | 广东太平洋互联网信息服务有限公司 | Automobile information interactive query method, device and equipment |
CN114546347A (en) * | 2022-02-28 | 2022-05-27 | 安徽渔之蓝教育软件技术有限公司 | A development method for cross-service synchronization system based on education management workflow engine |
-
2008
- 2008-08-29 CN CN2008101192450A patent/CN101350023B/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109344853A (en) * | 2018-08-06 | 2019-02-15 | 杭州雄迈集成电路技术有限公司 | A kind of the intelligent cloud plateform system and operating method of customizable algorithm of target detection |
Also Published As
Publication number | Publication date |
---|---|
CN101350023A (en) | 2009-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101350023B (en) | Method and platform capable of customizing enquiry based on service combination | |
US7668860B2 (en) | Apparatus and method for constructing and using a semantic abstraction for querying hierarchical data | |
CN114625353B (en) | Model framework code generation system and method | |
CN100520716C (en) | Code automatically generating device based on model component, system and method | |
CN102754072B (en) | Regulation user interface element | |
US8412813B2 (en) | Customizable asset governance for a distributed reusable software library | |
US8307109B2 (en) | Methods and systems for real time integration services | |
US9460415B2 (en) | Determining semantic information of business applications | |
US20180196857A1 (en) | Automated presentation of information using infographics | |
CN107273117B (en) | Programming-friendly agile code automatic generation system | |
US20020052807A1 (en) | Network architecture-based design-to-order system and method | |
US20130132296A1 (en) | Networked business object sharing | |
US20140006216A1 (en) | Distributed order orchestration system that transforms sales products to fulfillment products | |
US12190053B2 (en) | Providing operations in accordance with worksheet relationships and data object relationships | |
US20070282616A1 (en) | Systems and methods for providing template based output management | |
CN1713196B (en) | Product ordering system based on automatic design grid | |
CN102129461B (en) | Method for quickly retrieving enterprise data | |
US8762322B2 (en) | Distributed order orchestration system with extensible flex field support | |
CN115170048B (en) | Model-based and rule-based workflow implementation method, system and medium | |
US12141558B2 (en) | System and method for tailoring a customizer for integration process modeling visual element to a domain specific language for business integrations | |
CN115759372A (en) | Process engine optimization method and system based on business processing and process driving decoupling | |
Mani et al. | Using user interface design to enhance service identification | |
Brambilla et al. | Model-driven design of service-enabled web applications | |
CN104272294A (en) | System architecture generation | |
CN117827183A (en) | Contract generation method, platform and storage medium |
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 |