Intelligent Free-Time Search

US 2008 228 547A1

drawing #0

Show all 13 drawings

Techniques are disclosed for performing free-time searches that exploit information of the type used with electronic calendars. By leveraging advanced calendaring system information and using location, other context information such as corporate policy, legal constraints, and technology constraints, and user-specific preferences to provide a complete picture of a person's availability, the functionality (and therefore the value) of scheduling systems in increased, resulting in an ability to schedule meetings with more accuracy and less rework. Various allowable participation types for meeting invitees may be specified, and each invitee's availability is determined accordingly. Location-sensitive travel times (including optional user-specific travel time adjustments) are used in preferred embodiments when in-person participation is required.

PatentSwarm provides a collaborative workspace to search, highlight, annotate, and monitor patent data.

Start free trial Sign in

Tip: Select text to highlight, annotate, search, or share the selection.

Claims

1. A computer-implemented system for performing a free-time search of calendar data, comprising a processor and a memory coupled thereto, the memory storing instructions configured to:
determine, for each of a plurality of meeting invitees, each of at least one allowable participation type which a meeting scheduler indicates that this meeting invitee is allowed to participate in a meeting to be scheduled, wherein at least one of the plurality of meeting invitees has at least two allowable participation types that each specify a different type of mandatory participation;
use calendar data comprising calendared events of the meeting invitees to programmatically build, for each of the plurality of meeting invitees, at least one busy bar representing calendared events of that meeting invitee, each of the at least one busy bars corresponding to one of the at least one allowable participation types of that meeting invitee, wherein:
each of the busy bars comprises a free-time segment for each time segment when the calendar data indicates that the meeting invitee is available for participation in the meeting in the corresponding allowable participation type and a busy-time segment for each time segment when the calendar data indicates that the meeting invitee is not available for participation in the meeting in the corresponding allowable participation type; and
for at least one of the plurality of meeting invitees, the free-time segments and the busy-time segments in a first one of the busy bars built for that meeting invitee are different from the free-time segments and the busy-time segments in a second one of the busy bars built for that meeting invitee;
for all of the busy bars for which the corresponding allowable participation type is in-person participation, perform steps of:
programmatically changing all of the busy-time segments that represent travel time to free-time segments on the busy bar; and
for each calendared event represented by an existing busy-time segment on the busy bar, computing a first travel time from a location of that calendared event to a location of the meeting and a second travel time from the location of the meeting to a location of the calendared event represented by a next-successive one of the existing busy-time segments, and programmatically adding a first new busy-time segment following the existing busy-time segment and a second new busy-time segment preceding the next calendared event, the first new busy-time segment representing the first travel time and the second new busy-time segment representing the second travel time;
adjust at least one of the free-time segments in at least one of the busy bars based on one or more context-sensitive criteria which are applicable to this free-time search;
determine, from the busy bars, one or more free-time segments when each of the plurality of meeting invitees is available, in at least one of the at least one allowable participation types for that meeting invitee; and
provide the determined free-time segments as a result of the free-time search.
2. A computer-implemented system for programmatically scheduling a meeting for a plurality of meeting invitees, comprising a processor and a memory coupled thereto, the memory storing instructions configured to:
determine, for each of the plurality of meeting invitees, each of at least one allowable participation type for which a meeting scheduler indicates that this meeting invitee is allowed to participate in the meeting, wherein at least one of the plurality of meeting invitees has at least two allowable participation types for the event, each of which specifies a different type of mandatory participation;
use calendar data comprising calendared events of the meeting invitees to programmatically build, for each of the plurality of meeting invitees, at least one busy bar representing calendared events of that meeting invitee, each of the at least one busy bars corresponding to one of the at least one allowable participation types of that meeting invitee, wherein:
each of the busy bars comprises a free-time segment for each time segment when the calendar data indicates that the meeting invitee is available for participation in the meeting in the corresponding allowable participation type and a busy-time segment for each time segment when the calendar data indicates that the meeting invitee is not available for participation in the meeting in the corresponding allowable participation type; and
for at least one of the plurality of meeting invitees, the free-time segments and the busy-time segments in a first one of the busy bars built for that meeting invitee are different from the free-time segments and the busy-time segments in a second one of the busy bars built for that meeting invitee;
for all of the busy bars for which the corresponding allowable participation type is in-person participation, perform steps of:
programmatically changing all of the busy-time segments that represent travel time to free-time segments on the busy bar; and
for each calendared event represented by an existing busy-time segment on the busy bar, computing a first travel time from a location of that calendared event to a location of the meeting and a second travel time from the location of the meeting to a location of the calendared event represented by a next-successive one of the existing busy-time segments, and programmatically adding a first new busy-time segment following the existing busy-time segment and a second new busy-time segment preceding the next calendared event, the first new busy-time segment representing the first travel time and the second new busy-time segment representing the second travel time;
adjust at least one the free-time segments in at least one of the busy bars based on one or more context-sensitive criteria which are applicable to the meeting;
determine, from the busy bars, one or more free-time segments when each of the plurality of meeting invitees is available, in at least one of the at least one allowable participation types for that meeting invitee; and
provide the determined time segments as candidate times for scheduling the meeting.

