The invention is generally related to computers and computer software, and in particular to systems, methods, and computer program products for processing requests with a cache structure and generating responses to the requests.
Computer technology is increasingly used in the travel industry to manage, support, book/reserve, and process travel reservations, as well as data associated therewith. Generally, third party reservation agents, such as travel agents, and/or customers (e.g., travelers) often utilize computer based devices/terminals (e.g., client devices) to interface with an availability processing system, such as a Global Distribution System (GDS), to book travel arrangements and/or travel-related services for the customer. When reserving travel-related services using such client devices in communication with such availability processing systems, a travel agent and/or customer may initiate a reservation session between a client device and the availability processing system to book one or more travel inventory items (e.g., a flight ticket, a hotel room accommodation, etc.) corresponding to the travel-related services (e.g., flights, hotels, rail transportation, dining reservations, etc.) for the customer during the reservation session. In turn, the availability processing system may initiate an inventory session with one or more inventory systems that manage inventory for one or more travel merchants and/or travel service providers to determine availability and/or revenue related data.
Consequently, a need exists in the art for improved systems, methods, and computer program products for processing requests with a cache structure and generating responses to the requests, such as availability shopping requests at reservation systems.
Embodiments of the invention generally comprise systems, methods, and computer program products for determining flight-date availability at an availability processing system. The availability processing system may include an availability cache that generally stores availability data for a plurality of available flight-dates. The availability data for each flight-date includes availability information for a plurality of possible flight-date contexts, plurality of possible connecting flights, a plurality of possible points of sale, a plurality of possible points of commencement, and/or a plurality of possible origin and destination pairs. Consistent with some embodiments of the invention, an availability shopping request may be received at the availability processing system, where the availability shopping request identifies at least one requested flight-date having a departure point, an arrival point, and a flight-date context. Furthermore, the at least one requested flight-date may be associated with at least one travel solution having an origin and destination pair. Availability data associated with the at least one flight-date may be determined by querying the availability cache based at least in part on the departure point and the arrival point of the at least one requested flight-date and/or the origin and destination pair from the availability data for the plurality of available flight-dates stored by the availability cache. An availability shopping reply that indicates the availability for the at least one requested flight-date may be generated based at least in part on the retrieved availability data, the flight-date context of the at least one requested flight-date, and the origin and destination pair of the at least one travel solution.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various embodiments of the invention and, together with a general description of the invention given above and the detailed description of the embodiments given below, serve to explain the embodiments of the invention.
Embodiments of the invention provide systems, methods, and computer program products for processing requests for travel objects. A processing system may maintain a cache that stores data for a plurality of travel objects, where data for each travel object may be segmented based on one or more possible contexts and/or one or more possible geographical identifiers. A request identifying at least one travel object may be received at the processing system, where the requested travel object may comprise a departure point, an arrival point, and a context. The processing system may query the cache to determine data associated with the at least one requested travel object. The determined data may comprise one or more segmentations of data stored in the cache associated with the at least one travel object. The processing system may analyze the data to determine one or more segmentations of the data that are relevant to the at least one requested travel object based on the departure point, arrival point, and/or context of the at least one requested travel object. A reply indicating an availability for the at least one requested travel object is generated based at least in part on the one or more relevant segmentations. In some embodiments, the cache may be an availability cache, a travel object may correspond to a flight-date, a geographical identifier may correspond to an origin and destination pair, a context may correspond to a flight-date context, data stored for each flight-date may comprise availability information that is segmented based at least in part on possible flight-date contexts and/or possible origin and destination pairs, a request may correspond to an availability shopping request, and a processing system may correspond to an availability processing system.
Embodiments of the invention provide systems, methods, and computer program products for determining availability for a requested flight-date based at least in part on a flight-date context and an origin and destination of an associated travel solution. Furthermore, embodiments of the invention determine the availability for the requested flight-date responsive to receiving an availability shopping request at an availability processing system. The availability processing system may determine the availability for the requested flight-date notably from availability data stored in an availability cache of the availability processing system. Therefore, embodiments of the invention facilitate determining availability for availability shopping requests without querying an inventory system of a travel merchant (e.g., an airline). By processing availability shopping requests at the availability processing system, embodiments of the invention reduce processing and communication resource utilization of inventory systems.
Turning now to the figures and particularly to
As shown, the availability processing system 102 may receive availability shopping queries from one or more client devices 110 and the availability processing system 102 may communicate an availability shopping replye to a requesting client device 110 in response. The availability processing system 102 may determine availability of one or more travel inventory items identified in the booking request by sending an availability request to one or more associated inventory systems 112. However, if the availability processing system 102 receives an availability shopping request, the availability processing system may instead determine availability for one or more travel inventory items of the availability shopping request based on availability data stored at the availability cache 108. The availability processing system 102 may generate an availability shopping reply that indicates availability for flight-dates identified in an associated availability shopping request. Generally, the client devices may be a personal computing device, tablet computer, thin client terminal, smart phone and/or other such computing device. In addition, the availability processing system 102 may communicate availability polling requests to one or more inventory systems 112 and receive availability polling responses including availability data from the one or more inventory systems 112, where the availability polling data of the availability polling responses may be stored in the availability cache 108. Generally, the one or more client devices 110, the availability processing system 102, the one or more reservation servers 104, the one or more availability servers 106, and/or the availability cache 108 may be connected to and communicate over a communication network 114, such as the Internet, a local area network (LAN), a wide area network (WAN), a cellular voice/data network, one or more high speed bus connections, and/or other such types of communication networks. Furthermore, as will be appreciated, in some embodiments the availability processing system 102 and inventory system 112 may be components of a GDS.
For interface with a user or operator, the availability processing system 102 may include a user interface 126 incorporating one or more user input/output devices, e.g., a keyboard, a pointing device, a display, a printer, etc. Otherwise, data may be communicated to and from another computer or terminal (e.g., a client device 110, the reservation server 104, the availability server 106, an inventory system 112) over a network interface 128 coupled to the communication network 114. The availability processing system 102 also may be connected to and/or in communication with one or more mass storage devices, which may be, for example, internal hard disk storage devices, external hard disk storage devices, external databases, storage area network devices, etc.
The availability processing system 102 may execute or otherwise rely upon various computer software applications, components, programs, objects, modules, engines, data structures, etc., including for example, the availability server 106 that may include a polling module 134, a read/write module 136, and/or other such components that may be configured to cause the availability processing system 102 to perform operations consistent with some embodiments of the invention. In general, the availability server 106 may be configured to receive an availability shopping request and generate an availability shopping reply for the availability shopping request. The polling module 134 may be configured to communicate polling requests to one or more inventory systems 112 and process availability information for one or more flight-dates received in availability polling responses from polled inventory systems 112. The read/write module 136 may be configured to retrieve availability data and/or store availability data at one or more memory locations associated with the availability cache 108.
Moreover, various applications, components, programs, objects, modules, engines etc. may also execute on one or more processors in another computer coupled to the availability processing system 102 via the communication network 114, e.g., in a distributed or client-server computing environment, whereby the processing required to implement the functions of a computer program may be allocated to multiple computers over a network. For example, some of the functionality described herein as being incorporated into an availability processing system 102, reservation server 104, availability server 106, and/or availability cache 108 and/or included modules/engines may be implemented in one or more servers. Generally, the modules/engines 132-136 may cause the processor 122 of the availability processing system 102 to perform operations consistent with embodiments of the invention.
The memory 124 of the availability processing system 102 may generally store one or more storage structures/databases including, for example, the availability cache 108 and a rules database 144. The databases/storage structures 108, 144 may comprise data and supporting data structures that store and organize the data. In particular, the storage structures/databases 108, 144 may be arranged with any database organization and/or structure including, but not limited to, a relational database, a hierarchical database, a network database, a cache memory indexing scheme, and/or combinations thereof. A database management system in the form of a computer software application executing as instructions on a processing unit of the availability processing system 102 may be used to access the information or data stored in records of the structures/databases 108, 144 in response to a query, where a query may be dynamically determined and executed one or more modules/engines 132-136.
In particular, the availability cache 108 may comprise an access layer 146 and a storage layer 148. The storage layer 148 may store information corresponding to travel inventory items. Generally, the storage layer 148 may store availability data for a plurality of available flight-dates, where the availability data for each available flight-date may include availability information that is segmented for a plurality of possible flight-date contexts, a plurality of possible connecting flight-dates, and/or a plurality of possible origin and destination pairs. In general, availability information may comprise a list of booking classes and designators (e.g., A, B, C, etc.), availability posting levels (e.g., 1, 2, 3, etc.). The availability information stored for each possible flight-date context and/or possible origin and destination pair may be referred to as a segmentation. As will be appreciated, embodiments of the invention maintain the availability cache such that up to date availability information for one or more segmentations may be accessible by the availability processing system for generating availability shopping replies. As will be further described herein, maintaining the availability cache 108 may generally comprise updating availability information for one or more segmentations as well as maintaining the data structure facilitated by the availability cache and the segmentation of the availability information stored therein. The read/write module 136 may cause availability data to be stored in and/or retrieved from the storage layer 148 to the access layer 146, where the access layer 146 may be used to store availability data retrieved from the storage layer 148 and/or availability data to be stored in the storage layer 148. The rules database 144 may store one or more storage rules that may be used to control storage of availability information in the availability cache 108 and/or retrieval of availability information from the availability cache 108. Moreover, the rules database 144 may store selection rules that may be used to determine a storage location for storing availability information if the availability cache 108 is organized in a distributed processing architecture.
Data storage rules may generally define various segmentations and/or instances of the availability cache 108 such that availability data for available flight-dates may be stored and/or retrieved from the availability cache 108 based at least in part on possible flight-date contexts, data storage rules, possible connecting flight-dates, possible points of sale/commencement, and/or possible origin and destination pairs. The data processing system 160 may comprise and/or be configured to access a selection rules database 170, where during execution of the one or more modules 132-136 data may be retrieved from and/or stored in a particular instance of the availability cache 108 based at least in part on one or more selection rules stored in the selection rules database 170. Therefore, in some embodiments of the invention, the availability processing system may maintain the availability cache 108 in a distributed manner based on one or more selection rules and/or data storage rules.
Further segmentation of availability data may be based at least in part on a point of commencement and/or a point of sale. A point of sale (POS) generally identifies a geographical location from which an availability shopping request originated. For example, a point of sale may identify a city and/or country associated with a travel agency and/or user device that generated the availability shopping request. A point of sale may be determined from the availability shopping request, where the availability shopping request may include a city and/or country identifier, an International Air Transport Association (IATA) code associated with a reservation agent, and/or other such data that may be used to determine a point of sale associated with the availability shopping request. A point of commencement (POC) generally refers to a geographical location at which a first travel segment of a journey occurs. For example, if a journey includes a first flight from city A to city B and a second flight from city B to city C, city A would be the point of commencement. Hence in some embodiments of the invention, the availability data may be further segmented based on a point of sale and/or a point of commencement, such that different availability information may be stored for different points of sale and/or points of commencement. Therefore, in some embodiments, retrieving the availability data for a requested flight-date may cause a processor to retrieve a plurality of possible availabilities stored as availability information based on possible markets, possible flight-date contexts, possible origin and destination pairs, possible points of sale, possible points of commencement, and/or possible connecting flight-dates.
Furthermore, as will be appreciated, consistent with embodiments of the invention, the availability processing system may determine availability data associated with a received availability shopping request by querying the availability cache 108. In general, the availability processing system may generate a query based on the availability shopping request, where the query may identify a departure point, an arrival point, and/or other such information that may be used to determine one or more segmentations of availability data stored in the availability cache 108 that are relevant to the availability shopping request. Similarly, when updating availability data stored in the availability cache 108 with updated availability information received from an inventory system, the availability processing system 102 determines one or more segmentations of the availability data stored in the cache to update.
Turning now to
Availability data for the at least one requested flight-date may be retrieved from the availability cache 108 based at least in part on the departure point and the arrival point of the at least one requested flight-date (block 304). In particular, availability data may be retrieved from the storage layer 148 to the access layer 146, such that the availability module 132 and read/write module 136 executing on the availability processing system may access the retrieved availability data stored in the access layer 146. For example, if the requested flight-date is a flight by Airline A on Dec. 25, 2014 from Atlanta (ATL) to John F. Kennedy Airport in New York City (JFK), the availability processing system 102 retrieves availability data for the flight-date offered by Airline A on Dec. 25, 2014 from ATL to JFK. As discussed, the retrieved availability data may include availability information for a plurality of possible flight-date contexts, a plurality of possible points of sale/commencement, a plurality of possible connecting flight-dates, and/or a plurality of possible origin and destination pairs. The availability information for each of the plurality of possible flight-date contexts, the plurality of possible connecting flight-dates, the plurality of possible points of sale/commencement, and/or the plurality of possible origin and destination pairs may be scored (block 306), such that the relevance of the retrieved availability information for each possible segmentation to the availability shopping request is evaluated based at least in part on the flight-date context, the connecting flight-date, the point of sale, the point of commencement, and/or the origin and destination associated with the at least one requested flight-date.
For example, if the availability data included availability information for a direct flight-date context, an online flight-date context, and an interline flight-date context, and the flight-date context for the flight-date identified in the availability shopping request was direct, the availability information for the direct flight-date context would be scored the highest, thereby indicating that it corresponds to the availability shopping request. The availability processing system 102 determines the availability for the at least one requested flight-date based upon the scored availability information (block 308), and the availability processing system 102 generates an availability shopping reply (block 310) that indicates the availability for the at least one requested flight-date.
In this example, the availability processing system 102 has retrieved availability data for the requested flight-date 352 and the flight-date context (i.e., online) of the requested flight-date 352 into the access layer 146 of the availability cache 108: a first availability information 356 that is associated with the origin and destination pair ‘AMS-PAR’ and the connecting flight-date ‘AY820’; a second availability information 358 that is associated with the origin and destination pair ‘AMS-OSL’ and the connecting flight-date ‘AY847’; a third availability information 360 that is associated with the origin and destination pair ‘AMS-OSL’ and the connecting flight-date ‘AY640’; a fourth availability information 362 that is associated with the origin and destination pair ‘AMS-CMN’ and the connecting flight-date ‘AY010’; and a fifth availability information that 364 is associated with the origin and destination pair ‘AMS-MAD’ and the connecting flight-date ‘AY956’. Based on an example scoring rule 356 that may be used to evaluate the availability information for each possible origin and destination pair and possible connecting flight-date, the availability processing system 102 may score the availability information. Since the requested flight-date 352 is associated with the ‘AMS-OSL’ origin and destination pair and the connecting flight-date is ‘AY847’ the availability cache scores the second availability information 358 the highest. While in this example, the availability data retrieved corresponds to an online flight-date context, consistent with some embodiments of the invention, other flight-date contexts may also be retrieved.
Turning now to
In some embodiments of the invention, cache chain logic may be implemented such that availability information received for a particular segmentation (i.e., a market, an origin and destination, a flight-date context, point of sale/commencement, and/or a connecting flight-date) may be stored in another segmentation based at least in part on the cache chain logic and one or more data storage rules. In these embodiments, the availability processing system 102 may determine whether any other availability information of any other segmentation may be updated with the updated availability information of the particular segmentation (block 410). If any other segmentation may be updated according to the cache chain logic and the one or more data rules (“Y” branch of block 410), the availability data corresponding to the related availability information is retrieved to the access layer 146 (block 412), and the updated availability information is stored into the availability data corresponding to the related availability information (block 414). Once the availability information has been updated in the access layer 146 (“N” branch of block 410 or from block 414), the availability cache may store the availability data that includes the updated availability information is stored in the storage layer 148 of the availability cache 108 (block 416).
Availability data 554 associated with the updated availability information 551 is retrieved to the access layer 146 from the storage layer 148. In this example, availability data for the flight date ‘YY1 25DEC14 AAA-BBB’ for ‘MARKET 1’ is retrieved. As shown, the updated availability information 551 is stored in the retrieved availability data 554 by replacing the existing availability information 556 that corresponds to the updated availability information 551 with the updated availability information 551 to thereby update the availability data 554. In this example, the updated availability information 551 included updated availability ‘A0 B2 C2’ for a direct flight-date context of the flight-date ‘YY1 25DEC14 AAA-BBB’ for ‘MARKET 1’, where the updated availability information is time stamped with ‘23/DEC/2014 09:43:00’. The existing availability information 556 associated with the updated availability information 551 is the availability ‘A0 B9 C5’ for the flight-date that is time stamped ‘19DEC14 14:05:01’, which indicates that the existing availability information 556 is older than the updated availability information 551 (which is generally the case for availability information received from polling responses). As shown in
For the online and interline flight-date context, availability information is further stored based on an origin and destination pair and a connecting flight-date. As may be generally seen in
Additional types of information may be stored in the availability cache 108 to facilitate consistent and accurate availability determinations based on the availability data stored therein. For example, flag watchers may be implemented in the cache storage to monitor the evolution of specific events. Each flag watcher may be associated to a timer, and monitoring availability data in the cache storage may be based at least in part on the timer, the flag watcher and a flag timestamp associated with availability data. In these embodiments, once an event or an action monitored by the flag watcher occurs a notification may be sent or a process may be triggered. For example, a flag watcher for the availability cache 108 may be configured to monitor changes in terms of availability posting. In response to a posting change, a notification may be sent to another component of the availability processing system 102 such that travel recommendations and/or travel solutions based on such a posting affected by the posting change may be reevaluated. As another example, the availability cache 108 may include an error flag that is triggered in response to receiving an error code in a polling response and/or inventory session. For example, an error code may indicate that a flight-date was cancelled. In response to receiving an error code indicating cancellation of a particular flight-date, the availability data for the particular flight-date may be cleared and the error flag may be stored in place of the cleared availability data. The error flag may be associated with a timestamp and timer, such that the error flag may be cleared after a defined time limit.
Generally, the architecture of the availability cache 108 comprising two levels of storage—the access layer 146 and the storage layer 148 facilitates quick retrieval of availability data (from the access layer 146) and persistency of availability data (through use of the storage layer 148). Counters may be implemented in the availability cache 108 such that consistency of stored availability data may be determined between the access layer 146 and the storage layer 148. With regard to the storage layer 148, a counter may be implemented to score a number of updates of availability data for a given flight-date. Similarly, a counter may be implemented in the access layer 146 and/or storage layer 148 to track availability data changes from received polling responses, such that availability data stored in the access layer 146 and the storage layer 148 may be compared to determine whether availability data from a polling response has been consistently stored in the layers 146, 148 of the availability cache 108. Moreover, as should be appreciated, while the availability cache 108, access layer 146, and/or storage layer 148 have been described in some instances as singular components, embodiments of the invention are not so limited. In general, the availability cache 108, access layer 146, and/or storage layer 148 may be implemented in a distributed computing platform such that instances and/or portions of the availability cache 108, access layer 146, and/or storage layer 148 may generally be distributed across a plurality of storage components, such as a plurality of storage components of a plurality of computing servers connected via one or more communication networks.
Therefore, embodiments of the invention may provide improvements to data processing systems for processing availability shopping requests for travel services. As will be appreciated, embodiments of the invention may reduce availability queries sent to inventory systems and reduce the processing thereof, thereby increasing computing resource availability of inventory systems for processing booking/reservation requests. Moreover, the structure and performance of the availability cache as described herein may increase granularity of availability information for availability shopping requests while improving response time for availability shopping requests. Consequently, embodiments of the invention provide improvements in the data processing systems of travel service reservation and inventory management through implementation of the systems and structures described herein. In particular, the availability cache and/or availability processing system described herein may improve response time for availability shopping requests and reduce computing resource utilization at inventory systems for processing availability shopping requests.
In general, the routines executed to implement the embodiments of the invention, whether implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions, or even a subset thereof, may be referred to herein as “computer program code,” or simply “program code.” Program code typically comprises computer readable instructions that are resident at various times in various memory and storage devices in a computer and that, when read and executed by one or more processors in a computer, cause that computer to perform the operations necessary to execute operations and/or elements embodying the various aspects of the embodiments of the invention. Computer readable program instructions for carrying out operations of the embodiments of the invention may be, for example, assembly language or either source code or object code written in any combination of one or more programming languages.
The program code embodied in any of the applications/modules described herein is capable of being individually or collectively distributed as a program product in a variety of different forms. In particular, the program code may be distributed using a computer readable storage medium having computer readable program instructions thereon for causing a processor to carry out aspects of the embodiments of the invention.
Computer readable storage media, which is inherently non-transitory, may include volatile and non-volatile, and removable and non-removable tangible media implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data. Computer readable storage media may further include RAM, ROM, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other solid state memory technology, portable compact disc read-only memory (CD-ROM), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and which can be read by a computer. A computer readable storage medium should not be construed as transitory signals per se (e.g., radio waves or other propagating electromagnetic waves, electromagnetic waves propagating through a transmission media such as a waveguide, or electrical signals transmitted through a wire). Computer readable program instructions may be downloaded to a computer, another type of programmable data processing apparatus, or another device from a computer readable storage medium or to an external computer or external storage device via a network.
Computer readable program instructions stored in a computer readable medium may be used to direct a computer, other types of programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions that implement the functions/acts specified in the flowcharts, sequence diagrams, and/or block diagrams. The computer program instructions may be provided to one or more processors of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the one or more processors, cause a series of computations to be performed to implement the functions and/or acts specified in the flowcharts, sequence diagrams, and/or block diagrams.
In certain alternative embodiments, the functions and/or acts specified in the flowcharts, sequence diagrams, and/or block diagrams may be re-ordered, processed serially, and/or processed concurrently without departing from the scope of the invention. Moreover, any of the flowcharts, sequence diagrams, and/or block diagrams may include more or fewer blocks than those illustrated consistent with embodiments of the invention.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the embodiments of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. Furthermore, to the extent that the terms “includes”, “having”, “has”, “with”, “comprised of”, or variants thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising”.
While all of the invention has been illustrated by a description of various embodiments and while these embodiments have been described in considerable detail, it is not the intention of the Applicant to restrict or in any way limit the scope of the appended claims to such detail. Additional advantages and modifications will readily appear to those skilled in the art. The invention in its broader aspects is therefore not limited to the specific details, representative apparatus and method, and illustrative examples shown and described. Accordingly, departures may be made from such details without departing from the spirit or scope of the Applicant's general inventive concept.