Version-specific request processing
AssigneeAmazon Technologies, Inc.
InventorsVanessa Y. Sun, Feras Karablieh, Xiaohu Liu, Ajay M. Desai
Life of this patent
Estimating the term…
Abstract
Multiple versions of a service can be supported by taking advantage of the fact that version information can be included in any received request. Using the version information, an appropriate template can be determined up front to be used for the response. In instance of the template can be filled in using appropriate data sources, as may be specified using metadata in the template itself. Information can be processed in parallel, respecting any data dependencies specified by the template metadata. Once the instance of the template is filled, the response can be finalized and sent to the source of the request.
Claims23
A method of generating a version-specific response, comprising:
- receiving a request including information identifying a version of a service;
- selecting, by one or more computing systems, a template corresponding to the version of the service, the template selected from a set of versions of templates, the template specifying a plurality of elements and including metadata specifying a populator component for each of the elements;
- determining, by the one or more computing systems, dependencies between the populator components based at least in part on the selected template;
- generating, based at least in part on the dependencies between the populator components, a dependency graph identifying data that is to be obtained for the response before one of the populator components can obtain data for the response;
- accessing, in accordance with the dependency graph, each of the populator components when all dependencies for that populator component are satisfied to obtain data for at least one of the elements;
- aggregating the data for each of the elements;
- and
- generating, by the one or more computing systems, a response using the template when data is obtained for each of the plurality of elements.
A method of generating a version-specific response for a Web service, comprising:
- receiving a request including information identifying a version of a Web service;
- selecting, by one or more computing systems, a Web Services Description Language (WSDL) file defining a template corresponding to the version of the Web service, the WSDL file selected from a set of versions of WSDL files, the WSDL file specifying a plurality of elements, the plurality of elements including prerequisite elements defining elements of the template that must be completed before other elements of the template are completed, and including metadata specifying a populator component for each of the elements;
- determining, by the one or more computing systems, dependencies between the populator components based at least in part on the selected WSDL file;
- generating a data dependency graph indicating at least one populator component that is called without regard to the plurality of elements of the template being filled and remaining populator components that are called to fill elements of the template after the prerequisite elements of the template have been filled;
- obtaining first data using the at least one populator component as specified by the data dependency graph and receiving the first data to a queue;
- after obtaining the first data using the at least one populator component, obtaining second data using each of the remaining populator components as specified by the data dependency graph and receiving the second data to the queue;
- aggregating the first data and the second data from the queue;
- and
- generating a response using the WSDL file when data is obtained for each of the plurality of elements.
A computer program product embedded in a non-transitory computer readable storage medium for generating a version-specific response, comprising:
- program code for receiving a request including information identifying a version of a service;
- program code for selecting, by one or more computing systems, a template corresponding to the version of the service, the template selected from a set of versions of templates, the template specifying a plurality of elements and including metadata specifying a populator component for each of the elements;
- program code for determining, by the one or more computing systems, dependencies between the populator components based at least in part on the selected template;
- program code for generating, based at least in part on the dependencies between the populator components, a dependency graph identifying data that is to be obtained for the response before one of the populator components can obtain data for the response;
- program code for accessing, in accordance with the dependency graph, each of the populator components when all dependencies for that populator component are satisfied in order to obtain data for at least one of the elements;
- program code for aggregating the data for each of the elements;
- and
- program code for generating a response using the template when data is obtained for each of the plurality of elements.
A system for testing a service, comprising:
- a processor implemented in hardware;
- and
- a storage memory device including instructions that, when executed by the processor, cause the processor to:
- receive a request including information identifying a version of a service;
- determine a template corresponding to the version of the service, the template determined from a set of versions of templates, the template specifying a plurality of elements and including metadata specifying a populator component for each of the elements;
- determine dependencies between the populator components based at least in part on the selected template;
- generate, based at least in part on the dependencies between the populator components, a dependency graph identifying data that is to be obtained for the response before one of the populator components can obtain data for the response;
- access, in accordance with the dependency graph, each of the populator components when all dependencies for that populator component are satisfied to obtain data for at least one of the elements;
- aggregate the data for each of the elements;
- and
- generate a response using the template when data is obtained for each of the plurality of elements.
A system for generating a version-specific response for a service, comprising:
- at least one processor implemented in hardware;
- and
- a storage memory device including instructions that, when executed by the at least one processor, causes the system to provide:
- a service configured to receive a request from a client, the request including information identifying a version of the service;
- an execution controller in communication with the Web service and able to receive the information from the service;
- a response generator configured to select a template definition corresponding to the version of the service in response to a request from the execution controller, the template definition selected from a set of versions of template definitions, the template definition specifying a plurality of elements including prerequisite elements defining elements of the template that must be completed before other elements of the template are completed, and including metadata specifying a populator component for each of the elements;
- a graph building component configured to:
- determine dependencies between the populator components based at least in part on the selected template definition;
- and
- generate a data dependency graph indicating:
- at least one populator component that is called without regard to the plurality of elements of the template being filled;
- and
- other populator components that are called to fill elements of the template after the prerequisite elements of the template have been filled;
- and
- a queue configured to receive data from the at least one populator component and the other populator components,
- wherein the execution controller is programmed to:
- obtain first data using the at least one populator component as specified by the data dependency graph and receive the first data to the queue;
- and
- after obtaining the first data using the at least one populator component, obtain second data using each of the other populator components as specified by the data dependency graph and receive the second data to the queue, the execution controller being further operable to aggregate the first data and the second data from the queue and send the aggregated data to the response generator to generate a response using the determined template definition.
Dependencies are inferred from the claim text.