Show 7 dependent claims

10. A computer program product for performing a free-time search of calendar data, the computer program product embodied on one or more computer-readable media and comprising:
computer-readable program code for determining, for each of a plurality of meeting invitees, each of at least one allowable participation type for which a meeting scheduler indicates that this meeting invitee is allowed to participate in a meeting to be scheduled, wherein at least one of the plurality of meeting invitees has at least two allowable participation types that each specify a different type of mandatory participation;
computer-readable program code for using calendar data comprising calendared events of the meeting invitees to programmatically build, for each of the plurality of meeting invitees, at least one busy bar representing calendared events of that meeting invitee, each of the at least one busy bars corresponding to one of the at least one allowable participation types of that meeting invitee, wherein:
each of the busy bars comprises a free-time segment for each time segment when the calendar data indicates that the meeting invitee is available for participation in the meeting in the corresponding allowable participation type and a busy-time segment for each time segment when the calendar data indicates that the meeting invitee is not available for participation in the meeting in the corresponding allowable participation type; and
for at least one of the plurality of meeting invitees, the free-time segments and the busy-time segments in a first one of the busy bars built for that meeting invitee are different from the free-time segments and the busy-time segments in a second one of the busy bars built for that meeting invitee;
computer-readable program code for performing, for all of the busy bars for which the corresponding allowable participation type is in-person participation, steps of:
programmatically changing all of the busy-time segments that represent travel time to free-time segments on the busy bar; and
for each calendared event represented by an existing busy-time segment on the busy bar, computing a first travel time from a location of that calendared event to a location of the meeting and a second travel time from the location of the meeting to a location of the calendared event represented by a next-successive one of the existing busy-time segments, and programmatically adding a first new busy-time segment following the existing busy-time segment and a second new busy-time segment preceding the next calendared event, the first new busy-time segment representing the first travel time and the second new busy-time segment representing the second travel time;
computer-readable program code for adjusting at least one of the free-time segments in at least one of the busy bars based on one or more context-sensitive criteria which are applicable to this free-time search;
computer-readable program code for determining, from the busy bars, one or more free-time segments when each of the plurality of meeting invitees is available, in at least one of the at least one allowable participation types for that meeting invitee; and
computer-readable program code for providing the determined free-time segments as a result of the free-time search.
11. A computer program product for programmatically scheduling a meeting for a plurality of meeting invitees, the computer program product embodied on one or more computer-readable media and comprising:
computer-readable program code for determining, for each of the plurality of meeting invitees, each of at least one allowable participation type for which a meeting scheduler indicates that this meeting invitee is allowed to participate in the meeting, wherein at least one of the plurality of meeting invitees has at least two allowable participation types for the event, each of which specifies a different type of mandatory participation;
computer-readable program code for using calendar data comprising calendared events of the meeting invitees to programmatically build, for each of the plurality of meeting invitees, at least one busy bar representing calendared events of that meeting invitee, each of the at least one busy bars corresponding to one of the at least one allowable participation types of that meeting invitee, wherein:
each of the busy bars comprises a free-time segment for each time segment when the calendar data indicates that the meeting invitee is available for participation in the meeting in the corresponding allowable participation type and a busy-time segment for each time segment when the calendar data indicates that the meeting invitee is not available for participation in the meeting in the corresponding allowable participation type; and
for at least one of the plurality of meeting invitees, the free-time segments and the busy-time segments in a first one of the busy bars built for that meeting invitee are different from the free-time segments and the busy-time segments in a second one of the busy bars built for that meeting invitee;
computer-readable program code for performing, for all of the busy bars for which the corresponding allowable participation type is in-person participation, steps of:
programmatically changing all of the busy-time segments that represent travel time to free-time segments on the busy bar; and
for each calendared event represented by an existing busy-time segment on the busy bar, computing a first travel time from a location of that calendared event to a location of the meeting and a second travel time from the location of the meeting to a location of the calendared event represented by a next-successive one of the existing busy-time segments, and programmatically adding a first new busy-time segment following the existing busy-time segment and a second new busy-time segment preceding the next calendared event, the first new busy-time segment representing the first travel time and the second new busy-time segment representing the second travel time;
computer-readable program code for adjusting at least one of the free-time segments in at least one of the busy bars based on one or more context-sensitive criteria which are applicable to the meeting;
computer-readable program code for determining, from the busy bars, one or more free-time segments when each of the plurality of meeting invitees is available, in at least one of the at least one allowable participation types for that meeting invitee; and
computer-readable program code for providing the determined free-time segments as candidate times for scheduling the meeting.

