US8201082B1
Active / In Force
US
⏱️ 2.0 years remaining
Dynamic generation of documents
Assignee: Amazon Technologies Inc
•
Filing: 2008-10-27
•
Granted: 2012-06-12
•
Expires: 2028-10-27
Abstract
Abstract A system and methods for dynamically generating electronic documents, such as web pages or XML documents, provides increased program parallelism and reduced document generation times. In one embodiment, two separate threads are used: a first thread that processes a document template, and a second thread that handles requests for data. Also disclosed are methods for selectively combining particular data requests for transmission on a network.
Inventors
- 👤 Paul Nordstrom
- 👤 Eric Benson
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-10-29 10:56
CPC Classifications
G; G06; G06F; G06F16/00; G06F16/90; G06F16/95; G06F16/958; G06F40/00; G06F40/10; G06F40/12; G06F40/131; G06F40/166; G06F40/186
Claims Analysis
Total Claims: 29
Claim 1
Independent Claim
353 words
A computer system operable to dynamically generate documents in response to document requests received from user computing devices, the computer system comprising: one or more processors; and a document generation process executed by said one or more processors, said document generation process comprising a first thread and a second thread that interoperate with each other to dynamically generate requested documents, said first thread and second thread operable to remain persistent over multiple document requests, and operable to communicate with each other using a shared memory location of the computer system; wherein the first thread is responsive to a request for a document by using a document template to generate data requests such that multiple data requests are pending concurrently, and is operable to incorporate responses to said data requests into the requested document according to the document template, said first thread operable to enter into a blocked state when a response to a pending data request is needed to continue generating the requested document; wherein the second thread is responsive to said data requests generated by the first thread by generating service requests that are sent by the computer system on a network to corresponding services such that multiple service requests are processed in parallel by the services, and the second thread is capable of responding to receipt of a service request response by unblocking the first thread to enable the first thread to use requested data included in the service request response to continue generating the requested document; wherein the second thread is operable to combine at least a first service request that corresponds to a first service with a second service request that corresponds to a second service to generate a combined service request that is sent on a network to the first and second services, such that network traffic is reduced in comparison to network traffic associated with sending the first and second service requests separately, and wherein the computer system is programmed to send the combined service request on the network as a publish-subscribe message using a subject to which both the first service and the second service subscribe.
Claim 2
Dependent Claim
353 words
A computer system operable to dynamically generate documents in response to document requests received from user computing devices, the computer system comprising: one or more processors; and a document generation process executed by said one or more processors, said document generation process comprising a first thread and a second thread that interoperate with each other to dynamically generate requested documents, said first thread and second thread operable to remain persistent over multiple document requests, and operable to communicate with each other using a shared memory location of the computer system; wherein the first thread is responsive to a request for a document by using a document template to generate data requests such that multiple data requests are pending concurrently, and is operable to incorporate responses to said data requests into the requested document according to the document template, said first thread operable to enter into a blocked state when a response to a pending data request is needed to continue generating the requested document; wherein the second thread is responsive to said data requests generated by the first thread by generating service requests that are sent by the computer system on a network to corresponding services such that multiple service requests are processed in parallel by the services, and the second thread is capable of responding to receipt of a service request response by unblocking the first thread to enable the first thread to use requested data included in the service request response to continue generating the requested document; wherein the second thread is operable to combine at least a first service request that corresponds to a first service with a second service request that corresponds to a second service to generate a combined service request that is sent on a network to the first and second services, such that network traffic is reduced in comparison to network traffic associated with sending the first and second service requests separately, and wherein the computer system is programmed to send the combined service request on the network as a publish-subscribe message using a subject to which both the first service and the second service subscribe.
Claim 3
Dependent Claim
39 words
The computer system of claim 1 , wherein the second thread is operable to aggregate multiple service requests corresponding to multiple data requests generated by the first thread into a single service request message for transmission on said network.
Claim 4
Dependent Claim
50 words
The computer system of claim 2 , wherein the second thread is operable to use a timer to delay transmissions of service requests to enable service requests that are initiated at different points in time during generation of a requested document to be combined into said single service request message.
Claim 5
Dependent Claim
50 words
The computer system of claim 1 , wherein the second thread is capable of generating a plurality of service requests in response to a single data request from the first thread, and is additionally capable of combining results of said plurality of service requests for delivery to the first thread.
Claim 6
Dependent Claim
31 words
The computer system of claim 4 , wherein at least one of the plurality of service requests is dependent upon a result of another one of the plurality of service requests.
Claim 7
Dependent Claim
37 words
The computer system of claim 1 , wherein the second thread is an event-driven thread that is invoked by the first thread by writing to the shared memory location and then generating an operating system trigger event.
Claim 8
Dependent Claim
45 words
The computer system of claim 1 , wherein the second thread is responsive to the computer system receiving a document request while the first thread is in a blocked state by unblocking the first thread to enable the first thread to process the document request.
Claim 9
Dependent Claim
21 words
The computer system of claim 1 , wherein the service requests include requests for dynamically generated content generated by corresponding services.
Claim 10
Dependent Claim
310 words
A computer-implemented method of dynamically generating a document in response to a document request, the method comprising: processing a document template with a first thread that runs on a computer system such that the first thread generates a plurality of data requests to request data for generating the document, said data requests generated such that multiple data requests are pending concurrently, wherein the first thread is operable to incorporate responses to said data requests into the requested document according to the document template, and to enter into a blocked state when a response to a pending data request is needed to continue generating the requested document; with a second thread that runs on the computer system, responding to said data requests generated by the first thread by generating service requests that are transmitted by the computer system on a network to corresponding services to fulfill said data requests, said service requests generated such that multiple service requests are processed in parallel by the services, wherein the first and second threads communicate with each other using a shared memory location of the computer system; and with the second thread, responding to receipt by the computer system of a service request response while the first thread is blocked by unblocking the first thread to enable the first thread to use data included in the service request response to continue generating the requested document; wherein the second thread, in generating said service requests, combines a first service request that corresponds to a first service with at least a second service request that corresponds to a second service to generate a combined service request that is sent to the first and second services, and the method further comprises transmitting the combined service request on a network as a publish-subscribe message having a subject to which both the first service and the second service subscribe.
Claim 11
Dependent Claim
310 words
A computer-implemented method of dynamically generating a document in response to a document request, the method comprising: processing a document template with a first thread that runs on a computer system such that the first thread generates a plurality of data requests to request data for generating the document, said data requests generated such that multiple data requests are pending concurrently, wherein the first thread is operable to incorporate responses to said data requests into the requested document according to the document template, and to enter into a blocked state when a response to a pending data request is needed to continue generating the requested document; with a second thread that runs on the computer system, responding to said data requests generated by the first thread by generating service requests that are transmitted by the computer system on a network to corresponding services to fulfill said data requests, said service requests generated such that multiple service requests are processed in parallel by the services, wherein the first and second threads communicate with each other using a shared memory location of the computer system; and with the second thread, responding to receipt by the computer system of a service request response while the first thread is blocked by unblocking the first thread to enable the first thread to use data included in the service request response to continue generating the requested document; wherein the second thread, in generating said service requests, combines a first service request that corresponds to a first service with at least a second service request that corresponds to a second service to generate a combined service request that is sent to the first and second services, and the method further comprises transmitting the combined service request on a network as a publish-subscribe message having a subject to which both the first service and the second service subscribe.
Claim 12
Dependent Claim
34 words
The method of claim 9 , further comprising, with the second thread, aggregating multiple service requests corresponding to multiple data requests into a single service request to reduce a number of service request transmissions.
Claim 13
Dependent Claim
45 words
The method of claim 10 , wherein the second thread uses a timer to delay transmissions of service requests to enable service requests that are initiated at different points in time during generation of a requested document to be combined into said single service request.
Claim 14
Dependent Claim
45 words
The method of claim 9 , further comprising, with said second thread, responding to a single data request from the first thread by generating a plurality of service requests, and by combining results of said plurality of service requests for delivery to the first thread.
Claim 15
Dependent Claim
30 words
The method of claim 12 , wherein at least one of the plurality of service requests is dependent upon a result of another one of the plurality of service requests.
Claim 16
Dependent Claim
35 words
The method of claim 9 , wherein the second thread is an event-driven thread that is invoked by the first thread by writing to the shared memory location and generating an operating system trigger event.
Claim 17
Dependent Claim
44 words
The method of claim 9 , wherein the second thread further responds to the computer system receiving a document request while the first thread is in a blocked state by unblocking the first thread to enable the first thread to process the document request.
Claim 18
Dependent Claim
20 words
The method of claim 9 , wherein the service requests include requests for dynamically generated content generated by corresponding services.
Claim 19
Dependent Claim
34 words
The method of claim 9 , further comprising processing at least one subsequent document request with the first and second threads, such that the first and second threads remain persistent over multiple document requests.
Claim 20
Dependent Claim
200 words
A computer-implemented method of efficiently retrieving data for dynamically generating a requested document, the method comprising: receiving a first service request generated to request data for generating the requested document, said first service request directed to a first service accessible on a network; delaying transmission of the first service request on said network to wait for one or more additional service requests to be generated; while transmission of the first service request is delayed, receiving a second service request generated to request additional data for generating the requested document, said second service request directed to a second service that is separate from the first service; combining at least the first service request and the second service request into a combined service request message; and transmitting the combined service request message on the network for processing by services to which the combined service request corresponds, wherein the combined service request message is transmitted on the network as a publish-subscribe message using a subject to which both the first service and the second service subscribe; wherein the method reduces network traffic in comparison to a quantity of network traffic associated with sending the first and second service requests separately on the network.
Claim 21
Dependent Claim
200 words
A computer-implemented method of efficiently retrieving data for dynamically generating a requested document, the method comprising: receiving a first service request generated to request data for generating the requested document, said first service request directed to a first service accessible on a network; delaying transmission of the first service request on said network to wait for one or more additional service requests to be generated; while transmission of the first service request is delayed, receiving a second service request generated to request additional data for generating the requested document, said second service request directed to a second service that is separate from the first service; combining at least the first service request and the second service request into a combined service request message; and transmitting the combined service request message on the network for processing by services to which the combined service request corresponds, wherein the combined service request message is transmitted on the network as a publish-subscribe message using a subject to which both the first service and the second service subscribe; wherein the method reduces network traffic in comparison to a quantity of network traffic associated with sending the first and second service requests separately on the network.
Claim 22
Dependent Claim
41 words
The method of claim 18 , wherein the step of delaying transmission of the first service request is performed based at least partly on collected timing data reflective of an amount of time the first service request takes to be serviced.
Claim 23
Dependent Claim
33 words
The method of claim 18 , wherein the step of delaying transmission of the first service request is performed based at least party on a complexity factor associated with the first service request.
Claim 24
Dependent Claim
44 words
The method of claim 18 , wherein the first and second service requests are generated by a first thread that runs on a computer system, and said steps of delaying and combining are performed by a second thread that runs on the computer system.
Claim 25
Dependent Claim
29 words
The method of claim 21 , wherein the second thread combines the first and second service requests for transmission in response to the first thread entering a blocked state.
Claim 26
Dependent Claim
27 words
The method of claim 21 , wherein the second thread is an event-driven thread that uses a timer to delay the transmission of the first service request.
Claim 27
Dependent Claim
17 words
A non-transitory computer-readable medium which stores executable program code that embodies the method of claim 18 .
Claim 28
Dependent Claim
203 words
A computer system comprising one or more computing devices, said computer system programmed to perform a method that comprises: receiving a first service request generated to request data for generating the requested document, said first service request directed to a first service accessible on a network; delaying transmission of the first service request on said network to wait for one or more additional service requests to be generated; while transmission of the first service request is delayed, receiving a second service request generated to request additional data for generating the requested document, said second service request directed to a second service that is separate from the first service; combining at least the first service request and the second service request into a combined service request message; and transmitting the combined service request message on the network for processing by services to which the combined service request corresponds, wherein the combined service request message is transmitted on the network as a publish-subscribe message using a subject to which both the first service and the second service subscribe; wherein the method reduces network traffic in comparison to a quantity of network traffic associated with sending the first and second service requests separately on the network.
Claim 29
Dependent Claim
203 words
A computer system comprising one or more computing devices, said computer system programmed to perform a method that comprises: receiving a first service request generated to request data for generating the requested document, said first service request directed to a first service accessible on a network; delaying transmission of the first service request on said network to wait for one or more additional service requests to be generated; while transmission of the first service request is delayed, receiving a second service request generated to request additional data for generating the requested document, said second service request directed to a second service that is separate from the first service; combining at least the first service request and the second service request into a combined service request message; and transmitting the combined service request message on the network for processing by services to which the combined service request corresponds, wherein the combined service request message is transmitted on the network as a publish-subscribe message using a subject to which both the first service and the second service subscribe; wherein the method reduces network traffic in comparison to a quantity of network traffic associated with sending the first and second service requests separately on the network.
References Cited (Backward Citations)
US6415335B1
Cited
WO1997045799A1
Cited
US5715453A
Cited
US20020147805A1
Cited
US20010005852A1
Cited
US5974443A
Cited
US6012098A
Cited
US6526521B1
Cited
US6430624B1
Cited
WO2001057721A3
Cited
WO2001057721A2
Cited
US6779002B1
Cited
US6732185B1
Cited
US20040015476A1
Cited
US20020103856A1
Cited
US20030101213A1
Cited
US20030204490A1
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2015-06-12 | 2015-12-12 | 2016-06-12 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2019-06-12 | 2019-12-12 | 2020-06-12 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2023-06-12 | 2023-12-12 | 2024-06-12 | $7700.00 | Window Closed / Lapsed |