RELATED APPLICATIONSThis application is a divisional of U.S. patent application No. 09/523,165, filed on Mar. 10, 2000, entitled SYSTEM, METHOD AND APPARATUS FOR UTILIZING TRANSACTION DATABASES IN A CLIENT—SERVER ENVIRONMENT, by Anthony C. Fascenda.[0001]
The following applications of common assignee may contain some common disclosure and may relate to the present invention:[0002]
U.S. patent application No. 09/195,483, entitled “Method and System for Providing Localized Information”, filed Nov. 17, 1998; and[0003]
U.S. patent application No. 09/195,482, entitled “Method And System For Providing Formatted Information via a Two-way Communications System”, filed Nov. 17, 1998, each of which is incorporated herein by reference in its entirety.[0004]
Additionally, the following applications of common assignee may contain some common disclosure, and are believed to have an effective filing date identical with that of the present invention:[0005]
U.S. patent application No. 09/___,___, entitled “System and Method for Providing Focused Information Based on Implicit and Explicit Information Derived From User Histories (Attorney Docket No. 1753.0040000);[0006]
U.S. patent application No. 09/___,___, entitled “System, Method and Apparatus for Automatically and Dynamically Updating Options, Features, and/or Services Available to a Client Device” (Attorney Docket No. 1753.0050000);[0007]
U.S. patent application No. 09/___,___, entitled “System and Method for Providing Information that is Responsive to a Freeform Request” (Attorney Docket No. 1753.0060000);[0008]
U.S. patent application No. 09/___,___, entitled “System, Method, and Apparatus for Initial Configuration of a Client Device” (Attorney Docket No. 1753.0080000);[0009]
U.S. patent application No. 09/___,___ entitled “System, Method, and Apparatus for Providing Value Added to Specific Users” (Attorney Docket No. 1753.0090000); and[0010]
U.S. patent application No. 09/___,___, entitled “Method and Apparatus for Providing Services to a User of a Client Device Configured by Templates that Reference other Templates” (Attorney Docket No. 1753.0100000), each of which is incorporated herein by reference in its entirety.[0011]
BACKGROUND OF THE INVENTION1. Field of the Invention[0012]
The present invention relates generally to a system including intercommunicating client and server applications, and more particularly, to such a system, a method and an apparatus for maintaining a database of past transactions in a client device.[0013]
2. Related Art[0014]
A typical client-server environment includes a client application, such as an Internet web-browser, and a server application respectively executing on independent computer based platforms and communicating with one another. The client application submits information requests to the server application in response to user input at the client end. In response, the server transmits information responses to the client application. A user interacts with the client-server environment using a Graphical User Interface (GUI) of the client application.[0015]
Often, a user interacts with a browser such that the browser submits numerous consecutive information and/or branch requests over a relatively short period of time to retrieve information and/or navigate through a plurality of service provider sites (such as an Internet web pages). Using a conventional browser (such as Microsoft Explorer), each of the consecutive requests can effectively cancel or negate a previous request, whereby one or more information and/or branch requests are disadvantageously lost to the user. For example, When the user issues a first requests for a first Internet file (e.g., by designating a Uniform Resource Locator (URL)) and then issues a second request for a different Internet file prior to receiving a response to the first request, the conventional browser fails to display a response to the first request even when such a request is received. From the user's perspective, the second request negates the first request. This can also occur when the user navigates through web sites. For example, if the user “clicks” on a first hypertext link and then “clicks” on a second hypertext link prior to a jump to the first link, a jump to the first link fails to occur; thus, initiating the second link effectively negated initiating the first link.[0016]
There are many reasons that a user may make consecutive subsequent requests after an initial request. The user may decide that even though the initial request is important, subsequent requests are more important. Alternatively, the user may grow impatient while waiting for a response to the initial request. Whatever the reason, there is a good chance the first request is still of interest to the user.[0017]
Therefore, there is a need in a client application to receive and retain multiple server responses to consecutive client requests regardless of the temporal relationship between the multiple responses and consecutive requests. There is a related need in the client to provide the user with a mechanism for retrieving the retained response information and to display such information as necessary.[0018]
A large number of client or browser applications can operate in a distributed service environment. A distributed service environment is one in which the numerous client applications interact with one or more server applications, each of the server applications hosting a wide variety of data services provided by a variety of “private” and possibly public service providers. Wireless client devices including the above mentioned client applications can operate in such a distributed service environment.[0019]
Therefore, the above mentioned needs also pertain to wireless devices operating in the distributed environment.[0020]
SUMMARY OF THE INVENTIONThe present invention is directed to a system, method and apparatus for utilizing transaction databases in a client-server environment. In one embodiment, the present invention uses transaction databases to receive and retain multiple server responses to consecutive client requests regardless of the temporal relationship between the multiple responses and consecutive requests.[0021]
One embodiment of the present invention is a method used in a client-server system including one or more servers and a client device having a client transaction database and a user interface adapted to enable a user to enter requests. The method enables the client device to accept multiple user requests, receive multiple server responses, and display pages relating to the multiple server responses. The method includes the steps of receiving a first user request from the user via the user interface and sending a first client request based on the first user request. The method also includes the steps of receiving a second user request from the user via the user interface, prior to receiving a response to the first client request, and sending a second client request based on the second user request. When a server response to the first request is received, first information based on the server response (to the first request) is stored in the client transaction database. When a server response to the second request is received, second information based on the server response (to the second request) is stored in the client transaction database.[0022]
The method further includes the steps of retrieving one of the first information and the second information from the client transaction database and displaying one of a first display page relating to the first information and a second display page relating to the second information. Then, in response to a further user request from the user via the user interface, the other one of the first information and the second information is retrieved from the client transaction database, and the other one of the first display page and the second display page is displayed. More specifically, in one embodiment, if the server response to the first request is received prior to the server response to the second request, then the first information is retrieved from the client transaction database, and the first display page is displayed. The user can then cause the second information to be retrieved from the client transaction database and displayed by entering a further user request via the user interface. Alternatively, if the server response to the second request is received prior to the server response to the first request, then the second information is retrieved from the client transaction database, and the second display page is displayed. The user can then cause the first information to be retrieved from the client transaction database and displayed by entering a further user request via the user interface. In another embodiment, the display page (i.e., the second display page) relating to the last made client request (i.e., the second client request) is displayed first, regardless of which response was received first. In still another embodiment, a display page relating to the first made client request (i.e., the first client request) is displayed first, regardless of which response was received first.[0023]
Another embodiment of the present invention is a method for use in a client-server system including one or more servers and a client device having a client transaction database, a client template database, and a user interface adapted to enable a user to enter requests. The method includes the steps of receiving a user request from the user via the user interface and retrieving a template from the client template database based on the user request. The template includes one or more data fields. The method also includes the step of retrieving information from the client transaction database based on the template, wherein the information relates to the one or more data fields of the template. A page based on the template and the information relating to the one or more data field is then displayed.[0024]
The method also includes the steps of receiving a refresh request from the user via the user interface and sending a client request based on the refresh request. Additionally, the method includes the steps of receiving a server response to the client request and storing further information in the client transaction database based on the server response, wherein the further information relates to at least one of the data fields. An updated page is then displayed based on the template and the further information. The updated page can additionally be based on the original information retrieved from the client transaction database.[0025]
In another embodiment, the present invention relates to a method for responding to a request from a client device. This method includes the steps of receiving a client request from a client device, wherein the client request includes a template identifier and a client identifier. The method also includes the step of retrieving a template including one or more data fields from a server template database based on the template identifier. The method further includes the steps of collecting first information (e.g., from an information store) relating to the one or more data fields, determining a server response to the request based on the first information, and sending the server response to the client device.[0026]
According to another embodiment, the method also includes the steps of retrieving second information from a server transaction database based on the template identifier and the client identifier. In this embodiment the response to the request is determined based on the first information and the second information. For example, in this embodiment the response can be based on differences between the first information and the second information.[0027]
A further embodiment of the present invention is directed to a client-server based system for providing a user with information in response to user requests. The system includes a server controller that receives information requests over a communication network and transmits server responses over the communication network in response to the information requests. A client device, coupled to the communication network, is adapted to receive user requests and then transmit the information requests based on the user requests. The client device includes a display for displaying information, wherein the client device is adapted to receive, retain, and display multiple server responses corresponding to consecutive information requests regardless of a temporal relationship between the multiple responses and the consecutive information requests.[0028]
Advantages and additional features of the present invention, as well as the structure and operation of various embodiments of the present invention, are described in detail below with reference to the accompanying drawings.[0029]
BRIEF DESCRIPTION OF THE FIGURESThe features, objects, and advantages of the present invention will become more apparent from the detailed description set fourth below when taken in conjunction with the drawings in which like reference characters identify corresponding elements throughout and wherein:[0030]
FIGS. 1A and 1B illustrate exemplary communications systems in which the present invention is useful;[0031]
FIG. 2A illustrates an exemplary two-way communications client device for use with the present invention;[0032]
FIG. 2B is an illustration of a paging device manufactured by Research In Motion (RIM), Limited, of Waterloo, Ontario, Canada.[0033]
FIG. 3 is an illustration of a logical architecture corresponding to the communication system of FIGS. 1A and 1B and the communications device of FIG. 2A.[0034]
FIG. 4A is an illustration at a high level of an embodiment of a template used in the logical architecture of FIG. 3.[0035]
FIG. 4B is a diagrammatic representation of an exemplary content portion of a template used in the logical architecture of FIG. 3.[0036]
FIG. 4C is an illustration of a completed template or display page corresponding to the template of FIG. 4B.[0037]
FIG. 4D is an illustration of a list of exemplary definitions or descriptors defining the template of FIG. 4B and the display page of FIG. 4C.[0038]
FIG. 5 is an illustration of an exemplary hierarchy of display pages.[0039]
FIG. 6A is an illustration of an exemplary user interface including linked pages defined by a hierarchy of templates, before a template update.[0040]
FIG. 6B is an illustration of the exemplary user interface of FIG. 6B, after the template update.[0041]
FIG. 7B is an illustration of an exemplary information table stored in a server transaction database used in the logical architecture of FIG. 3.[0042]
FIG. 7B is an illustration of an exemplary information table stored in a server template database used in the logical architecture of FIG. 3.[0043]
FIG. 8 is an illustration of an exemplary information table stored in a client transaction database of the client device of FIG. 2A.[0044]
FIG. 9A is an illustration of an exemplary information request message transmitted by a client application used in the logical architecture of FIG. 3.[0045]
FIG. 9B is an illustration of an exemplary information response message transmitted by a server application used in the logical architecture of FIG. 3.[0046]
FIG. 10 is a flow chart of an exemplary method of requesting information at a client in the logical architecture of FIG. 3, according to an embodiment of the present invention.[0047]
FIG. 11 is a flow chart of an exemplary method of responding to an information request of FIG. 10 at a server in the logical architecture of FIG. 3, according to an embodiment of the present invention.[0048]
FIG. 12 is a flow chart of exemplary method steps expanding on the method of FIG. 11.[0049]
FIG. 13 is a illustration of exemplary display pages at a client device before and after receipt of an information response at the client device.[0050]
FIG. 14 is a flow chart of an exemplary method of receiving multiple responses to multiple requests at a client device.[0051]
FIG. 15 is a flow chart of another exemplary method of receiving multiple responses to multiple requests at a client device.[0052]
FIG. 16 is an exemplary computer system which may be used to perform the operations of the present invention.[0053]
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTSI. Introduction[0054]
The present invention relates to a method and system for automatically initializing and configuring a client device (e.g., a two-way paging device, a wireless phone, a personal data assistant, or a desk top computer). The present invention can be used in a two-way wireless communications system. Additionally, the present invention can be used in various other types of communications system. For example, the present invention can be used with the Internet. In an embodiment where the present invention is used with the Internet, a client device can be, for example, a wireless device that wirelessly accesses the Internet (e.g., a PalmPilot® or a wireless phone) or a personal computer that is wired to the Internet.[0055]
Preferred embodiments of the present invention are discussed in detail below. While specific steps, configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only.[0056]
II. Exemplary Communications Systems[0057]
An exemplary[0058]wireless communication system100 in which the present invention is useful is illustrated in FIG. 1A.Communications system100 includes a plurality ofcell sites102 each having a coverage area that is typically about 5 to 10 miles in diameter. A coverage area of one cell site often overlaps a portion of a coverage area of another cell site, which are illustrated for exemplary purposes by the hexagonal regions. Eachcell site102 includes anantenna104 for transmitting and receiving messages to and from two-way wireless client devices108 (e.g., a two-way pager, a wireless phone, a hand held computing device) that are located within a geographic coverage area of thecell site102. Alternatively, separate antennas may be used for sending and receiving messages, as would be apparent to a person skilled in the relevant art. Eachcell102 is coupled tocommunications network110, which can be, for example, an X.25 packet switched network.Communications network110 may include, but is not limited to land based links such as fiber optics or terrestrial microwave, and/or satellite based links, as would also be apparent to a person skilled in the relevant art.
Each[0059]cell site102 is in communications with a message system center (MSC)120 that includes a subscriber database (also referred to as a user database) that maintains records of all subscribers (also referred to as users) on the system, a unique identity sequence for the subscriber's client device, and an indication of the cell site from which the client device last sent a message (such as an acknowledgment message or a request message). Preferably, communications between each cell cite102 andMSC120 is accomplished throughcommunications network110. Alternatively, eachcell site102 can have a dedicated link toMSC120.
[0060]Communications network110 can be coupled to a public switched telephone network (PSTN)112 so that a message can be sent to and fromclient device108 viaPSTN112.
A message can also be sent from one[0061]client device108 to anotherclient device108 usingcommunications system100.
In one embodiment,[0062]communications system100 is the Bell South Wireless Data network (also known as the RAM Mobile Data network) or the ARDIS network, which are both well known two-way nationwide wireless packet data networks.
A client device (e.g., two-way wireless communications device)[0063]108 typically identifies itself toMSC120 by sending a registration or identification signal. Such signals include a data field including at least one unique identifier, such as a Mobile Identification Number (MIN) and/or Electronic Serial Number (ESN). A MIN, which can be reprogrammed, is analogous to a telephone number. An ESN is hard-coded and fixed such that it difficult, if not impossible to change. Some devices include both a MIN and an ESN. The client device used in an embodiment of the present invention, discussed in more detail below, only includes one unique identifier, known as a Mobile Access Number (MAN), which is similar to an ESN in that it is hard-coded and fixed. The identification signal sent byclient device108 can include one or more of the above discussed unique identifiers, or any other similar unique identifier. Such identification information can be periodically transmitted byclient device108 and/or included with other types of messages sent byclient device108. Such unique identifiers are also sent with each request sent by aclient device108.
An optional function of[0064]MSC120 is to determine whether the unique identifier of a client device is valid. A received unique identifier, such as a unique identity sequence comprising a string of digitally represented alphanumeric characters, can be compared to a maintained database of unique identifiers (i.e., MINs, ESNs, MANs) to detect fraud.
[0065]MSC120 can keep track of the approximate whereabouts of eachclient device108 by keeping track of which cell site102 a message, sent by aclient device108, originated. WhenMSC120 is thus informed of the approximate whereabouts of eachindividual client device108, it can later limit the number ofcell sites102 from which it transmits a message addressed to aparticular client device108.MSC120 can even limit the transmission of a message to only onecell site120 having a coverage area within which theparticular client device108 is believed to be located. The coverage area of a limited number of cell cites102 (possibly only a single cell site or a last know site and its adjacent sites) shall be referred to as a targeted coverage area. Thus, the targeted area can be the area covered by a single cell site or a slightly larger area that is also covered by a few adjacent cell sites. This limited or “targetted” transmission is much more efficient than broadcast-type transmission where a message is transmitted from every cell site, regardless of a location of aclient device108 to which the message is addressed.
Servers[0066]114 (typically controlled by a service provider) are supported bycommunications system100. That is,communications system100 provides for message delivery between aserver114 and one ormore client devices108.Servers114 can communicate directly withclient devices108 or indirectly withclient devices108 viacommunications network110. Alternatively,servers114 can communicate withcommunications network110 throughPSTN112. In one embodiment, aserver114 provides information to aclient device108 upon receiving a request from theclient device108. Additionally,servers114 can initiate the sending of information (e.g., unsolicited information) to aclient device108. This can be done periodically or upon a triggering event. Additional details about the types of services and the information provided byservices providers114 are discussed below.
The present invention is also useful in data networks such as a local area network (LAN), a home area network (HAN), and a wide area network (WAN). For example, the present invention is useful in the largest present day WAN known as the Internet, and in smaller WANs. The Internet is a world-wide set of interconnected computer networks that can be used to access a growing amount and variety of information electronically. One method of accessing information on the Internet is known as the World Wide Web (www, or the “web”). The web is a distributed, hypermedia system, and functions as a client-server based information presentation system. Information that is intended to be accessible over the web is generally stored in the form of “pages” on servers (e.g., general purpose computers). Users can access a web site using general-purpose computers, wireless hand held computing devices, Internet capable wireless phones (e.g., a Wireless Application Protocol (WAP) Internet enabled telephone), and the like, referred to as clients, by specifying the uniform resource locator (URL) of the site. FIG. 1B is a network block diagram showing a plurality of[0067]clients108 andservers114 connected to theInternet118.
When a client sends a request to a server the request specifies, among other things, a destination address (e.g., a URL) and a source address that can be used to identify a user. A part of the URL known as the Domain Name is passed to a domain server (DNS) to be translated to a network address. The network address specifies the Internet protocol (IP) address of the intended server. The client request is passed to the server having the network address.[0068]
[0069]Servers114 maintain or otherwise have access to local or remote databases that store and/or provide various types of data. For example, referring to FIG. 1A,remote databases130 are maintained bydata sources132. FIG. 1A also shows alocal database116 that is maintained byserver114.Servers114 can communicate withdata sources132 through dedicated links or throughcommunications network110, for example. The type and number of databases, and the form of communication of data between theservers114 and the databases, is implementation specific.
The invention covers the ability of a server system to provide information to client devices via a wireless communications system, which typically has a plurality of cell sites that are coupled to a communications network. The invention also covers the ability of a server system to provide information to client devices via a wired communications system, or via a communications system consisting of a combination of wired and wireless links. The functions performed by the server system can comprise software running on one or more general purpose computers or on telecommunications-specific hardware. Alternatively, the combination of the software and hardware to accomplish the functions of the present invention can be conceptualized as a union of server controllers that each perform a discrete task, such as: sending a request from a client device in response to user input at the client device; receiving the request at a server over the communications network; identifying a user based on the request; determining a response based on the request; sending the response to the client device of the user, or the like. One, two, or more of these discrete tasks can be performed by a single server controller. That is, the tasks performed by a first server controller and a second server controller can be performed by a single server controller and still be within the spirit and scope of the present invention. Alternatively, the discrete tasks can be performed by any number of server controllers. A further description of exemplary software and hardware controllers is provided below.[0070]
III. Exemplary Client Devices[0071]
An exemplary two-way wireless[0072]communications client device108 is illustrated in FIG. 2A.Client device108 includes anantenna202, atransmitter204, areceiver206, amicroprocessor208, adisplay210 and akeypad212.Transmitter204 is controlled bymicroprocessor208 and transmitsmessages using antenna202. Messages received from a transmitter of thecommunications system100 are received throughantenna202 or a separate antenna (not shown). The received messages are routed fromantenna202 toreceiver206 and processed bymicroprocessor208, for example.Display210 can be a liquid crystal display and is used for displaying, to a user (also referred to as subscriber) ofclient device108, information received viacommunications system100.Display210 can also display lists and/or menus from which a subscriber can make selections and perform various functions. Other methods of presenting the received information, such as aurally through a speaker or through another type of display, are not precluded.Keypad212 can include as few as one button, but may also include an entire alphanumeric keypad, touch pad, or can be integrated with a display, such as a touch-screen display.Client device108 also includes amemory214 that can store software and/or data.Microprocessor208 can write to and read frommemory214.
In one embodiment,[0073]client device108 is an Inter@ctive™ Pager950 manufactured by Research In Motion (RIM), Limited, of Waterloo, Ontario, Canada. The RIM Inter@ctive pager (RIM pager) is a commercially available device that provides for two-way wireless communications. The RIM pager, shown in FIG. 2B, includes a 31-key keypad212,roller wheel214 that is similar to a mouse, andscreen display210 with 8 lines of text by approximately 28 characters per line. The RIM page also includes a built-in internal radio modem for two-way wireless communications over a cellular network such as the BellSouth network. In another embodiment,client device108 is a Palm Pilot™ computing device, manufacture by 3Com Corporation, of Santa Clara, Calif.Client device108 can also be a wireless communication device such as, but not limited to, a wireless telephone, a data transceiver, and a paging receiver.Client device108 can be fixed, portable, or mobile, such as a mobile telephone. Of course the use of other two-way communications devices is within the spirit and scope of the present invention.
For some embodiments,[0074]client device108 can be a personal computer that, for example, communicates withservers114 via a network such as theInternet118.Client device108 can also be a personal computing device that wirelessly accesses the Internet. Those of ordinary skill in the art will envision other implementations ofclient device108 and appreciate that they are encompassed by the present invention.
IV. Embodiments of the Invention[0075]
A.1. Client-Server Architecture[0076]
The system described in connection with FIGS. 1A, 1B,[0077]2A and2B provides a plurality of ever expanding information services to a user ofclient device108. In an example application, a user requests stock prices fromserver114, usingclient device108. In response,server114 transmits the requested stock prices toclient device108.Client device108 then displays the stock prices to the user ondisplay210.
A[0078]logical architecture300 of an embodiment of the present invention is depicted in FIG. 3.Logical architecture300 corresponds to the system of FIGS. 1A and 1B.Logical architecture300 includes aclient application304 residing inclient device108, and aserver application306 residing inserver114. Client application304 (also referred to as client304) andserver application306 are, for example, computer programs respectively supported by computer controllers and memories ofclient device108 andserver114.
For example, server[0079]114 (also referred to as server controller114) comprises the hardware and/or software required to accomplish specific functions of the present invention.Server114 can be conceptualized as a union of servers that each perform a discrete task. One, two, or more of these discrete tasks can be performed by asingle server114. That is, the tasks performed by afirst server114 and asecond server114 can be performed by asingle server114 and still be within the spirit and scope of the present invention. Alternatively, the discrete tasks can be performed by any number ofservers114. That is, the task performed by asingle server114 can be performed by a plurality of servers.
Similarly, client[0080]304 (also referred to as client controller304) comprises the hardware and/or software required to accomplish specific functions of the present invention.Client304 can be conceptualized as a union of clients that each perform a discrete task. One, two, or more of these discrete tasks can be performed by asingle client304. That is, the tasks performed by afirst client304 and asecond client304 can be performed by asingle client304 and still be within the spirit and scope of the present invention. Alternatively, the discrete tasks can be performed by any number ofclients304. That is, the task performed by asingle client304 can be performed by a plurality of clients.
A.2. Client Overview[0081]
[0082]Client304 includes auser interface308 atclient device108 for allowing a user to interact with one or more information services supported by the system of the present invention.User interface308 displays formatted information pages ondisplay210 and permits the user to navigate between such display pages.User interface308 also provides the user with a mechanism to enter requests and/or commands using, for example, keypad212 (see FIG. 2B).
[0083]Client304 interfaces with aclient template database310 and anclient transaction database312 stored in a memory ofclient device108.Client template database310 includes a plurality ofindividual templates314, typically associated with one or more information services provided by the system of the present invention. In the present invention,client304 anduser interface308 are defined and configured, and can be updated, in accordance withindividual templates314. As will be further described below, eachtemplate314 is typically associated with a display page, and uniquely defines the type of information and a layout or format of information presented to the user on the display page. Eachtemplate314 can also define a set of available actions a user can take when viewing an associated display page, thereby allowing, for example, the user to request information from the display page and to navigate between display pages.
[0084]Client device108 can transmitinformation request message316 toserver114 when appropriate.Client device108 also receivesresponse message318 and can stores information in the response message inclient transaction database312, so as to preserve the information for later retrieval. Also,user interface308 can display requested information to the user.
A.3. Server and Server Database Overview[0085]
[0086]Server114 can communicate with a plurality ofclient devices108.Server114 distributes requested information toclient devices108, and maintains configuration control over the client devices. To perform such tasks,server114 interfaces with a plurality of information stores, including aserver template database330, aserver transaction database332, and an exemplaryservices information store334.
[0087]Services information store334 includes real-time data from data sources132 (not shown in FIG. 3; see FIG. 1A).Services information store334 can include data relating to finance and stocks, sports, weather, airline schedules, and the like.Services information store334 can be alocal database116 or aremote database130. Whenserver114 receivesinformation request316 fromclient device108,server114 retrieves the requested information frominformation store334, and transmits the information toclient device108 usinginformation response message318.
[0088]Server transaction database332 includes tables mapping individual client device unique identifiers (for example, MANs, MINs, or ESNs) to authorized services and associated templates.Server114 uses such mapping tables to validate/authorize client requests.Server114 maintains transaction event data for past and on-going transactions betweenserver114 andclients304 inserver transaction database332. Such data is used to track and control the various transactions in the system of the present invention and to build transaction history tables for each of theclient devices108.
[0089]Server template database330 includes the latest or most current versions of all of the available templates in the system of the present invention.Server template database330 also includes tables mapping individual client device unique identifiers to the most current template versions authorized forclient devices108 associated with the unique identifiers. As new services, features and options are added to the system of the present invention, new templates are stored inserver template database330 and/or existing stored templates are updated, to reflect the additions. Therefore, at any given time, it is possible aclient device108 includes an old version of a template, that is, an out-of-date template that requires updating. Whenserver114 receivesinformation request message316 fromclient device108,server114 determines whether the template (at client device108) associated with the request message is the most current template (for example, an updated template). If the template is an old version,server114 retrieves the most current template fromserver template database330, and then transmits an appropriate template update, along with the requested information, toclient device108 usingresponse message318. In this manner,server114 distributes the most current template versions toclient devices108 on a per access and an as needed basis. Thus,server114 efficiently distributes template updates toclient devices108 to render new service features and options available to the users, and maintain configuration control over the clients. Further details regarding initially configuring and reconfiguring/updating a client device with templates are respectively provided in: U.S. patent application No. 09/___,___, entitled “System, Method and Apparatus for Initial Configuration of a Client Device” (Attorney Docket No. 1753.0080000); and U.S. patent application No. 09/___,___, entitled “System, Method and Apparatus for Automatically and Dynamically Updating Options, Features, and/or Services Available to a Client Device” (Attorney Docket No. 1753.0050000), each of which was wholly incorporated by reference above.
B.1. Template Overview[0090]
In the present invention, the templates stored in[0091]client device108 define a configuration of the client device. The configuration ofclient device108 can determine the data services a user can access usingclient device108, including various data service options and/or features. Also, the configuration can determine the way in whichclient device108 interacts with the user to provide data services to the user. This can include, but is not limited to, the types of pages displayed to the user, the appearance of the display pages, the types and/or arrangements of information displayed on the pages, the navigable hierarchy of display pages presented to the user, the types and/or operations of actions the user can initiate when the user is presented with the display pages, the types of requests a user can enter viaclient device108 and/or the content of client requests resulting from such entered user requests. The configuration ofclient device108 can also determine howclient device108 responds to various user requests.
FIG. 4A is an illustration at a high level of an embodiment of[0092]template314.Template314 includes atemplate header400 having a template identifier400a,a template version identifier or number400b,and an optional template title400c.Template314 also includes acontent portion402 and anaction portion404.Content portion402 includes definitions or descriptors (such as textual, symbolic and/or graphical descriptors) that define a layout and appearance of an associated display page ondisplay210. In other words,content portion402 specifies an arrangement of information fields on the associated display page.
On the other hand,[0093]action portion404 includes definitions (such as textual, symbolic, and/or graphical descriptors) specifying a set of actions a user can take with respect to the associated display page. For instance,action portion404 can include: menu action definitions404a,such as menu pull-down actions and scroll-wheel shortcuts; keyboard action definitions404b,such as keyboard shortcuts (e.g., press “W” for weather service requests); branching action definitions404c,allowing the user to branch from the current template and display page to a next template and display page linked with the current template; and external references404d,such as URLs. Such actions are available to the user at the display page associated withtemplate314.
[0094]Content portion402 is now further described.Content portion402 tropically includes text (for example, header or title information, and field labels) and variable descriptors (for example, stock quote information).Content portion402 defines a format for the variable information and text within the display page.Content portion402 can also include references to tables and graphical entities stored in the client device memory.
A diagrammatic representation of the content portion of an[0095]exemplary template406 is depicted in FIG. 4B. The content portion oftemplate406 includes the following definitions:
a[0096]title410 for displaying the text “PRECIOUS METALS”;
a[0097]field412 for displaying current time;
a plurality of information field identifiers or[0098]labels414 arranged in a column; and
a first set of information fields[0099]416 for displaying variable information (such as stock prices) and a second set ofvariable fields418 for displaying further variable information corresponding to the information field identifiers.
[0100]Template406 is incomplete because none of the information fields are populated with the specified variable information. Whenclient device108 receives requested information corresponding totemplate406,client device108 populates an instance oftemplate406 with the requested information, thereby, creating a completed template.User interface308 displays the completed template to the user as a display page. A display page/completedtemplate420 corresponding totemplate406, is depicted in FIG. 4C. Indisplay page420,field412,fields416, and fields418 are respectively populated with current time, hi/low stock prices, and stock price deviations.
In the present invention, each template can incorporate a unique set of actions available to the user when the template is displayed as a display page, as mentioned above. In other words, actions can vary from template to template and page to page in the present invention. Template actions are further described below.[0101]
FIG. 4D is an illustration of a list of exemplary definitions or descriptors that define template[0102]406 (FIG. 4B), and thus display page420 (FIG. 4C), as the template can be stored in either client orserver template databases310 or330. The illustrated list of definitions correspond to a data service for precious metal prices. Inheader400, “NT”, “VERSION”, and “TI” respectively specify the template name “temp1”, version “1.1”, and title “PRECIOUS METALS”.
Content portion[0103]402 (corresponding tolabels414, and fields416 and418 of FIG. 4B) includes a plurality ofcontent definitions436 for metal pricing information. A spaced pair of percent symbols (%) delimits each information field. For example, the definition “<SILVER %0:11%%1:6%” causes two variable fields of information to be displayed after the text “SILVER” on the display ofclient device108.Action portion404 includesexemplary action definitions442 and444. The actions defined byaction definitions442 and444 are available to the user when the display page associated with the template (for example,display page420 of FIG. 4C) is being displayed.
[0104]Action definition442 defines a menu choice “refresh” in a list of displayed menu items. When “refresh” is selected in one embodiment,client device108 retrieves the most recently received information relating to template temp, from client transaction database319, and refreshes the display with the retrieved data. In another embodiment, selecting “refresh” causesclient device108 to first update the display with information retrieved formclient transaction database312 as just described, and then transmit an information request for new information to refresh the displayed information. In still another embodiment, the first step is omitted from the just described two-step embodiment.
Action definition[0105]444 defines a shortcut key as “SP”, the “space bar” key (also referred to as the “symbol key”) onkeypad212, which when pressed, causes a branch to a predetermined home template or page called temphome.Client device108 then displays the home page associated with temphome.
The templates of the present invention provide a powerful and convenient mechanism for configuring, reconfiguring, and updating[0106]client device108 anduser interface308. As the system of the present invention adds new services and/or expands existing service options and features, correspondingly new and/or updated templates are automatically distributed to and stored inclient devices108. The new and/or updated templates correspondingly expand the service features and options available to the user so that the user can access the new and expanded services.
In the present invention,[0107]templates314 stored intemplate data base310, and the actions specified in each of the templates, define an interconnected hierarchy of user navigable display pages atclient device108. FIG. 5 is an illustration of an exemplary hierarchy of display pages502. In the example hierarchy,user interface308 displays a home orwelcome page504 to the user whenclient device108 is first powered-on.Home page504 is a service starting page. Using actions, represented byconnectors506, defined for the home page by the associated home page template, the user can branch to aquote request page508, aportfolio page510, an informative “about”page512, and a set-uppage514. The user can navigate between the aforementioned pages and aquote display page516, achart page518, auser alert page520,user page522 and anadd symbol page524.
Templates and the actions defined thereby advantageously provide a convenient mechanism for altering[0108]user interface308 and associated applications in accordance with expanding services, without changing the underlying user interface or client computer programs. An exemplary update touser interface308 is now described with reference to FIGS. 6A and 6B. With reference to FIG. 6A, auser interface602 is defined by aquote entry page604, aquote display page606, aportfolio page608 and an FxAlert page610 (e.g., for current precious metal prices) linked together byactions612.
With reference to FIG. 6B, to add a new service or user capability, for example, the ability of obtaining the latest news for a particular stock, a new template, defining a[0109]new page614 called “Equity News,” can be composed for accessing such latest new stock information. New page/template614 can be linked to and thus only accessible fromquote display page606, assumingnew page614 should be accessible only after a particular stock quote is displayed onquote display page606. To effect such a link, anaction616 can be added to quote display page (template)606. For example, the addedaction616 can define a branch key N, which when pressed, causes a branch fromquote display page606 toEquity News page614 in accordance with the above assumption.
C.1. Server Transaction Database[0110]
As described above in connection with FIG. 3,[0111]server114 accessesserver transaction database330 to manage transactions withnumerous clients304. FIG. 7A is an illustration of an exemplary transaction table700 stored inserver transaction database330. Exemplary table700 includes aclient identification column702, atemplate identifier column703, an optionaltemplate title column704, atemplate version column706, anindex column708, a date column710, atime column712, and aparameters column714. Each row ofclient identification column702 includes a unique identifier of a client device108 (e.g., MAN, ESN, MIN). Each row oftemplate identifier column703 includes a unique identifier of a template (e.g., temp1, temp2, temp3). Each row oftemplate version column706 specifies the version of the template in the corresponding row ofcolumn703. Accordingly, entries intemplate version column706 specify the version of a template (i.e., identified in column703) that a specific client (i.e., identified in column702) currently has stored in itsclient template database310. Each row ofindex column708 identifies the data type that is used to populate the corresponding template incolumn703. The data included inparameters column714 is the data that was sent to the corresponding client (in column702) thelast time server114 provided that client with the data type ofcolumn708. Each row of date column710 andtime column712 specifies whenserver114 last provided the client device ofcolumn702 with the data included inparameters column714.
C.2. Server Template Database[0112]
As described above in connection with FIG. 3,[0113]server114 accessesserver template database330 to maintain configuration control overclient devices108. FIG. 7B is an illustration of an exemplary table750 stored inserver template database330. Table750 includes acolumn754 listing the identifiers of current templates stored indatabase330, acolumn756 listing template version numbers for the identified templates, and acolumn758 listing the definitions of the identified templates. Each row760 corresponds to an identified template, for example, template temp1. In another embodiment,version column756 is deleted since a template version can be determined from a template header included in the template definition.
C.3. Client Transaction Database[0114]
FIG. 8 is an illustration of an exemplary table[0115]800 stored inclient transaction database312 ofclient device108. Table800 is essentially the same as server transaction table700 of FIG. 7A and discussed above, except that table800 does not include a client identifier column (e.g., column702). This is becauseclient transaction database312, and thus table800, are specific to only oneclient device108.
D.1. Information Request and Response Messages[0116]
FIG. 9A is an illustration of an exemplary information request message[0117]900 (corresponding toinformation request message316 of FIG. 3) transmitted byclient device108. The information request message (e.g.,900) is also referred to as a client request, since it is initiated byclient device108. The fields ofmessage900 are arranged in accordance with an exemplary message format, and it is to be understood thatmessage900 can be arranged in other formats.Message900 includes a client device identifier (such as a MAN)902,transaction information904 used byclient device108 andserver114 to track the current transaction, a template identifier orname906, atemplate version identifier908 identifying the version of the named template stored intemplate database310, and a specific information request910.
In one embodiment,[0118]transaction information904 includes atransaction number912 and aclient state914.Client108 tracks each request usingtransaction number912, which onlyclient108 can increment.Client state number914 specifies the last successfully received update for the template identified bytemplate identifier906. In one embodiment,client108 can storetransaction number912 andclient state number914 in, and retrievetransaction number912 andclient state number914 from, additional columns (not shown) of server transaction database table700. Use oftransaction number912 andclient state number914 are discussed below.
[0119]Client device108increments transaction number912 every time it sends a client request toserver114.Only client device108 canincrement transaction number912. However,client device108 never incrementsclient state number914. Rather,server114 incrementsclient state number914 when it sends a server response toclient device108.
If[0120]client device108 issues multiple client requests (e.g., multiple requests for stock quotes AAPL, MSFT, GE, INTC, etc.), each request (e.g.,900) includes atransaction number914.Server114 responds to each request individually and echoes back theappropriate transaction number914 in each server response (e.g.,920). Each server response received byclient device108 is stored inclient transaction database310. Additionally, in one embodiment, a display page associated with the server response to the last (i.e., in time) client request is displayed to the user.
[0121]Client state914 is used byserver114 to determine the last successfully received (by client device108) server response to a particular client request. This is important becauseclient device108 may fail to receive a server response sent byserver114. Thus,server114 should save the last sent server response in, for example, a suspense file. Only when sever114 receives a new client request (i.e., for the same information) with the same state number does it write the data of the last server response (which was stored in the suspense file) toserver transaction database332. For example,server114 may receive a “state 6” client request and return a new “state 7” server response toclient device108. Ifclient device108 never receives the server response with “state 7”, then the nexttime client device108 makes the same client request it will again be a “state 6” client request. In this manner,server114 will know thatclient device108 never received the “state 7” server response. This enablesserver114 to use old “state 6” data (rather than the data last sent toclient device108, that is associated with “state 7”) when performing a comparison of old data to new data to thereby produce a server response.
In one embodiment, either[0122]client device108 orserver114 can resetclient state914 to zero when a server response includes a full update (as opposed to a server response that only includes changes).
FIG. 9B is an illustration of an exemplary information response message[0123]920 (corresponding to information response message318) transmitted byserver114. The information response message (e.g.,920) is also referred to as a server response, since it is initiated byserver114. Message920 (also referred to as server response920) includes requestedinformation922, provided in response to specific information request910 ofinformation request message900.
Another exemplary information response message (not shown) includes template update information to update a template in[0124]client device108.
E.1. Requesting Information—Client[0125]
Exemplary methods of requesting and responding to information requests are now described. FIG. 10 represents a series of[0126]method steps1000 performed byclient device108 in response to a request for information from a user. The method begins at astep1002 when the user ofclient device108 issues a request for information from a displayed page, viauser interface308.
At a[0127]next step1004,client device108 queriesclient template database310 to determine whether anappropriate template314 associated with the request is locally available. Ifclient device108 determines that the appropriate template is not locally available (i.e., if the answer to step1004 is NO). then, at astep1005,client device108 sends a get_template command toserver114. Further details of the get_template command andstep1005 are discussed in U.S. patent application No. (09/___,___), entitled “System, Method and Apparatus for Automatically and Dynamically Updating Options, Features, and/or Services Available to a Client Device” (Attorney Docket No. 1753.0050000), incorporated herein by reference above. If the appropriate template is locally available, then at astep1006,client device108 retrieves the appropriate template fromclient template database310.
If the appropriate template is locally available, then at a[0128]step1006, the appropriate template is retrieved fromclient template database310. At anext step1008, there is a determination whether data associated with the appropriate template is available fromclient transaction database312. If the answer to step1008 is YES, then flow continues to astep1010, where the template is populated with data fromclient transaction database312. The data retrieved fromclient transaction database312 is the data last received fromserver114 to populate the retrieved template (e.g., data from an earlier transaction). If the answer to step1008 is NO, then flow jumps directly to astep1016, which is discussed below.
In one embodiment, after[0129]step1010, in astep1012, the populated template is displayed (i.e., an associated page) ondisplay210 ofclient device108. Preferably a status (e.g., date and time) of the displayed information is also displayed. Accordingly, the appropriate template preferably includes a status field that can be populated with status data (e.g., date and time). The information displayed to the user can be stale, for example, the data can be days, hours, or seconds old, depending on whenclient108 last received the information to populate the appropriate template.
If the user directs[0130]client device108 to do something other than refresh the information (i.e., if the answer to step1014 is NO), thenclient device108 functions accordingly. For example, the user may initiate a branch action that causesclient device108 to display a different page.
At a[0131]decision step1014, if the user requests that the information (i.e., that populates the template) be refreshed with the “new” information (i.e., if the answer to step1014 is YES),client device108 composes and transmits an appropriate information request message toserver114, at astep1016. In one embodiment, a user can request refreshed information by pressing a predefined action key, such as the “enter” key or “space bar” key. Anexample request message900 is described above in connection with FIG. 9A.
In an alternative embodiment, flow jumps directly from[0132]step1008 to step1016, such thatclient device108 sends a request message toserver114 afterclient device108 retrieves data fromclient transaction database312. In another embodiment, flow jumps directly fromstep1006 to step1016, such thatclient device108 sends a request message toserver114 afterclient204 retrieves the appropriate template fromclient template database310.
E.2. Responding to an Information Request—Server[0133]
FIG. 11 represents a series of[0134]method steps1100 performed byserver114 in response to a request for information fromclient device108. The process begins at astep1102 whenserver114 receives a request message (e.g., request900) sent fromclient device108. At astep1104,server114 identifiesclient device108. This is accomplished using a unique identifier (e.g.902) included in the request. In this example,server114 recognizes that theclient device108 that sent the request message has a template for displaying the requested information, because the request (e.g.,900) includes a template identifier (e.g.,906). At this point,server114 can also determine whether the specific information request is authorized for the requesting MAN.
At a[0135]next step1106,server114 retrieves the latest (i.e., most current or up-to-date) version of the identified template (e.g., the template identified by template identifier906) fromserver template database330. At astep1108,server114 retrieves/derives the requested information required to populate the data fields of the template that was retrieved atstep1106. For example, atstep1108,server114 retrieves the requested information frominformation store334 in accordance with the most current template definition.
In a[0136]step1110,server114 determines whetherclient108 has the most current template. To make this determination,server114 comparestemplate version identifier906 of the template named ininformation request message900 against the version identifier for the same named template just retrieved from server template database330 (e.g., incolumn756 of table750 of FIG. 7B) atstep1106.
If[0137]server114 determines that the identifiedclient device108 does not have the latest version of the appropriate template (i.e., the answer to step1110 is NO), thenclient device108 has an “old” template that requires updating with a “new” template, namely, the template just retrieved fromserver template database330. Accordingly, at astep1112,server114 composes an information response message including:
a) information retrieved from[0138]information store334 atstep1108; and
b) template update information from the “new” template.[0139]
Further[0140]details regarding step1112 and template updating are discussed in U.S. patent application No. (09/___,___), entitled “System, Method and Apparatus for Automatically and Dynamically Updating Options, Features, and/or Services Available to a Client Device” (Attorney Docket No. 1753.0050000), incorporated herein by reference above.
On the other hand, if[0141]server114 determines atstep1110 thatclient device108 does not require a template update (i.e., the answer to step1110 is YES), thenserver114 composes an information response message using only the information retrieved from information store334 (e.g., message920), since a template update is unnecessary. At anext step1116,server114 transmits the composed information response message toclient108. For example,server114 transmitsresponse message920 or930 composed respectively atsteps1114 or1112.
An advantage of the present invention is that if the client device[0142]108 (to which the response message is being sent) has the most current template, then the composed and transmitted response message (e.g.,message920, composed in step1114) only includes the information required to populate and thus refresh a template. This significantly reduces the size of the response message (or messages) that is transmitted fromserver114 toclient device108. Minimizing the size of response messages reduces the cost and/or response time (also referred to as latency) for providing information services. For example, where a communications system provider charges on a volume basis, the less data transmitted means less cost to the user. Additionally, since latency is typically proportional to the amount of data being transmitted, the less data transmitted means lower latency. A further advantage is the reduction in a system transmission bandwidth, such that more users can be supported by the services of the system.
In one embodiment, the message that[0143]server114 composes at step1114 (and sends at step1116) includes all the data necessary to populate a template.
In another embodiment, the message that[0144]server114 composes at step1114 (and sends at step1116) includes the information that has changed sinceclient device108 last successfully received a server response (i.e., to populate the particular template) fromserver114, but does not include the information that has not changed sinceserver114 last sent a successfully received server response message. Accordingly, an advantage of this embodiment is that the size of the response message (or messages) is further reduced.
Further details of[0145]step1114, according to an embodiment of the present invention, are discussed with reference to FIG. 12. In astep1202,server114 queriesserver transaction database332 to determine the information, for the particular template, thatclient device108 has stored inclient transaction database312. For example,server114 searches table700, of FIG. 7A, based onclient identifier902 andtemplate identifier906 to determine what information was last sent toclient device108 for the identified template.
In a[0146]step1204,server114 then compares the information in each data field (i.e., the information retrieved instep1108 of FIG. 11) against the record of what was last successfully received by client device108 (i.e.. determined in step1202), to thereby determine the information that has changed (also referred to as the changed fields).
[0147]Steps1202 and1204 can be illustrated with reference to FIG. 13. An “old”page1302 represents the information (populating a precious metals template) thatclient device108 has stored in client transaction database312 (i.e., at step1202).Server114 determines thatclient device108 has such an “old”page of information usingserver transaction database332. A “new”page1304 represents up-to-date or current information (populating the same precious metals template) retrieved byserver114 atstep1108. Achange definition1306 represents a change in information betweenold page1302 andnew page1304.Server114 determineschange definition1306 by comparing the information inold page1302 to the information innew page1304.Server114 compresseschange definition1306 using a data compression technique to produce a compressed change definition1308, thereby further reducing the size of the response message.
In one embodiment, at[0148]step1202,server114 queriesserver transaction database332, based also on client state number912 (i.e., in addition toclient identifier902 and template identifier906) to ensure thatserver114 actually compares the up-to-date information (i.e., the information retrieved in step1108) against whatclient device108 actually has stored in itsclient transaction database312. If this query is not based also onclient state number912, there is a possibility thatserver114 will perform the comparison using information that was last sent toclient device108, but never received byclient device108.
Referring again to FIG. 11, after[0149]server114 transmits the information response message (e.g.,900) instep1116,client device108 receives the response message.Client device108 then updatesclient transaction database312 with information from the response message. For example,client device108 replaces a row of client transaction table800 containing “old” information with “new” information received from the response message. In another example, if the response message only includes a change definition, thenclient device108 only replaces those columns of a row of transaction table800 specified in the change definition.Client device108 can then refresh the current display page by retrieving the “new” information fromclient transaction database312. For example,client device108 can use the “new” information to populate the data field(s) of the template retrieved atstep1006.
An advantage of the present invention is realized when[0150]client device108 sends one or more additional request messages toserver114 prior to receiving a response message(s) to one or more previous requests (i.e.. back from server114). This advantage is also present whenclient device108 sends the first request message to afirst server114 and a second request message to a second (i.e., different)server114. A series of exemplary method steps1400 performed atclient device108 are now described to illustrate this advantage.
E.3. Multiple Consecutive Client Requests and Server Responses[0151]
Assume[0152]client device108 sends a first request message toserver114 and then a second request message toserver114 prior to receiving a response message to the first request message. Referring to FIG. 14, at aninitial step1402,client device108 receives a response to the first request. In astep1404,client device108 updates a row of client transaction database table800 based on the response to the first request. For example,client device108 updates a first row of transaction database table800 using first information that is based on the response to the first request.Client device108 uses the template identifier (e.g.,906) in the response message (e.g.,920) to determine which row to update. Next, in astep1406,client device108 displays a first page using the first information in the updated first row of client transaction database table800.
Next, in a[0153]step1408,client device108 receives a response to the second request. In astep1410,client device108 updates a row of client transaction database table800 based on the response to the second request. For example,client device108 updates a second row of transaction database table800 using second information that is based on the response to the second request. Again,client device108 uses the template identifier (e.g.,906) in the second response message (e.g.,920) to determine which row to update. At astep1412,client device108 can then display a second page using the second information in the updated second row of client transaction database table800, in response to a request by the user via the user interface312 (e.g., in response to the pressing of a back arrow key). Accordingly, the use ofclient transaction database312 enablesclient device108 to send one or more additional request messages to server114 (or multiple servers114), prior to receiving response message(s) to one or more previous requests (i.e., back from server114), without the additional request(s) negating the previous request(s).
In one embodiment, the display page relating to the last made client request is displayed first, regardless of which server response is first received at[0154]client device108. In still another embodiment, a display page relating to the first made client request is displayed first, regardless of which server response is first received atclient device108.
The present invention can be used to improve many systems and applications. For example, when the present invention is used in a browser application, and a user (i.e., of the browser) submits numerous consecutive information and/or branch requests over a relatively short period of time, the transaction database of the present invention stores multiple responses to the numerous requests. The user of the browser can then peruse the pages associated with the numerous responses at his or her convenience. That is, the present invention stores the numerous responses in a transaction database enabling the user to retrieve information and/or navigate through a plurality of service provider sites (such as an Internet web pages) one after another (without requiring either further user action, except, for example, a next or previous request, or the browser to again retrieve information and/or navigate to a site).[0155]
In contrast, when using a conventional browser (such as Microsoft Internet Explorer), each consecutive request effectively cancels or negates a previous request, whereby one or more information and/or branch requests are disadvantageously lost to the user. For example, when a user of a conventional browser issues a first request for a first Internet file (e.g.. by designating a Uniform Resource Locator (URL)) and then issues a second request for a different Internet file, prior to receiving a response to the first request, the conventional browser will never display a response to the first request. Accordingly, from the user's perspective, the second request negates the first request. This can also occur when the user navigates through web sites. For example, if the user “clicks” on a first hypertext link and then “clicks” on a second hypertext link prior to a jump to the first link, a jump to the first link fails to occur. Thus, initiating the second link effectively negated initiating the first link. The present invention can be used to overcome these disadvantages of a conventional browser, as is now described with reference to FIG. 15.[0156]
FIG. 15 is a[0157]flow chart1500 of an exemplary method overcoming the above mentioned disadvantages of a conventional browser. The method steps in FIG. 15 correspond to steps atclient device108. At afirst step1502, the user enters a first user request, for example, a page refresh command, viauser interface108. In response to the first user request, at anext step1504,client device108 sends a first information request toserver114.
At a[0158]next step1506, the user enters a second user request viauser interface108. The first and second user requests can be issued from respective first and second display pages. Also, the time separation between the first and second user requests can range between milliseconds and hours or even days. In response to the second user request, at anext step1508,client device108 sends a second information request toserver114.
At a next step (not shown)[0159]server114 composes first and second information responses corresponding to the first and second information requests and then transmits the first and second information responses. At anext step1510,client device108 receives the first information response and stores first information associated with the first information response inclient transaction database310. At anext step1512,client device108 receives the second information response and stores second information associated with the second information response inclient transaction database310. The time separation between receipt of the first and second server responses can range between milliseconds and hours or even days. Also, in another embodiment, the order of receipt of the first and second responses is reversed.
At a[0160]next step1514,client device108 refreshes a display page associated with the second user request with the second information. In response to another user request, at anext step1516,client device108 retrieves the first information fromclient transaction database312 and displays the first information to a display page.
In this manner,[0161]client device108 receives, retains, and displays as required, multiple server responses to multiple, consecutive information requests, regardless of the order in which the requests were issued or the responses were received.
F.1. Hardware and Software Implementations[0162]
[0163]Server114 can perform specific features of the present invention using server controllers, which in effect comprise a computer system. Although communication-specific hardware can be used to implement the present invention, the following description of a general purpose computer system is provided for completeness. The present invention is preferably implemented in software. Alternatively, the invention may be implemented using hardware or a combination of hardware and software. Consequently, the invention may be implemented in a computer system or other processing system. An example of such a computer system1600 is shown in FIG. 16. In the present invention, for example, client andserver applications304 and306 each executes on distinct computer systems1600. The computer system1600 includes one or more processors, such asprocessor1604. Theprocessor1604 is connected to a communication infrastructure1606 (for example, a bus or network). Various software implementations are described in terms of this exemplary computer system. After reading this description, it will become apparent to a person skilled in the relevant art how to implement the invention using other computer systems and/or computer architectures.
Computer system[0164]1600 also includes amain memory1608, preferably random access memory (RAM), and may also include asecondary memory1610. Thesecondary memory1610 may include, for example, ahard disk drive1612 and/or aremovable storage drive1614, representing a floppy disk drive, a magnetic tape drive, an optical disk drive, etc. Theremovable storage drive1614 reads from and/or writes to a removable storage unit1618 in a well known manner. Removable storage unit1618, represents a floppy disk, magnetic tape, optical disk, etc. which is read by and written to byremovable storage drive1614. As will be appreciated, the removable storage unit1618 includes a computer usable storage medium having stored therein computer software and/or data.
In alternative implementations,[0165]secondary memory1610 may include other similar means for allowing computer programs or other instructions to be loaded into computer system1600. Such means may include, for example, aremovable storage unit1622 and aninterface1620. Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and otherremovable storage units1622 andinterfaces1620 which allow software and data to be transferred from theremovable storage unit1622 to computer system1600.
Computer system[0166]1600 may also include acommunications interface1624.Communications interface1624 allows software and data to be transferred between computer system1600 and external devices. Examples ofcommunications interface1624 may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, etc. Software and data transferred viacommunications interface1624 are in the form ofsignals1628 which may be electronic, electromagnetic, optical or other signals capable of being received bycommunications interface1624. Thesesignals1628 are provided tocommunications interface1624 via a communications path1626. Communications path1626 carriessignals1628 and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link and other communications channels.
In this document, the terms “computer program medium” and “computer usable medium” are used to generally refer to media such as[0167]removable storage drive1614, a hard disk installed inhard disk drive1612, and signals1628. These computer program products are means for providing software to computer system1600.
Computer programs (also called computer control logic) are stored in[0168]main memory1608 and/orsecondary memory1610. Computer programs may also be received viacommunications interface1624. Such computer programs, when executed, enable the computer system1600 to implement the present invention as discussed herein. In particular, the computer programs, when executed, enable theprocessor1604 to implement the process of the present invention. Accordingly, such computer programs represent controllers of the computer system1600. In a preferred embodiment of the invention, the processes performed byserver114 andserver application306, and byclient device108 andclient application304, are all performed by computer control logic. Also, client andserver template databases310 and330, and client andserver transaction databases312 and332 are stored inrespective memories1608 and/orrespective memories1610. Where the invention is implemented using software, the software may be stored in a computer program product and loaded into computer system1600 usingremovable storage drive1614,hard drive1612 orcommunications interface1624.
In another embodiment, features of the invention are implemented primarily in hardware using, for example, hardware components such as application specific integrated circuits (ASICs). Implementation of the hardware state machine so as to perform the functions described herein will be apparent to persons skilled in the relevant art(s).[0169]
V. Conclusion[0170]
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example, and not limitation. It will be apparent to persons skilled in the relevant art that various changes in form and detail can be made therein without departing from the spirit and scope of the invention.[0171]
The present invention has been described above with the aid of functional building blocks illustrating the performance of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. Any such alternate boundaries are thus within the scope and spirit of the claimed invention. One skilled in the art will recognize that these functional building blocks can be implemented by discrete components, application specific integrated circuits, processors executing appropriate software and the like or any combination thereof. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.[0172]
All cited patent documents and publications in the above description are incorporated herein by reference.[0173]