Show 4 dependent claims

Description

The present invention is related to the following commonly-assigned U.S. patents: U.S. Pat. No. 6,988,128, titled Calendar Events and Calendar-Driven Application Technique (Ser. No. 09/670,844); U.S. Pat. No. 6,640,230, titled Calendar-Driven Application Technique for Preparing Responses to Incoming Events (Ser. No. 09/671,001); U.S. Pat. No. 7,035,865 titled Calendar-Enhanced Awareness for Instant Messaging Systems and Electronic Status Boards (Ser. No. 09/941,045); and U.S. Pat. No. 7,096,232, titled Calendar-Enhanced Directory Searches Including Dynamic Contact Information (Ser. No. 09/875,556). The disclosures of these related inventions are hereby incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a computer system, and deals more particularly with methods, systems, and computer program products for performing intelligent free-time searches (for example, to improve scheduling of meetings) of information such as that used with electronic calendars.

2. Description of the Related Art

Calendars, and electronic calendars in particular, often contain a wealth of information about their owner. For example, an individual may use an electronic calendar to maintain information about his work schedule, his meetings and other appointments, his vacation and business travel plans (including when he will be away, which flights or other transportation he will use, where he can be reached while away, who he may visit while away, etc.), phone calls that need to be made at particular times, and so forth. Examples of electronic calendaring systems include Microsoft Outlook® 2000 and Lotus Notes®. (Outlook is a registered trademark of Microsoft Corporation, and Lotus Notes is a registered trademark of Lotus Development Corporation.)

Use of electronic calendaring systems for purposes such as scheduling meetings of multiple persons is known in the art. For example, an invitation list may be created for a particular meeting, and a calendaring software application may then use this list to check each invitee's calendar for available time periods. A meeting may then be scheduled during a time period in which all (or some majority) of the invitees have sufficient time available on their calendar. However, prior art scheduling capabilities in calendaring systems have limitations which can render them ineffective in many scenarios. In particular, scheduling meetings between multiple people using prior art techniques is typically a time-consuming task that often involves many iterations. It may either fail to accommodate considerations beyond rudimentary duration requirements or may require significant manual input to handle such considerations, or it may find only unacceptably late dates.

