Claims
- 1. A method of programmatically scheduling a meeting, comprising steps of:
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 scheduling the meeting at a time and location where the invitees are determined to be available for the allowable participation types.
- 2. The method according to claim 1, wherein the evaluating step further comprises applying a particular invitee's user-specific preferences to determine whether the particular invitee is available for attending the meeting in one or more allowable participation types for this particular invitee.
- 3. The method according to claim 1, wherein the evaluating step further comprises applying corporate policy considerations to determine whether a particular invitee is available for attending the meeting in one or more allowable participation types for this particular invitee.
- 4. The method according to claim 1, further comprising the step of applying corporate policy considerations to determine whether a particular meeting location is available for scheduling the meeting.
- 5. The method according to claim 1, wherein each meeting invitee may have a plurality of allowable participation types and wherein the scheduling step 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.
- 6. A method of performing a free-time search of calendar data, comprising steps of:
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.
- 7. The method according to claim 6, wherein the retrieved availability information comprises calendar data from the users' electronic calendars.
- 8. A method of programmatically scheduling an event for a plurality of users, comprising steps of:
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.
- 9. The method according to claim 8, wherein the context-sensitive criteria comprise one or more of: user preferences of one or more users; policy considerations; legal constraints; location constraints; technology constraints; and device constraints.
- 10. The method according to claim 8, wherein the adjusting step further comprises the steps of:
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.
- 11. The method according to claim 8, wherein the adjusting step further comprises the steps of:
for each of the users, evaluating the user's retrieved availability information in view of one or more allowable participation types for that user; and marking one or more selected ones of the analyzed free-time segments as busy-time segments if the context-sensitive criteria indicate that this user is not actually available for this participation type during the selected time segment.
- 12. The method according to claim 8, wherein the adjusting step further comprises the step of determining whether a particular user's in-person participation in the event is allowed, and if so, marking one or more selected ones of the located free-time segments as busy-time segments if the context-sensitive criteria indicate that the particular user is not available for in-person participation during the selected time segment.
- 13. The method according to claim 12, wherein the marking step further comprises the steps of:
marking any busy-time segments which represent travel events in the retrieved availability information as free-time segments; computing travel time between the event being scheduled and neighboring events which are already scheduled as busy-time segments in the retrieved availability information; and marking free-time segments as busy-time segments which represent travel events, as required to represent the computed travel time.
- 14. The method according to claim 13, further comprising the step of adjusting the computed travel time according to user preferences of the particular user, prior to the step of marking free-time segments as busy-time segments.
- 15. The method according to claim 13, wherein the computing step further comprises the step of computing travel time based on a distance between the event being scheduled and the neighboring scheduled events.
- 16. The method according to claim 13, wherein the computing step further comprises the step of retrieving the travel time for traveling between the event being scheduled and the neighboring scheduled events from a repository.
- 17. The method according to claim 13, wherein the computing step further comprises the step of consulting a travel time service.
- 18. The method according to claim 17, wherein the travel time service applies time-sensitive factors to compute the travel time.
- 19. The method according to claim 17, further comprising the step of applying user-specific adjustments to the travel time computed by the travel time service.
- 20. The method according to claim 13, wherein the computed travel time represents more than one mode of travel.
- 21. A computer-implemented method of scheduling a meeting, further comprising steps of:
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 evaluating step for all invitees to determine when the meeting can be scheduled.
- 22. The method according to claim 21, wherein the allowable participation level for each invitee is a minimum required participation level, and wherein the evaluating step 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.
- 23. The method according to claim 21, wherein the selecting step selects one or more explicitly-specified participation levels for each invitee, and wherein the evaluating step evaluates the availability information for each invitee for each of the one or more explicitly-specified participation levels of that invitee.
- 24. The method according to claim 21, wherein the using step further comprises the step of determining one or more candidate meeting times when all invitees are available according to the evaluating step.
- 25. The method according to claim 21, further comprising the step of considering a meeting location supplied by a meeting scheduler as a constraint on when the meeting can be scheduled.
- 26. The method according to claim 21, further comprising the step of considering one or more meeting preferences supplied by a meeting scheduler in determining when the meeting can be scheduled.
- 27. The method according to claim 21, further comprising the step of presenting the results of the evaluating step to a meeting scheduler.
- 28. The method according to claim 27, further comprising the step of allowing the meeting scheduler to select from among a plurality of potential times and/or locations in the presented results.
- 29. The method according to claim 28, further comprising the step of sending meeting invitations to the invitees wherein the meeting invitations specify the selected time and location.
- 30. The method according to claim 29, wherein the meeting invitations further specify travel time to and/or from the selected location for those invitees for whom in-person participation is an allowable participation level.
- 31. The method according to claim 29, wherein the meeting invitations further specify one or more allowable participation levels for each meeting invitee.
- 32. A system for performing a free-time search of calendar data, comprising:
means for retrieving availability information for a plurality of users; means for locating free-time segments which are available in the retrieved availability information; means for adjusting the located free-time segments based on one or more context-sensitive criteria which are applicable to this free-time search; means for 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 means for providing the determined free-time segments as a result of the free-time search.
- 33. The system according to claim 32, wherein the retrieved availability information comprises calendar data from the users' electronic calendars.
- 34. A system for programmatically scheduling an event for a plurality of users, comprising:
means for retrieving availability information for a plurality of users; means for locating free-time segments which are available in the retrieved availability information; means for adjusting the located free-time segments based on one or more context-sensitive criteria which are applicable to the event being scheduled; means for 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 means for providing the determined time segments as candidate times for scheduling the event.
- 35. The system according to claim 34, wherein the context-sensitive criteria comprise one or more of: user preferences of one or more users; policy considerations; legal constraints; location constraints; technology constraints; and device constraints.
- 36. A computer program product for scheduling a meeting, the computer program product embodied on one or more computer-readable media and comprising:
computer-readable program code means for selecting one or more meeting invitees; computer-readable program code means for selecting, for each invitee, an allowable participation level; computer-readable program code means for evaluating availability information for each invitee, with reference to the allowable participation level; and computer-readable program code means for using results of the evaluation for all invitees to determine when the meeting can be scheduled.
- 37. The computer program product according to claim 36, wherein the allowable participation level for each invitee is a minimum required participation level, and wherein the computer-readable program code means for evaluating further comprises computer-readable program code means for evaluating 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.
- 38. The computer program product according to claim 36, wherein:
the computer-readable program code means for selecting an allowable participation level for each invitee is replaced by computer-readable program code means for specifying, for each invitee, one or allowable participation levels; and the computer-readable program code means for evaluating availability information for each invitee operates with reference to the one or more specified allowable participation levels.
- 39. 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 means for retrieving availability information for a plurality of users; computer-readable program code means for determining one or more free-time segments when each of the plurality of users is available, according to free-time segments represented in the retrieved availability information and one or more context-sensitive criteria which are applicable to this free-time search; and computer-readable program code means for providing the determined free-time segments as a result of the free-time search.
RELATED INVENTIONS
[0001] The present invention is related to the following commonly-assigned U.S. Patents: U.S. Pat. No. ______, titled “Calendar Events and Calendar-Driven Application Technique” (Ser. No. 09/670,844); U.S. Pat. No. ______, titled “Calendar-Driven Application Technique for Preparing Responses to Incoming Events” (Ser. No. 09/671,001); U.S. Pat. No. ______, titled “Calendar-Enhanced Awareness for Instant Messaging Systems and Electronic Status Boards” (Ser. No. 09/941,045); and U.S. Pat. NO. ______, 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.