These and other features and advantages of the invention will be more readily understood from the following detailed description of the invention which is provided in connection with the accompanying drawings, in which:
In the following detailed description, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those of ordinary skill in the art to make and use the invention, and it is to be understood that structural, logical, or procedural changes may be made to the specific embodiments disclosed without departing from the sprit and scope of the present invention. References to “an” or “one” embodiment in this disclosure are not necessarily to the same embodiment, and such references mean at least one.
Within a single organization, the infrastructure for active forms shown in
In this example, we assume that the provider server modules 600 are controlled by different organizations that offer complementary products or services. The purpose of such a system is to allow a user the convenience of selecting a complementary set of products or services in a single transaction, rather than requiring separate transaction for each individual provider. By “complementary” products or services, we mean products or services that generally are selected together. For example, the services offered may be air travel, hotel reservations and car rental. However, for each of these services, only one provider is available to the user for any given trip. Typically we would expect that such an arrangement would exist among organizations that have developed a business relationship that include a joint marketing or cross marketing component.
Although the infrastructure may include multiple providers that offer the same product or service, such as air travel, the system can be designed such that there never is direct competition among providers. For example, the specific airline that provides air travel may be selected on the basis of geography: airline A is selected if the trip is within the United States, airline B is selected if the trip is within China, and so forth. It is quite common for airlines to have business relationships such that one partner promotes another partner for travel outside of the region served by the first partner.
Section of a provider by geography as described above is one means to select which one of multiple providers of similar products or services is presented to a user. Other criteria by which such a selection could be made include: the quality that the user desires, the price that the user is willing to pay, the time at which the user places an order, the time at which the product or service is desired, and so forth. For example, it may be that if the user desires a four-star hotel, then Hilton is selected as the provider of choice. However, if the user desires a two-start hotel, then Ramada is selected as the provider of choice.
The process of selecting a set of products or services can be divided into four phases: the user request phase, the intermediate request phase, the provider response phase and the confirmation phase. The user request phase, shown in
The second phase in the project is the intermediate request phase, as illustrated in
In step 1200, the intermediate server module 500 selects a set of providers to be queried based on the active form received from the user 100 during the user request phase as well as other factors. One type of additional factor could be information stored in a database, such as a mapping of hotel quality to hotel providers. Another type of additional factor could be the time at which the user's active form was received.
In step 1210, the intermediate server module 500 constructs an active form request to the provider server modules 600 based on the active form received from the user 100 during the user request phase. The request is sent from the intermediate server module 500 in step 1220 and is received by the provider server modules 600 in step 1230. The requested active form is sent from the provider server modules 600 in step 1240 and is received by the intermediate server module 500 in step 1250.
In step 1260, the intermediate server module 500 uses information from the user's active form to complete all the active forms for price and availability requests received in step 1250. In step 1270, the active forms from the provider server modules 600 are sent back to the provider server modules 600, and the provider server modules 600 receive the active forms from the intermediate server module 500 in step 1280.
Notice that in multi-organization infrastructures, the intermediate server module 500 modifies multiple active forms from the provider server modules 600 based on a single active form from the user 100. This active form replication, shown as step 1260 of
The third phase is the provider response phase is shown in
Notice that in multi-organization infrastructures, the intermediate server module 500 selects the appropriate providers based on a single active form from the user 100 and combines multiple responses from the provider server modules 600 into a single response for the user. This active form combining, shown as step 1330 of
The fourth phase, the provider confirmation phase, is used if the combined response has been accepted by the user. The confirmation phase is shown in
During user request phase step 1130 of
Providing the user with an active form that combines fields from multiple active forms has two advantages. For the user, it is less work to fill in a single form, particularly since many information fields will exist on all of the active forms from the provider server modules 600. Also, information on the user can be kept by the intermediate server module 500 in a database, and the active form sent to the user can be pre-populated to save the user time. If the user were to request separate active forms from multiple providers, any individual provider may not have information on the user, and will not be able to pre-populate the active form. For the owner of the intermediate server module 500, the advantage of an active form that combines information from several active forms is that the active form sent to the user can have the trademark or service mark of the owner of the intermediate server module 500 and that all of the active forms the user receives from the intermediate server module 500 can have a uniform look and feel.
The method of constructing an active form by combining multiple active forms is shown in
Notice that in multi-organization infrastructures, the intermediate server module 500 can combine multiple active forms from the provider server modules 600 into a single active form to be sent to the user 100. This active form combining, shown as step 1650 of
In addition to providing the user with a single uniform method to interact with providers of non-competing products and services, the multi-organization infrastructure shown in
As in the previous example, the process of reserving a hotel room can be divided into four phases: the user request phase, the intermediate request phase, the provider response phase and the confirmation phase. The user request phase, the intermediate request phase and the confirmation phase in this example are identical to the same phases in the previous example; see
In step 1700, each provider server module 600 examines the active form request received from the intermediate server module 500, consults its product or service database, and provides a response to intermediate server module 500 in step 1710. The intermediate server module 500 will examine the responses from the provider server modules 600 that are received in step 1720. In step 1730, the intermediate server module selects the response that best meets the user's requirement. The intermediate server module 500 sends the best offer, perhaps after reformatting, in step 1740 and the best offer is received by the client computing device in step 1750. The user accepts or rejects the best offer in step 1760 and the user's response is sent from the client computing device 200 in step 1770 and is received by the intermediate server module in step 1780. In turn, the intermediate server module 500 forwards the user's response to the provider with the best offer, perhaps after reformatting, in step 1790 and the response is received by the provider server module 600 in step 1800.
In step 1750, the broker server computer 500 uses information from the user's active form to complete all the active forms for price and availability requests received in step 1740. In step 1760, the active forms from the provider server computers 600 are sent back to the provider server computers 600, and the provider server computers 600 receive the active forms from the broker server computer 500 in step 1270.
Although we have discussed different methods of interacting with complementary and competing providers of products and services, it is possible for a single system to provide both functionalities simultaneously. Thus, within a single system, some providers will have complementary relationships while other providers will have competitive relationships.
Another aspect of the invention is methods of processing active forms such that multiple users collaborate to complete an active form. Usually the user of an active form has the ability to indicate that a form is complete. However, if multiple users collaborate to complete an active form, another method is needed to route an active form from one user to another before the active form is returned to the server module that will process the active form.
The method of using multiple users to complete an active form is shown in
In step 1940, the client computing device of the current user sends the partially-completed active form to the client computing device of the next user. In step 1950, the user modifies some of the fields in the active form. In step 1960, the user tells his client computing device to return the form to the server module in step 1970 or to forward the form to the next user and return to step 1930.
There are many ways of making the decision of which user is the next to receive the active form, as performed in step 1930. Each user could select the next user to which the active form is sent. Alternatively, the next user selection could be built into the system. For example, consider the maintenance staff in a hotel and a hotel guest that complains that his television doesn't work. The first user to receive the active form generated as a result of the guest complaint could be part of the guest services staff who verifies that the television doesn't work. If the problem is verified, then the next person to receive the active form may be an electrician who can check that the television is receiving power, has all of the cables correctly connected, and so forth. If the television is indeed the problem, then the next user may be someone who will remove the old television and install a new one.
Although the method shown in
Another aspect of the invention is methods of simplifying the use of active forms on mobile computers that may not have access to a communication link at all times.
As described previously, active forms may be moved manually from a server to a client computing device or vice versa. Although a communication link must be available when moving active forms from one computer to another, active forms can be processed on individual computers regardless of whether a communication link is available. This means that a user may complete a form, but if a communication link in unavailable at the time a form is finished, the user must remember to move the form manually at a later time when a communication link is available.
Although a user can complete a form while a communication link is unavailable and later manually transfer the form to another computer when a communication link is available, it would be more convenient for the user if a completed form were transferred automatically as soon as an appropriate communication link were available.
The method of implementing this automatic transfer system for active forms is show in
In step 2020, the computer monitors the transmission link and waits for pre-defined criteria to be satisfied in order to determine whether the communication link is available for the transmission of active forms. In addition to the communication link being active, other possible criteria include the bandwidth of the link, the latency of the link, bandwidth requirements of other applications on the computer, and so forth. Determining information about the communication link could be done passively by monitoring link statistics, or actively by sending message to probe the link.
Once the computer is satisfied that an acceptable communication link is available, the active form is sent to another computer via the communication link in step 2030.
An enhancement to the method described above is to notify the user when an active form has not been submitted by a certain time. The time period could be absolute (e.g., one hour) or relative to some other event. For example, if a hotel reservation is made for a certain date, if the active form still has not been submitted and the current date is within three days of the desired reservation date, the user is notified. Regardless of whether the time period is fixed or relative, the time period may differ for different types of active forms, depending on the perceived urgency of the function provided by the active form.
Another aspect of the invention is methods of improving the efficiency of transmitting and storing active forms. By taking advantage of the structure of active forms, the amount of information that must be transmitted or stored may be reduced. Although this discussion will focus on communication of active forms, many of these ideas can be used to reduce the amount of information that must be stored for completed active forms.
One method of reducing the number of transmitted active forms is to maintain copies of active forms on the client computing device. Each active form can have a unique identifier that is specific to that active form and the time at which the active form was modified most recently. Instead of sending the entire active form to the client computing device, the initial communication could contain only the unique identifier and the modification time of the active form. The complete active form is sent only if the server module receives a request from the client computing device because the client computing device does not have a copy of the most recent version of the specific active form.
When a completed active form is sent to a server module, it may not be necessary to return the entire form. For example, if the computer receiving the completed active form knows which active form it has received, it is sufficient to send only the fields of the active form, rather than the entire active form. When the completed active form is sent, rather than sending the entire active form, only the unique identifier and fields of the active form are sent. All of the fields can be sent in a pre-selected order or as field name/field value pairs in an arbitrary order. An advantage of sending field name/field value pairs is that only the fields that have been changed need be transmitted. Given this information, the server module can reconstruct the original active form.
In some cases, the unique identifier of the active form is unnecessary. For example, assume that for any given user, only a single active form can be outstanding at any time. In this case, the server module maintains a database that maps users to the most recently requested active form for each user. When the server module receives an active form, the server module takes the identity of the user and performs a lookup in the database that maps users to outstanding active forms. Once the specific active form has been identified, the server module continues using the method shown in
Another method to reduce the amount of information that is transmitted or stored is to bundle multiple active forms together to take advantage of the fact that many fields will be shared among multiple active forms. For example, name and address fields may be included in many active forms. If a bundle of active forms is transmitted, then any field of the same type that contains the same information on all of the active forms in the bundle need be transmitted only once for all active forms in the bundle, rather than once for each active form.
Another aspect of the invention is methods of processing active forms using information stored in databases. The information in the database can be used to select from a set of existing forms, to populate some of the user-accessible spaces of a form, to generate a form dynamically, or some combination of these operations.
A database can be populated with information in a variety of ways. For example, a user could access a web site and provide information that would be entered into a database. Alternatively, an active form could be used to enter the same information into a database. A database also may gather information on the user by observing his actions. For example, if a user is staying overnight in a hotel and he adjusts the thermostat in the room to 70 degrees, this information could be stored in a database automatically, so that next time the user visits the hotel, the room thermostat could be set automatically to 70 degrees to make the user more comfortable.
Using a database to select a form or to dynamically create a form can be done only at the original source of the form, such as a server module. However, pre-populating fields, post-populating fields or changing fields of an active form can be done at any computer. Pre-populating means modifying previously unmodified fields of an active form before the active form is modified by the user. Post-populating means modifying previously unmodified fields of an active form after the active form is modified by the user. Changing means modifying an already modified field.
Pre-populating fields is valuable because it saves the user's time by reducing the amount of typing that he must do. Typically pre-populating fields is done on a server module before the active form is sent to the client computing device of the user. However, an alternative is to have the client computing device pre-populate the active form when it is received. This approach has the advantage of associating the user's information with the user's client computing device, so that active forms can be pre-populated regardless of where the active forms originate.
Post-populating fields is valuable because it saves the user's time, but also has the advantages of improving security and reducing the amount of data that is transmitted. Consider the multiple-organization infrastructure shown in
In step 2800, a decision is made whether the computer is the originator of the active form or is handling an active form received from another computer. If it is the originator, then the active form is fetched from a database of active forms in step 2810; otherwise, an active form is selected that was received from another computer in step 2820. In step 2830, information about the user who is to receive the active form is retrieved from a database. The information retrieved from the database is used in step 2840 to pre-populate some or all of the active form fields for which appropriate information about the user exists. Step 2850 determines what is done with the modified active form. If the active form is at the computer that will process the active form, then the active form is dispatched to the appropriate computer application in step 2860. Otherwise, the active form is sent to the next computer along the path to the user in step 2870.
Changing an active form is similar to pre-populating and post-populating, the difference being that instead of modifying an active form field that has a null value, changing modifies an active form field that already has been modified previously. Changing active form fields is useful in a multi-organization infrastructure, such as in
Another aspect of the invention is a method for updating information in databases using the information contained in active forms.
Active forms completed by the user for reasons other than updating the database also can be used to update the database. For example, let us say that a woman marries and begins using the last name of her husband rather than her maiden name. The woman may fill out an active form for a hotel reservation and notice that the area on the active form for her last name has been pre-populated with her maiden name rather than her married name. She changes the last name on the active form to her married name and returns the active form to complete her hotel reservation. As the active form is processed by a computer that has pre-populated the active form with the last name of the user, the computer examines the active form to see whether any of the pre-populated information has been changed by the user. If so, then the field value in the active form is used to update the user information that is stored in the database. Thus, the next time that an active form is pre-populated using this database, the correct last name will be inserted.
A method for automatically updating databases using the information contained in active forms is shown in