Scheduling capability in prior art electronic calendaring systems, when present, is typically limited to a rudimentary free-time search which only looks for blocks of free time on the users' calendars. However, using just free time may generate results that are too constrained in some scenarios or results that are not constrained enough in other scenarios. As an example of results that are too constrained when based solely on free time, it may be acceptable for a particular meeting to have one or more of the invitees participate by phone (rather than requiring them to be present in person); these invitees might be willing to call in to the meeting from their cell phones while they are commuting, or they might be willing to call in after normal business hours, or from an alternate work location or travel destination. For these cases, the person's calendar would ordinarily indicate that they are in an unavailable status of one type or another (that is, the commuting, after hours, at alternate work location, or traveling status would not be recognized as free time in which meetings could be scheduled). As an example of results that are not sufficiently constrained when based solely on free time, it may happen that some invitees need to be present at the meeting in person, in which case the location of the person is important (in terms of their ability to get to the meeting location), not just whether there is free time on the person's calendar.

The following scenarios illustrate various factors that are not addressed by prior art calendaring systems or their scheduling capabilities. (These calendaring systems and search capabilities are referred to herein generally as prior art systems.)

Scenario 1: Prior art systems do not understand nuances related to the physical location of the invitees. Suppose, for purposes of illustration, that Joe works at the Research Triangle Park (RTP) site of International Business Machines Corporation (IBM), where this RTP site comprises many buildings, some of which are in close physical proximity to each other but others of which are located several miles away. Further suppose that Joe wants to schedule a one-hour, in-person meeting with ten other people who are also located at the RTP site. Joe may use a prior art free-time search capability to search the electronic calendars for the invitees to find one hour where all ten meeting invitees are available. Assuming that all ten people have a common one-hour period available, this time period is selected, and programmatically generated meeting invitations are sent electronically to each invitee. Upon receiving their invitation, several of the invitees decline the invitation because they are located in buildings from which travel time will be required to get to and from the meeting, and they have events already scheduled on either side of the new meeting which prevent their being able to arrive at the next meeting on time. Joe did not manually factor this consideration into the schedule for this meeting, and the prior art free-time search does not have this capability. So, Joe must now find a different hour when everyone can meet, and must also factor in the various travel times for those people who he determines will have to travel. This is a time-consuming effort that requires Joe to not only know the locations of every invitee before and after the proposed meeting and the time it takes to move between these locations and the meeting location, but to also use a combination of free-time search, manual calendar search, and contacting people directly before he can find an appropriate time for the meeting.

There might be other criteria to consider as well, further complicating the scheduling process. For example, some individuals may have travel constraints (such as Betty participates in a car pool on Tuesdays and Thursdays and therefore has no car) which prevent them from being able to travel to a meeting at another location.

