BACKGROUND OF THE INVENTION The invention relates generally to the field of data management, and more particularly to data management within a calendaring framework.
Computing devices allow users to increase efficiency by using any of the conventional software products available in today's market, for example word processing software, spreadsheet software, email management software, productivity software, and the like. For example, conventional productivity programs allow a user to keep a calendar of meetings and task lists. Some advanced productivity programs allow the automated scheduling of meetings by including data in e-mail messages that can automatically create an entry on the user's calendar. Existing productivity programs sometimes allow a user to attempt to automatically schedule a meeting with other individuals if the program has network access to the calendars of those other individuals.
However, existing productivity programs largely ignore the need for a user to allocate time to perform tasks that may need performing. Indeed, with most existing productivity programs, a user's task list action items cannot even be viewed on the calendar at all even if due dates and other date information is provided. An adequate system for prioritizing and scheduling tasks has eluded those skilled in the art, until now.
SUMMARY OF THE INVENTION The invention is directed at systems and methods for automatically scheduling tasks on a calendar. In one aspect, a method includes receiving task data that includes a category having at least two prioritized action items, receiving time slot data that identifies a time slot on a calendar, and corresponding the time slot with the category. The method further includes automatically scheduling the action items within the corresponding time slot based on the relative priorities of the action items and an estimated time for completion of the action items.
In another aspect, a computer-readable medium storing a computer program to manage data within a calendaring framework includes: computer-readable code to receive task data that includes a category having at least two prioritized action items, to receive time slot data that identifies a time slot on a calendar, and to correspond the time slot with the category. The computer-readable medium further includes computer-readable code to automatically schedule the action items within the corresponding time slot based on the relative priorities of the action items and an estimated time for completion of the action items.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is an exemplary user interface dialog screen.
FIG. 2 is another exemplary user interface dialog screen.
FIG. 3 is yet another exemplary user interface dialog screen.
FIG. 4 is still another exemplary user interface dialog screen.
FIG. 5 is a functional block diagram generally illustrating an application execution environment in which implementations of the invention are particularly applicable.
FIG. 6 is a functional block diagram generally illustrating a computing device in which implementations of the invention are particularly applicable.
FIG. 7 is an operational flow diagram generally illustrating a process for scheduling tasks within a calendaring framework.
DETAILED DESCRIPTION What follows is a detailed description of various techniques and mechanisms for time management. Very generally stated, the present invention is directed at providing a system for automatically calendaring action items in a task list based on relative priorities and estimated completion times of the action items.
FIG. 1 is an exemplary user interface dialog screen generally illustrating a task list, in accordance with one embodiment of the present invention. InFIG. 1, thetask list100 includes one or more prioritized categories. Each category includes one or more “tasks” that the user needs to perform. Each task may have a priority relative to the other tasks. For instance, if there are three tasks (A, B, and C) then task “A” may have a higher priority than task “B”, which in turn has a higher priority than task “C.” These priorities are intended as an objective measure of the user's desire to perform certain tasks before other tasks.
Each task includes one or more action items, which are the actual action items of conduct that must be performed to accomplish a task. For instance, if a certain task is created for marketing telephone calls, action items for that task could include each of the individual telephone calls that must be made.
Each action item also includes an estimated time for completion. For instance, if a particular action item is a telephone call, the user's experience may be that telephone calls last an average of three minutes. Accordingly, the user may assign an estimated completion time of three minutes for each action item. Alternatively or in addition, the task itself may have an associated “default” completion time, which is automatically assigned to the task's constituent action items not having an express estimated completion time.
The action items may also include other data, such as the names and other information (e.g. telephone numbers, demographics, referral source, etc.) of the calls to be made to potential clients. The action items may also be prioritized within each task in a manner similar to that described above for the tasks.
By way of illustration, category #1 (110) includes prioritized tasks associated with a user's work responsibilities, such as, marketing telephone calls, client telephone calls, preparation of memoranda, review of documentation, and the like. In this example, category #1 (110) includes work tasks A (120), B (130), and C (140). Each of those tasks further include action items. In this example,work task A120 includes action item A1 (121) and action item A2 (122), which are prioritized action items relating towork task A120.Work task B130 includes action item B1 (131) and action item B2 (132).Work task C140 includes action item C1 (141), action item C2 (142), and action item C3 (143).
Similarly, category #2 (150) includes prioritized tasks associated with a user's personal responsibilities, such as, personal telephone calls, providing transportation for children, other important personal commitments, or the like. In this example, category #2 (150) includes personal tasks A (160), B (170), and C (180).Personal task A160 includes action item A1 (161) and action item A2 (162).Personal task B170 includes action item B1 (171) and action item B2 (172).Personal task C180 includes action item C1 (181), action item C2 (182), and action item C3 (183).
Although only two categories are illustrated inFIG. 1, it should be understood that an unlimited number of categories can be used without departing from the spirit of the present invention. For example,task listing100 may include another category (not shown) that includes a number of personal tasks with a higher priority than the work tasks withincategory #1110 as well as other categories with lower priorities (e.g. requested vacation destinations) thancategory #2150.Task listing100 may also include additional components not relevant to the present discussion.
In illustrative operation, a user provides one or more categories as well as tasks within each category to a user interface dialog screen. The user may also provide specific action items to be completed and an estimated completion time for each action item. At some point, the user prioritizes the categories, assigns the tasks to each category, and prioritizes the tasks within each category. The user also assigns the action items to each task and may prioritize the action items within the tasks.
At any point in the process, the user can add, modify, or delete any assignment or prioritization of any categories, tasks, or action items. That is, at any time, the user can modify any categories, tasks, or action items and reprioritize the subsequent list of remaining categories, tasks, or action items. In one embodiment, once the user is satisfied with the categories, tasks, and action items as well as the prioritization of the categories, tasks, and action items the user will have a task listing100 as described inFIG. 1.
FIG. 2 is an exemplary user interface dialog screen generally illustrating a calendaring program, in accordance with one embodiment of the present invention. The calendaring program exhibits the same general functionality as many conventional calendaring programs, such as the ability to schedule meetings and display those meetings as icons or other representations on the calendar. In addition, the calendaring program includes additional functionality to schedule tasks and display those scheduled tasks, as is described more fully below.
InFIG. 2,calendar200 allows the user to identifytime slots210,220, and250. The time slots may represent any period of time over any given length of hours, days, weeks, months, etc. In this example,calendar200 currently displays a weekly time schedule includingtime slot210 which represents the time from about 9:00 AM until about 11:00 AM,time slot220 which represents the time from about 1:00 PM until about 5:00 PM, andtime slot250 which represents the time from about 11:30 AM until about 12:30 PM on a daily basis.
Each of thetime slots210,220, and250 is associated with a corresponding one of the categories described inFIG. 1, above. More than one time slot may be assigned to the same category to provide additional time available for scheduling a category's tasks and action items. In an example and referring toFIGS. 1 and 2,time slots210 and220 are associated withcategory1110 for work tasks.Time slot220 is associated withcategory2150 for personal tasks.
In illustrative operation, a user is prompted to identify one or more time slots on thecalendar200. The prompt may also include associating the time slots with the categories, such as one or more work categories, one or more personal categories, and the like. At any point in the process, the user can add, modify, or delete any time slot or the assignment of any time slot to any category. In one embodiment, once the user is satisfied with the time slot apportionment and category assignments, the user has acalendar200 as described inFIG. 2.
FIG. 3 is an exemplary user interface generally illustrating a sample calendar populated with automatically-scheduled, prioritized tasks, in accordance with one embodiment of the present invention. Theproductivity calendaring application300 includes a task list301 and acalendar350 shown in a “weekly view” format. InFIG. 3, the task list301 includes only one category, awork category310, although other implementations could have many different categories. In this example, the task list301 includes tasks associated with a user's work responsibilities, which could include marketing telephone calls, client telephone calls, work related meetings, and the like.
Each of the work tasks withinwork category310 is a prioritized task list, such as work task A (320) and work task B (330). The tasks include specific action items that need to be completed by the user to accomplish that task.Work category310 is a category associated with a user's work responsibilities and includes prioritized tasks associated with that goal. In this embodiment,work task A320 is a task associated with a user's work responsibilities that have been assigned the highest priority level, such as, marketing telephone calls. Work task A320 includes action item A1 (321), action item A2 (322), and action item A3 (323), which are action items relating to worktask A320. Each action item may include, for instance, an estimated completion time and the names and associated data (e.g. telephone numbers, demographics, referral source, etc.) of the calls to be made to potential clients. The action items are presented in a descending order of priority.
In this example, action item A1321 is a call list that includes the most important marketing calls based on a predetermined assessment of the names on the call list. In one enhancement, action item A1321 may additionally include the names on the call list as well as special instructions to theproductivity calendaring application300 for scheduling the action item, such as, scheduling this particular action item in morning time blocks only or scheduling this particular action item immediately after lunch. In the case of such a call list, the names on the call list may include telephone numbers or additional marketing data provided by the source of the call list.
Further to this embodiment,work task B330 is a task associated with a user's work responsibilities that have been assigned the next highest priority level, such as, client telephone calls.Work task B330 includes action item B1 (331), action item B2 (332), and action item B3 (333), which are prioritized action items relating to worktask B330. These action items may also include, for example, the names and associated data (e.g. telephone numbers, demographics, referral source, etc.) of the calls to be made to existing clients. Again, the action items are presented in a descending order of priority.
On thecalendar350, each of thetime slots360,370,380, and390 has been identified by the user and associated with a category described within the task list301. In this example,time slots360 and380 are assigned as work time slots and are associated withwork category310. Continuing the example,time slots370 and390 are assigned as personal time slots and are associated with a personal category (not shown).
In accordance with the invention, the user instructs theproductivity calendaring application300 to schedule the action items on the calendar in their respective time slots. In operation, thecalendaring program300 begins with the category of highest priority and identifies the task having the highest priority in that category. Thecalendaring program300 then begins scheduling a time, within the time slot associated with the corresponding category, to each action item within that task. The action items may also be prioritized, in which case thecalendaring program300 schedules the action items based on their respective priorities. Thecalendaring program300 iterates through each action item of each task of each category until all the action items possible have been scheduled.
To illustrate, referring toFIG. 3, action items fromwork task A320 andwork task B330 have been assigned to worktime slots360 and380. In particular, action item A1321, being the highest priority action item of the highest priority task, is scheduled first intime slot360 for the estimated completion time associated with action item A1321. Action item A2322, being of next highest priority, is scheduled right after action item A1321, again lasting for its estimated completion time. Likewise, action item A3323 is scheduled after action item A2322 and for its estimated completion time. Note thattime slot360 had insufficient time to include action item A3323, and was therefore scheduled for later that day intime slot380.
With all the action items in work task A320 scheduled, the calendaring program begins scheduling action items for the task of next priority, namely worktask B330. Accordingly, the action item having the highest priority in work task B330 (action item B1331 in this example) is scheduled on thecalendar350 immediately after action item A3323. Next, action item B2332 is scheduled, and finally action item B3333 is scheduled. Note that in this implementation, each action item may optionally include scheduling instructions (in addition to the estimated completion time) to further refine when the action item is scheduled. More specifically, action item B3333 includes instructions to only schedule time on Fridays to perform this action item. Thus, action item B3333 is scheduled for the earliest available time on Friday. This enhancement adds additional flexibility when automatically scheduling tasks.
FIG. 4 is an exemplary user interface dialog screen generally illustrating another view of a calendaring program populated with a plurality of tasks to further illustrate one embodiment of the present invention. As shown inFIG. 4, awork tasks category410 includes a marketing telephone calls task list (task A415) that further includes a listing of action items. The action items withintask A415 include a prioritized list of the marketing telephone calls that a user needs to make. In this example, a first action item (call420) identifies an individual or entity, including telephone number, that the user intends to call. A second action item (call430) identifies a second individual or entity, of lower priority than the first.
A clients telephone calls task list (task B440) includes action items for telephone calls that the user needs to make to existing clients. As withtask A415, the action items fortask B440 are prioritized, with acall441 to Jane Smith being ordered higher than acall442 to John Doe.
As before, when the user instructs, thecalendar program400 automatically schedules each telephone call (i.e., action item) in thetask list401 on thecalendar450. As illustrated, the calls associated with task A415 are scheduled first, followed by the calls associated with the lower-priority task B440. Each of the calls is ordered based on their relative priorities per task, and each call (in this example) has an estimated completion time of two and a half minutes (two calls every five minutes).
In this example, thecalendar450 is presented in a “daily view” rather than the weekly view illustrated in FIG.3. This is done to illustrate that greater detail about each action item may be displayed, in some circumstances, to assist the user to perform the tasks that have been scheduled on thecalendar450. More specifically, by using the system introduced in conjunction withFIGS. 1 and 2, the action items (e.g.,action item A1420 and action item A2430) on thework tasks category410 have been scheduled on thecalendar450 based on their relative priorities.
By presenting thecalendar450 in the “daily view” as shown, the user can visually determine each telephone call that must be made in temporal order. In addition, the number to be called is displayed for each call, thus simplifying the performance of the user's task. This view may be preferred when the user is in the act of actually making the calls rather than just scheduling them. In other words, once thecalendar program400 has automatically scheduled each item on thetask list401, the user can turn to a daily view of thecalendar450 and simply begin making the calls in order.
FIG. 5 is a functional block diagram generally illustrating anapplication execution environment500 in which implementations of the invention are particularly applicable.Application execution environment500 may be a computer-readable medium, such as volatile or non-volatile memory, in which resides computer-executable components.Application execution environment500 includes aproductivity application510 that is in communication with atask scheduler520 and a user interface (U/I)530. Theproductivity application510 and thetask scheduler520 are in communication with atask data store540 and acalendar data store550.Application execution environment500 may include additional components not relevant
Theproductivity application510 interacts with a user via the U/I530 to receive instructions from the user related to the capabilities of theproductivity application510. In one embodiment,productivity application510 interacts with a user via the U/I530 to receive input defining categories, tasks associated with one or more of the categories, action items associated with one or more of the tasks, and information/data associated with one or more of the action items. Theproductivity application510 interacts with the U/I530 to receive and/or modify this data and information, as well as prioritize the tasks within each category and prioritize the action items within each task. The task-related data received by theproductivity application510 is stored in thetask store540.
Productivity application510 may also interact with a user via the U/I530 to receive input defining time slots within a calendaring program. More particularly, theproductivity application510 enables a user to identify and define, via the U/I530, spans of time (time slots) on a calendar and to associate those time slots with categories that may be created. The time slot data received via the U/I530 is stored in thecalendar data store550.
Task scheduler520 is a software engine that receives data fromtask data store540 andcalendar data store550 and automatically (or in response to a user instruction) schedules action items from the task data into the corresponding time slots in the calendar data. Thetask scheduler520 populates each time slot with action items using the relative priorities of the action items and their related tasks and categories, and estimated completion times for the action items. Theproductivity application510 may present the calendar including the scheduled action items to the user via U/I530.
FIG. 6 is a block diagram representing acomputing device20 in the form of a personal computer system with which the present invention may be implemented. Those skilled in the art will appreciate that thepersonal computer system20 depicted is intended to be merely illustrative and that the present invention may be practiced with other computer system configurations, including hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, headless servers and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Thepersonal computer system20 includes aprocessing unit21, asystem memory22, and asystem bus23 that couples various system components including the system memory to theprocessing unit21. Thesystem bus23 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory includes read-only memory (ROM)24 and random access memory (RAM)25. A basic input/output system26 (BIOS), containing the basic routines that help to transfer information between elements within thepersonal computer20, such as during start-up, is stored inROM24. Thepersonal computer20 may further include ahard disk drive27 for reading from and writing to a hard disk, not shown, amagnetic disk drive28 for reading from or writing to a removablemagnetic disk29, and anoptical disk drive30 for reading from or writing to a removableoptical disk31 such as a CD-ROM or other optical media. Thehard disk drive27,magnetic disk drive28, andoptical disk drive30 are connected to thesystem bus23 by a harddisk drive interface32, a magneticdisk drive interface33, and anoptical drive interface34, respectively. The drives and their associated computer-readable media provide non-volatile storage of computer-readable instructions, data structures, program modules and other data for thepersonal computer20. Although the exemplary computer system described herein employs a hard disk, a removablemagnetic disk29 and a removableoptical disk31, it should be appreciated by those skilled in the art that other types of computer-readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read-only memories (ROMs) and the like may also be used in the exemplary computer system.
A number of program modules may be stored on the hard disk,magnetic disk29,optical disk31,ROM24 orRAM25, including anoperating system35, one ormore application programs36,other program modules37 includingproductivity program39, andprogram data38. A user may enter commands and information into thepersonal computer20 through input devices such as akeyboard40 andpointing device42. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner or the like. These and other input devices are often connected to theprocessing unit21 through aserial port interface46 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or universal serial bus (USB). Amonitor47 or other type of display device is also connected to thesystem bus23 via an interface, such as avideo adapter48. In addition to themonitor47, personal computers typically include other peripheral output devices, such asauxiliary display1 or speakers and printers (not shown).Auxiliary display1 is an additional output device connected to thesystem bus23 viaauxiliary display interface55, which may be a video adaptor, USB or other peripheral device connection. Theinput device3 for controlling theauxiliary display1 is connected to thesystem bus23 viainput device interface56, which may be a serial interface, USB or other peripheral device connection.
Thepersonal computer20 may operate in a networked environment using logical connections to one or more remote computers, such as aremote computer49. Theremote computer49 may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to thepersonal computer20. The logical connections depicted inFIG. 6 include a local area network (LAN)51 and a wide area network (WAN)52. Such networking environments are commonplace in offices, enterprise-wide computer networks, Intranets and the Internet.
When used in a LAN networking environment, thepersonal computer20 is connected to the local area network (LAN)51 through a network interface oradapter53. When used in a WAN networking environment, thepersonal computer20 typically includes amodem58 or other means for establishing communications over the wide area network (WAN)52, such as the Internet. The modem54, which may be internal or external, is connected to thesystem bus23 via theserial port interface46.
In a networked environment, program modules depicted relative to thepersonal computer20, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used and would include a virus detection device implemented in a similar or alternative embodiment as necessitated by the communications link.
FIG. 7 is an operational flow diagram generally illustrating amethod700 for scheduling tasks on a calendar. In one embodiment,method700 is implemented with components and data of the exemplary operating environments and exemplary user interface dialog screens ofFIGS. 1-6. Preferably, one or more steps ofmethod700 are embodied in a computer-readable medium containing computer-readable code such that a series of steps are implemented when the computer-readable code is executed on a computing device. In some implementations, certain steps ofmethod700 are combined, performed simultaneously or in a different order, without deviating from the objective ofmethod700.
Theprocess700 begins atstep710, where task data has been received from a user interface. The task data is organized as prioritized action items that make up tasks. Multiple tasks may also be prioritized and aggregated into a common category. In addition, time slots within a calendar have been identified and associated with corresponding categories within the task data.
Atstep720, theprocess700 enters an iterative loop that operates on each category in the task data. The iterative loop operates on each category in descending order of prioritization as may have been established by the user, or through any other mechanism. Accordingly, the first pass through theprocess700, the category having the highest priority is selected as the current category.
Atstep730, an appropriate time slot is identified for the current category. It will be appreciated that the appropriate time slot is the time slot that has been associated with the current category.
Atstep740, theprocess700 enters an iterative loop that operates on each task within the current category. The iterative loop operates on each task in descending order of priority as may have been established by the user, or through any other mechanism. Accordingly, the first pass through theprocess700 the task having the highest priority is selected as the current task.
Atstep750, each action item within the current task is assigned to the time slot corresponding to the current category. As described at length above, each action item may be scheduled within the time slot in descending order of priority. In other words, each action item for a task is scheduled within the time slot for the current category based on its relative priority. The action item is scheduled on the calendar for the duration of the estimated completion time of the action item. In some embodiments, a buffer period of time (e.g.,10 percent over the estimated completion time) may be added to account for unforeseen contingencies.
Atstep760, the current task is incremented to the task having the next lowest priority, and theprocess700 returns to step740. When each task for the current category has been processed according to steps740-760, theprocess700 proceeds to step770.
Atstep770, the current category is incremented to the category having the next lowest priority, and theprocess700 returns to step720. When each category has been processed according to steps720-770, theprocess700 terminates atstep780.
In summary, the above described systems and methods enable a productivity program, such as a calendaring program, to automatically schedule tasks on a user's calendar. More specifically, action items within a task may be automatically scheduled based on relative priorities of the action items. This improves over existing technologies which, at best, only allow the automated scheduling of meetings.
While the present invention has been described with reference to particular embodiments and implementations, it should be understood that these are illustrative only, and that the scope of the invention is not limited to these embodiments. Many variations, modifications, additions and improvements to the embodiments described above are possible. It is contemplated that these variations, modifications, additions and improvements fall within the scope of the invention as detailed within the following claims.