Scenario 2: Prior art systems do not understand availability beyond simple free time. Suppose now that Joe needs to schedule a one-hour e-meeting with Elaine. (An e-meeting may use technology such as Lotus Sametime® or Microsoft's NetMeeting®, which allow people to hold face-to-face conversations over the Internet from their computing device. Sametime is a registered trademark of Lotus Development Corporation, and NetMeeting is a registered trademark of Microsoft Corporation.) Elaine has many events on her calendar, including an out-of-town business trip scheduled for the current week (with meetings scheduled every afternoon), all-day workshops the next week, and vacation the following week. Therefore, when Joe uses a prior art free-time search to search her calender for one hour of free time, he finds that Elaine won't be available for three weeks. Joe gives up using the automated scheduling system, and calls Elaine's secretary who informs him that Elaine is actually available any morning during her business trip for a one-hour e-meeting. Joe could not determine this by simply looking at Elaine's calendar, and the prior art free-time search is not programmed with this capability.

Scenario 3: Prior art systems do not understand constraints of particular locations and/or policies that impact a person's availability. Suppose that Joe needs to talk to Fred, who travels from one customer site to another in a five-state region. Joe looks at Fred's calendar, and decides to schedule a call during a time in which Fred is scheduled to drive from one customer location to another. What Joe doesn't understand from merely inspecting the entries on Fred's calendar is that Fred will be driving in a state that prohibits cell phone calls while driving. Thus, Joe schedules the meeting, only to learn that it has to be rescheduled. Using the prior art free-time search to find time on Fred's calendar would have not helped in this situation: the automated search would be impaired by the same missing information that Joe needed when manually inspecting Fred's calendar.

In another aspect of this scenario, if the meeting is to discuss confidential topics and corporate policy prohibits discussing confidential information over cell phones, then Joe would need to understand this and not schedule the call while Fred is driving (or during other times when Fred is reachable only by cell phone).

Scenario 4: Prior art systems do not understand capabilities/limitations of various technologies. In yet another aspect of the scenario described above, where Joe wants to reach Fred by cell phone, it might happen that Fred is traveling through a location that allows cell phone calls while driving, provided the cell phone is operated in a hands-free mode. Before he could successfully schedule a call with Fred, Joe would have to understand not only where Fred would be at the selected time and any applicable constraints of that location, but also the capabilities of Fred's phone.

Scenario 5: As another example of technology-related constraints, suppose that Joe needs to set up an e-meeting with Barney. Further suppose that Barney is working from home today, according to his calendar. Joe has a high-speed connection in his office, and assumes that everyone else has similar capabilities, so he decides to set up the meeting for today. Barney, however, has a low-speed connection at home. The e-meeting is a disaster, due to the slow line speed.

Scenario 6: Prior art systems do not understand nuances of blocked time, such as time periods marked as having a local travel status. Suppose that Joe is trying to schedule a meeting with Wilma at noon in Building number 500. Wilma is in this building from 11 a.m. to noon, according to her calendar, and then has local travel scheduled on her calendar from noon until 12:15, giving her time to drive back to her office which is located several miles away in another building. The prior art free-time search would not show that Wilma is actually available at noon in Building number 500.

Accordingly, what is needed are improved scheduling/searching techniques, where these improved techniques consider factors beyond availability of free-time segments on a user's calendar.

SUMMARY OF THE INVENTION

An object of the present invention is to provide improved techniques for performing free-time searches of availability information.

Another object of the present invention is to provide these improved techniques by considering factors beyond availability of free-time segments on a user's calendar.

Another object of the present invention is to provide improved scheduling techniques.

It is a further object of the present invention to provide improved techniques for analyzing electronic calendar entries and associated calendar data.

Yet another object of the present invention is to make electronic calendars more useful.

Still another object of the present invention is to define extensions to electronic calendar systems that can be leveraged for improved searching.

Other objects and advantages of the present invention will be set forth in part in the description and in the drawings which follow and, in part, will be obvious from the description or may be learned by practice of the invention.

To achieve the foregoing objects, and in accordance with the purpose of the invention as broadly described herein, the present invention provides systems, methods, and computer program products for improving free-time searches and scheduling. In one aspect, this technique comprises: programmatically scheduling a meeting by evaluating, for each invitee of the meeting, calendar data of an electronic calendar to determine each invitee's availability for attending the meeting in one or more allowable participation types; and then scheduling the meeting at a time location where the invitees are determined to be available for the allowable participation types. The evaluation may further comprise applying factors such as a particular invitee's user-specific preferences and/or corporate policy considerations to determine whether the particular invitee is available for attending the meeting in one or more allowable participation types for this particular invitee. Such factors may also be used to determine whether a particular meeting location is available for scheduling the meeting. Each meeting invitee may have a plurality of allowable participation types, in which case the scheduling of the meeting preferably further comprises scheduling the meeting at a time and location where each invitee is determined to be available for at least one of his/her allowable participation types.

In another aspect, the techniques of the present invention comprise performing a free-time search of calendar data by: retrieving availability information for a plurality of users; locating free-time segments which are available in the retrieved availability information; adjusting the located free-time segments based on one or more context-sensitive criteria which are applicable to this free-time search; determining one or more free-time segments when each of the plurality of users is available, according to the adjusted free-time segments for each of the users; and providing the determined free-time segments as a result of the free-time search. The retrieved availability information preferably comprises calendar data from the users' electronic calendars.

In yet another aspect, the techniques of the present invention comprise programmatically scheduling an event for a plurality of users by: retrieving availability information for a plurality of users; locating free-time segments which are available in the retrieved availability information; adjusting the located free-time segments based on one or more context-sensitive criteria which are applicable to the event being scheduled; determining one or more free-time segments when each of the plurality of users is available, according to the adjusted free-time segments for each of the users; and providing the determined free-time segments as candidate times for scheduling the event.

The context-sensitive criteria preferably comprise one or more of: user preferences of one or more users; policy considerations; legal constraints; location constraints; technology constraints; and device constraints.

The adjusting process preferably further comprises: analyzing located free-time segments in one or more busy bars for each of the users; and marking a particular one of the analyzed free-time segments as a busy-time segment if the context-sensitive criteria indicate that this user is not actually available during this particular time segment. The adjustments may be made for each user's retrieved availability information in view of one or more allowable participation types for that user. If the participation type allowed for a particular user is in-person participation in the event, then marking free-time segments as busy-time segments is performed if the context-sensitive criteria indicate that the particular user is not available for in-person participation during the selected time segment. For in-person participation, travel time is computed as part of the process, and the travel time between locations may be obtained in a number of ways. User-specific adjustments may optionally be applied to the computed travel time. The travel time may represent more than one mode of travel.

In still another aspect, the techniques of the present invention comprise scheduling a meeting by: selecting one or more meeting invitees; selecting, for each invitee, an allowable participation level; evaluating availability information for each invitee, with reference to the allowable participation level; and using results of the evaluation for all invitees to determine when the meeting can be scheduled. The allowable participation level for each invitee may be a minimum required participation level, in which case the evaluation process evaluates the availability information for each invitee for the minimum required participation level and for zero or more higher-ranking participation levels which are implied by the minimum required participation level. Or, the selection may be of one or more explicitly-specified participation levels for each invitee, in which case the evaluation process evaluates the availability information for each invitee for each of the one or more explicitly-specified participation levels of that invitee.

One or more candidate meeting times may be determined when all invitees are available according to the evaluation process. A meeting location supplied by a meeting scheduler may be considered as a constraint on when the meeting can be scheduled. One or more meeting preferences supplied by the meeting scheduler might additionally, or alternatively, be considered in determining when the meeting can be scheduled.

The results of the evaluation are preferably presented to a meeting scheduler, who may then select from among a plurality of potential times and/or locations in the presented results. Meeting invitations may then be sent automatically to the invitees, wherein the meeting invitations specify the selected time and location. The meeting invitations may further specify travel time to and/or from the selected location for those invitees for whom in-person participation is an allowable participation level, and may specify one or more allowable participation levels for each meeting invitee.

The present invention will now be described with reference to the following drawings, in which like reference numbers denote the same element throughout.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 provides a sample graphical user interface (GUI) display which may be used to enter scheduling criteria, according to the present invention;

FIG. 2 provides an overview flow chart which sets forth logic that may be used when implementing preferred embodiments of the present invention;

FIGS. 3-7 illustrate flow charts which set forth logic that may be used to implement free-time searches for scheduling a meeting in a particular location, according to preferred embodiments of the present invention;

FIG. 8 illustrates how a sample busy bar is programmatically adapted by preferred embodiments of the present invention to account for travel time;

FIGS. 9-11 provide flow charts which set forth logic that may be used to direct free-time searches in the absence of a pre-specified meeting location, according to preferred embodiments of the present invention; and

FIG. 12 illustrates a sample GUI showing results of a search where multiple potential meeting times and locations were found.

DESCRIPTION OF PREFERRED EMBODIMENTS

The present invention defines improved techniques for finding common free time, where this common free time is described herein with reference to scheduling meetings among calendar owners using information of the type used by electronic calendars. The disclosed techniques provide more intelligent searching of calendar data, resulting in improved calendar-based scheduling; thus, the terms searching and scheduling may be used interchangeably when describing advantages of the present invention. (While the discussions herein presume that a person's availability information comes from electronic calendar data, this is for purposes of illustration and not of limitation. The actual origin of the availability data may be different, without deviating from the scope of the present invention. Furthermore, preferred embodiments are described herein with reference to scheduling meetings. However, the disclosed techniques may be adapted to other uses, including but not limited to scheduling other types of events, and such other uses are considered within the scope of the present invention.)

The term calendar data is used herein to describe information of the type used by electronic calendars, which preferably comprises calendar entries as well as other information such as the calendar owner's working hours, the time zone for a particular calendar, and preferences that, for example, could indicate how a calendar owner's calendar entries should be interpreted and/or could provide schedules for when devices such as cell phones or pagers could be used.

The present invention defines techniques whereby the search for free time overcomes limitations of the prior art. In preferred embodiments, an implementation of the present invention is adapted for understanding (i.e., for programmatically analyzing) not only calendar data but also nuances related to the physical location of the invitees; availability beyond simple free time; constraints of particular locations and/or policies/laws/regulations that impact a person's availability; capabilities/limitations of various technologies that impact a person's availability; and nuances of blocked time. Preferred embodiments also account for individual preferences and user-specific constraints, as will be described in more detail herein. Relationships among physical locations, such as distances between various locations and travel time from one location to another, are factored into the scheduling process in preferred embodiments. Using these various types of information, referred to herein as contextual information or context-sensitive information, embodiments of the present invention intelligently find free time that meets real-world scheduling considerations.

Alternative embodiments may omit consideration of policies, laws, regulations, and/or technology-based constraints without deviating from the scope of the present invention.

Prior to performing a context-sensitive free-time search using an implementation of the present invention, several different types of information that will be leveraged in the searching process need to be set up and available. In preferred embodiments, the following components must be available: (1) a location database; (2) a means of estimating travel time; (3) a policy database; (4) a user preferences database; (5) information of the type used by an advanced calendaring system; and (6) means for determining the location of scheduled calendar events. (Alternative embodiments may omit one or more of these databases, and additional databases with other constraints could be included in the search considerations.) While the discussion herein refers to information residing in separate databases, it may be stored in fewer databases or may be stored in other repositories (such as a set of tables). Furthermore, while preferred embodiments are described with reference to use of databases, this is merely for illustrative purposes: services (including one or more commercially-available services) might be invoked for retrieving one or more of these types of information; in addition, the information may be in a more sophisticated form than what is described herein. As an example, rather than retrieving statically-stored travel time from a database or computing a travel time estimate based on the geographical distance between two points, an implementation of the present invention might alternatively contact a travel time service that dynamically computes travel time and which may also incorporate additional factors such as the impact of rush-hour traffic (where such a service is adapted for determining the appropriate rush-hour information, such as times of day and locations for which rush hour is a concern, the amount of delay to add, and so forth). Each of the above-mentioned components will now be described in more detail.

PatentSwarm provides a collaborative workspace to search, highlight, annotate, and monitor patent data.

Start free trial Sign in