U.S. patent application number 14/845455 was filed with the patent office on 2017-03-09 for method of automatic scheduling, related devices and communication system.
This patent application is currently assigned to BlackBerry Limited. The applicant listed for this patent is BlackBerry Limited. Invention is credited to Jeffrey Charles Bos.
Application Number | 20170068934 14/845455 |
Document ID | / |
Family ID | 58186679 |
Filed Date | 2017-03-09 |
United States Patent
Application |
20170068934 |
Kind Code |
A1 |
Bos; Jeffrey Charles |
March 9, 2017 |
METHOD OF AUTOMATIC SCHEDULING, RELATED DEVICES AND COMMUNICATION
SYSTEM
Abstract
A method of automatic scheduling, related devices and system. In
one aspect, there is provided a method of automatic scheduling,
comprising: receiving one or more tasks associated with a user,
wherein each task has an associated duration; determining available
timeslots in a calendar database associated with the user; and
automatically populating one or more of the available timeslots in
the calendar database associated with the user with new calendar
events associated with the one or more tasks in accordance with one
or more scheduling rules.
Inventors: |
Bos; Jeffrey Charles;
(Waterloo, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
BlackBerry Limited |
Waterloo |
|
CA |
|
|
Assignee: |
BlackBerry Limited
Waterloo
CA
|
Family ID: |
58186679 |
Appl. No.: |
14/845455 |
Filed: |
September 4, 2015 |
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06Q 10/1097
20130101 |
International
Class: |
G06Q 10/10 20060101
G06Q010/10 |
Claims
1. A method of automatic scheduling on an electronic device,
comprising: receiving one or more tasks associated with a user,
wherein each task has an associated duration; determining available
timeslots in a calendar database associated with the user; and
automatically populating one or more of the available timeslots in
the calendar database associated with the user with new calendar
events associated with the one or more tasks in accordance with one
or more scheduling rules.
2. The method of claim 1, wherein the one or more scheduling rules
include a due date rule which specifies that new calendar events
associated with the one or more tasks are automatically populated
in the calendar database so that calendar events associated with
tasks having a due date are scheduled to be completed before the
due date of the respective tasks.
3. The method of claim 2, wherein the due date rule specifies that
new calendar events associated with the one or more tasks are
automatically populated in the calendar database so that calendar
events associated with tasks having a due date are scheduled to be
completed a threshold duration before the due date of the
respective tasks
4. The method of claim 2, wherein the automatic populating
comprises: determining whether a total time represented by the
available timeslots before the due date is greater than or equal to
the associated duration of a particular task; when the total time
represented by the available timeslots before the due date is less
than the associated duration of the particular task, determining an
amount of additional time to be allocated to the particular task;
identifying any moveable calendar events in the calendar database
associated with the user which can be moved; when the total time
represented by any moveable calendar events in the calendar
database associated with the user is greater than or equal to the
amount of additional time to be allocated to the particular task,
moving one or more of the moveable calendar events in the calendar
database associated with the user to an available timeslot
occurring after the due date until the total time represented by
the available timeslots before the due date is greater than or
equal to the associated duration of the particular task, and
automatically populating one or more of the available timeslots in
the calendar database associated with the user with new calendar
events associated with the particular task in accordance with the
one or more scheduling rules.
5. The method of claim 4, wherein the automatic populating further
comprises: when the total time represented by any moveable calendar
events in the calendar database associated with the user is less
than the amount of additional time to be allocated to the
particular task, providing a notification.
6. The method of claim 4, further comprising: when the total time
represented by the available timeslots before the due date is
greater than or equal to the associated duration of the particular
task, automatically populating one or more of the available
timeslots in the calendar database associated with the user with
new calendar events associated with the particular task in
accordance with the one or more scheduling rules.
7. The method of claim 4, wherein a priority is associated with at
least some of the one or more tasks, any calendar events associated
with a task having a lower priority than the particular task are
identified as moveable.
8. The method of claim 4, wherein a privacy setting is associated
with at least some of the one or more tasks, wherein the privacy
setting comprises values of "Private" or "Public", wherein tasks
having the privacy setting of "Public" are identified as not
moveable and tasks having the privacy setting of "Private" are
identified as moveable.
9. The method of claim 1, further comprising: automatically
displaying a task user interface after completion of a calendar
event associated with a particular task, wherein the task user
interface includes a task status field having a value selectable
from a number of predetermined task status field options; in
response to a first value being set as the value of the task status
field, automatically changing the status of the task status field;
and in response to a value other than the first value being set as
the value of the task status field, automatically displaying a
prompt for a new duration; in response to receiving a new duration
as input, automatically changing the duration associated with the
particular task to the new duration received as input; determining
available timeslots in the calendar database associated with the
user; and automatically populating one or more of the available
timeslots in the calendar database associated with the user with
one or more new calendar events associated with the particular task
in accordance with the new duration and the one or more scheduling
rules.
10. The method of claim 9, wherein the particular task has an
associated due date, the method further comprising: in response to
a value other than the first value being set as the value of the
task status field, automatically displaying a prompt for a new due
date; in response to receiving a new due date as input,
automatically changing the due date associated with the particular
task to the new due date received as input; determining available
timeslots in the calendar database associated with the user; and
automatically populating one or more of the available timeslots in
the calendar database associated with the user with one or more new
calendar events associated with the particular task in accordance
with the new due date and the one or more scheduling rules.
11. The method of claim 9, wherein the task user interface is
automatically displayed only after a last completed calendar event
associated with the particular task when more than one calendar
event is associated with the particular task.
12. The method of claim 1, further comprising: automatically
displaying a task user interface after completion of a calendar
event associated with a particular task, wherein the task user
interface includes a task status field having a value selectable
from a number of predetermined task status field options; in
response to a first value being set as the value of the task status
field, automatically changing the status of the task status field;
and in response to a value other than the first value being set as
the value of the task status field, automatically displaying a
prompt for a new due date; in response to receiving a new due date
as input, automatically changing the due date associated with the
particular task to the new due date received as input; determining
available timeslots in the calendar database associated with the
user; and automatically populating one or more of the available
timeslots in the calendar database associated with the user with
one or more new calendar events associated with the particular task
in accordance with the new due date and the one or more scheduling
rules.
13. The method of claim 1, wherein one or more scheduling
parameters which define days and/or times of day which are
schedulable and days and/or times of day which are not schedulable
are defined, wherein determining the available timeslots comprises
determining available timeslots in the calendar database associated
with the user which match the one or more scheduling
parameters.
14. The method of claim 1, wherein a priority is associated with at
least some of the one or more tasks, wherein the one or more
scheduling rules include a priority rule which specifies that new
calendar events associated with the one or more tasks are
automatically populated in the calendar database so that calendar
events associated with tasks having a priority are scheduled in
accordance with an order of priority based on the priority
associated with the one or more tasks.
15. The method of claim 1, wherein receiving the one or more tasks
comprises: obtaining the one or more tasks from a task database
associated with the user, wherein the task database associated with
the user and the calendar database associated with the user are
distinct databases which are separately maintained from each
other.
16. The method of claim 1, wherein each calendar event associated
with a task item is defined by a calendar object which includes
linking information to the associated task, and each task item
associated with one or more calendar events is defined by a task
object which includes linking information to the one or more
associated calendar events.
17. The method of claim 16, wherein each task in the task database
and each calendar event in the calendar database have a unique
identifier (ID), wherein the task object of each task item
associated with one or more calendar events includes the unique IDs
of the one or more associated calendar events, and wherein the
calendar object of each calendar event associated with a task item
includes the unique ID of the associated task.
18. The method of claim 1, wherein the automatic populating
comprises: automatically generating one or more calendar events for
a particular task; and storing the automatically generated calendar
events in the calendar database for the user.
19. An electronic device, comprising: a processor configured for:
receiving one or more tasks associated with a user, wherein each
task has an associated duration; determining available timeslots in
a calendar database associated with the user; and automatically
populating one or more of the available timeslots in the calendar
database associated with the user with new calendar events
associated with the one or more tasks in accordance with one or
more scheduling rules.
20. A non-transitory machine readable medium having tangibly stored
thereon executable instructions that, when executed by a processor,
cause the processor to perform a method of automatic scheduling,
the method comprising: receiving one or more tasks associated with
a user, wherein each task has an associated duration; determining
available timeslots in a calendar database associated with the
user; and automatically populating one or more of the available
timeslots in the calendar database associated with the user with
new calendar events associated with the one or more tasks in
accordance with one or more scheduling rules.
Description
TECHNICAL FIELD
[0001] The present disclosure relates generally to personal
information management and, more specifically, to automatic
scheduling, related devices and communication system.
BACKGROUND
[0002] A personal information manager (PIM) allow users to create,
view and maintain a set of records concerning personal information,
such as contact records, records of scheduled calendar events
(e.g., appointments), records of scheduled tasks, etc. While tools
to automate the creation and maintenance of such records have been
proposed, the creation and maintenance of the PIMs remains largely
a time-consuming and manual endeavor performed by users. Thus,
there remains a need for tools to automate personal information
management.
BRIEF DESCRIPTION OF THE DRAWINGS
[0003] FIG. 1 is a schematic block diagram illustrating a
communication system including a mobile wireless communication
device to which example embodiments of the present disclosure can
be applied.
[0004] FIG. 2 is a schematic block diagram illustrating a mobile
wireless communication device that may be used with the wireless
communication system of FIG. 1.
[0005] FIG. 3A is a diagrammatic view of an example task user
interface screen for creating or editing a task item of a task
application in accordance with the present disclosure.
[0006] FIG. 3B is a diagrammatic view of an example task manager
user interface screen for managing tasks of task application in
accordance with the present disclosure.
[0007] FIG. 4A is a flowchart illustrating an example embodiment of
a method of automatic scheduling on an electronic device in
accordance with the present disclosure.
[0008] FIG. 4B is a flowchart illustrating an example embodiment of
a method automatically populating available timeslots when a
particular task has an associated due date in accordance with the
present disclosure.
[0009] FIG. 5 is a flowchart illustrating an example embodiment of
a method of processing a scheduled task in accordance with the
present disclosure.
[0010] FIG. 6 is a diagrammatic view of an example reminder user
interface screen for a calendar application in accordance with the
present disclosure.
DESCRIPTION OF EXAMPLE EMBODIMENTS
[0011] The present disclosure is made with reference to the
accompanying drawings, in which embodiments are shown. However,
many different embodiments may be used, and thus the description
should not be construed as limited to the embodiments set forth
herein. Rather, these embodiments are provided so that this
disclosure will be thorough and complete. Like numbers refer to
like elements throughout, and prime notation is used to indicate
similar elements or steps in alternative embodiments.
[0012] In accordance with an example embodiment of one aspect of
the present disclosure, there is provided a method of automatic
scheduling on an electronic device, comprising: receiving one or
more tasks associated with a user, wherein each task has an
associated duration; determining available timeslots in a calendar
database associated with the user; and automatically populating one
or more of the available timeslots in the calendar database
associated with the user with new calendar events associated with
the one or more tasks in accordance with one or more scheduling
rules.
[0013] In some embodiments, the one or more scheduling rules
include a due date rule which specifies that new calendar events
associated with the one or more tasks are automatically populated
in the calendar database so that calendar events associated with
tasks having a due date are scheduled to be completed before the
due date of the respective tasks.
[0014] In some embodiments, the due date rule specifies that new
calendar events associated with the one or more tasks are
automatically populated in the calendar database so that calendar
events associated with tasks having a due date are scheduled to be
completed a threshold duration before the due date of the
respective tasks
[0015] In some embodiments, the automatic populating comprises:
determining whether a total time represented by the available
timeslots before the due date is greater than or equal to the
associated duration of a particular task; when the total time
represented by the available timeslots before the due date is less
than the associated duration of the particular task, determining an
amount of additional time to be allocated to the particular task;
identifying any moveable calendar events in the calendar database
associated with the user which can be moved; when the total time
represented by any moveable calendar events in the calendar
database associated with the user is greater than or equal to the
amount of additional time to be allocated to the particular task,
moving one or more of the moveable calendar events in the calendar
database associated with the user to an available timeslot
occurring after the due date until the total time represented by
the available timeslots before the due date is greater than or
equal to the associated duration of the particular task, and
automatically populating one or more of the available timeslots in
the calendar database associated with the user with new calendar
events associated with the particular task in accordance with the
one or more scheduling rules.
[0016] In some embodiments, the automatic populating further
comprises: when the total time represented by any moveable calendar
events in the calendar database associated with the user is less
than the amount of additional time to be allocated to the
particular task, providing a notification.
[0017] In some embodiments, the method further comprises: when the
total time represented by the available timeslots before the due
date is greater than or equal to the associated duration of the
particular task, automatically populating one or more of the
available timeslots in the calendar database associated with the
user with new calendar events associated with the particular task
in accordance with the one or more scheduling rules.
[0018] In some embodiments, a priority is associated with at least
some of the one or more tasks, any calendar events associated with
a task having a lower priority than the particular task are
identified as moveable.
[0019] In some embodiments, a privacy setting is associated with at
least some of the one or more tasks, wherein the privacy setting
comprises values of "Private" or "Public", wherein tasks having the
privacy setting of "Public" are identified as not moveable and
tasks having the privacy setting of "Private" are identified as
moveable.
[0020] In some embodiments, the method further comprises:
automatically displaying a task user interface after completion of
a calendar event associated with a particular task, wherein the
task user interface includes a task status field having a value
selectable from a number of predetermined task status field
options; in response to a first value being set as the value of the
task status field, automatically changing the status of the task
status field; and in response to a value other than the first value
being set as the value of the task status field, automatically
displaying a prompt for a new duration; in response to receiving a
new duration as input, automatically changing the duration
associated with the particular task to the new duration received as
input; determining available timeslots in the calendar database
associated with the user; and automatically populating one or more
of the available timeslots in the calendar database associated with
the user with one or more new calendar events associated with the
particular task in accordance with the new duration and the one or
more scheduling rules.
[0021] In some embodiments, the particular task has an associated
due date, the method further comprising: in response to a value
other than the first value being set as the value of the task
status field, automatically displaying a prompt for a new due date;
in response to receiving a new due date as input, automatically
changing the due date associated with the particular task to the
new due date received as input; determining available timeslots in
the calendar database associated with the user; and automatically
populating one or more of the available timeslots in the calendar
database associated with the user with one or more new calendar
events associated with the particular task in accordance with the
new due date and the one or more scheduling rules.
[0022] In some embodiments, the task user interface is
automatically displayed only after a last completed calendar event
associated with the particular task when more than one calendar
event is associated with the particular task.
[0023] In some embodiments, the method further comprises:
automatically displaying a task user interface after completion of
a calendar event associated with a particular task, wherein the
task user interface includes a task status field having a value
selectable from a number of predetermined task status field
options; in response to a first value being set as the value of the
task status field, automatically changing the status of the task
status field; and in response to a value other than the first value
being set as the value of the task status field, automatically
displaying a prompt for a new due date; in response to receiving a
new due date as input, automatically changing the due date
associated with the particular task to the new due date received as
input; determining available timeslots in the calendar database
associated with the user; and automatically populating one or more
of the available timeslots in the calendar database associated with
the user with one or more new calendar events associated with the
particular task in accordance with the new due date and the one or
more scheduling rules.
[0024] In some embodiments, one or more scheduling parameters which
define days and/or times of day which are schedulable and days
and/or times of day which are not schedulable are defined, wherein
determining the available timeslots comprises determining available
timeslots in the calendar database associated with the user which
match the one or more scheduling parameters.
[0025] In some embodiments, a priority is associated with at least
some of the one or more tasks, wherein the one or more scheduling
rules include a priority rule which specifies that new calendar
events associated with the one or more tasks are automatically
populated in the calendar database so that calendar events
associated with tasks having a priority are scheduled in accordance
with an order of priority based on the priority associated with the
one or more tasks.
[0026] In some embodiments, receiving the one or more tasks
comprises: obtaining the one or more tasks from a task database
associated with the user, wherein the task database associated with
the user and the calendar database associated with the user are
distinct databases which are separately maintained from each
other.
[0027] In some embodiments, each calendar event associated with a
task item is defined by a calendar object which includes linking
information to the associated task, and each task item associated
with one or more calendar events is defined by a task object which
includes linking information to the one or more associated calendar
events.
[0028] In some embodiments, each task in the task database and each
calendar event in the calendar database have a unique identifier
(ID), wherein the task object of each task item associated with one
or more calendar events includes the unique IDs of the one or more
associated calendar events, and wherein the calendar object of each
calendar event associated with a task item includes the unique ID
of the associated task.
[0029] In some embodiments, the automatic populating comprises:
automatically generating one or more calendar events for a
particular task; and storing the automatically generated calendar
events in the calendar database for the user.
[0030] In some embodiments, the method further comprises
identifying tasks that are available for scheduling, and the
receiving comprises receiving one or more tasks that are available
for scheduling.
[0031] In accordance with an example embodiment of another aspect
of the present disclosure, there is provided an electronic device,
comprising: a processor configured for: receiving one or more tasks
associated with a user, wherein each task has an associated
duration; determining available timeslots in a calendar database
associated with the user; and automatically populating one or more
of the available timeslots in the calendar database associated with
the user with new calendar events associated with the one or more
tasks in accordance with one or more scheduling rules.
[0032] In accordance with an example embodiment of a further aspect
of the present disclosure, there is provided a non-transitory
machine readable medium having tangibly stored thereon executable
instructions that, when executed by a processor, cause the
processor to perform a method of automatic scheduling, the method
comprising: receiving one or more tasks associated with a user,
wherein each task has an associated duration; determining available
timeslots in a calendar database associated with the user; and
automatically populating one or more of the available timeslots in
the calendar database associated with the user with new calendar
events associated with the one or more tasks in accordance with one
or more scheduling rules.
[0033] The present disclosure provides a method of automatic
scheduling, related devices and communication system, and in
particular, a productivity application for automatic scheduling of
calendar events for a task. Research has shown that users are
adopting a much more calendar-focused approach for managing their
tasks. Often users will block free time to carry out specific
actions, however if the task is incomplete, the user must manually
move the action to another free time slot in their Calendar to
avoid forgetting. The present disclosure provides a method for
automatic scheduling of calendar events for a task. The user
provides one or more tasks along with the estimated time required
to complete each task. An order of priority of the tasks and/or a
task deadline may also be provided. The application will then
populate the calendar with events to occupy empty time slots, for
example, during the week. Users may also drag and drop the tasks
into the calendar to create calendar events as desired. Users will
receive a timely notification to remind them to start the task when
appropriate. At the end of the time allocated for completing the
task, the user receives a user interface prompt asking if the task
is complete, if it should be rescheduled or deferred, or if more
time is required to complete the task. Based on user feedback, the
system will automatically find the next suitable time slot and move
other tasks in the calendar based on the priority of those tasks or
other factors. The user will also have the option to set tasks as
"public" which will block off time in the calendar to prevent
another meeting from conflicting with the work time or "private"
which will allow other meetings automatically to move the task to
another available (i.e. "open") timeslot. Other features will be
appreciated in view of the following disclosure.
[0034] Reference is first made to FIG. 1 which shows in schematic
block diagram form a communication system 100 in which example
embodiments of the present disclosure can be applied. The
communication system 100 comprises a plurality of mobile wireless
communication devices ("devices") 200 connected to a wireless
network 101. The wireless network 101 comprises one or more of a
wireless Wide Area Network (WAN) 102 and a Wireless Local Area
Network (WLAN) 104. The device 200 may be configured to communicate
over both the wireless WAN 102 and WLAN 104, and to roam between
these networks.
[0035] The communication system 100 also comprises a wireless
network gateway 110 with connects the devices 200 to the Internet
112, and through the Internet 112 to a wireless connector system
such as an enterprise server 120. The wireless network gateway 110
provides translation and routing services between the enterprise
server 120 and the WAN 102, which facilitates communication between
the devices 200 and other devices (not shown) connected, directly
or indirectly, to the wireless network 101. Accordingly,
communications sent via the devices 200 are transported via the
wireless network 101 to the wireless network gateway 110. The
wireless gateway 110 forwards the communication to the enterprise
server 120 via the Internet. Communication sent from the enterprise
server 120 are received by the wireless network gateway 110 and
transported via the wireless network 101 to the devices 200.
[0036] The wireless WAN 102 may be implemented as a packet-based
cellular network that includes a number of transceiver base
stations 108 (one of which is shown in FIG. 1) where each of the
base stations 108 provides wireless Radio Frequency (RF) coverage
to a corresponding area or cell. The wireless WAN 102 is typically
operated by a cellular network service provider that provides
subscription packages to users of the devices 200.
[0037] The WLAN 104 comprises a wireless network which, in some
embodiments, conforms to IEEE 802.11x standards (sometimes referred
to as Wi-Fi.RTM.) such as, for example, the IEEE 802.11a, 802.11b
and/or 802.11g standard. Other communication protocols may be used
for the WLAN 104 in other embodiments. The WLAN 104 includes one or
more wireless RF Access Points (AP) 114 (one of which is shown in
FIG. 1) that collectively provide a WLAN coverage area. The WLAN
104 is operated by an enterprise (for example, a business or
university) and the access points 114 are connected to an access
point (AP) interface 116 in the shown embodiment. The AP interface
116 provides translation and routing services between the access
points 114 and the enterprise server 120 to facilitate
communication between two or more of the devices 200 and other
devices (not shown) connected, directly or indirectly, to the
enterprise server 120. The AP interface 116 may be implemented
using a computer, for example, a server running a suitable computer
program or software.
[0038] The enterprise server 120 may be implemented as one or more
server modules, and is typically located behind a firewall 114. The
enterprise server 120 provides the devices 200 with access to an
organization's internal network referred to as an enterprise
network 124 and provides administrative control and management
capabilities over users and devices 200 which may connect to the
enterprise network 124. The enterprise server 120 is dedicated to
managing communications to and from a set of managed devices 200
(the enterprise devices 200) so that enterprise devices 200 are
each enabled to exchange electronic messages and other information
with resources and devices (e.g., computers) connected to the
enterprise network 124.
[0039] The enterprise server 120 allows the enterprise devices 200
to access resources of the enterprise network 124 including a
personal information manager (PIM) server 132 such as, for example,
Microsoft Exchange.TM., for connecting to an enterprise messaging
system, an Internet server 134 for connecting to the Internet, and
an application server 136 for implementing enterprise applications
or for accessing other servers. The PIM server 132 provides
messaging, calendar, task and address book functions. The
enterprise server 120 is configured to direct or redirect email
messages, instant messages (IM) and other corporate data received
from the wireless network 101 and internally within the enterprise
network 124 to be addressed to the devices 200.
[0040] The enterprise server 120 also provides secure transmission
of email, IM and other corporate or enterprise data transmitted
from the enterprise server 120 to enterprise devices 200. In some
embodiments, communications between the enterprise server 120 and
the devices 200 are encrypted. In some embodiments, communications
are encrypted using a symmetric encryption key implemented using
Advanced Encryption Standard (AES) or Triple Data Encryption
Standard (Triple DES) encryption. Private encryption keys are
generated in a secure, two-way authenticated environment and are
used for both encryption and decryption of data. The private
encryption key is stored in a dedicated user storage area on the
PIM server 132 and on the device 200, and can typically be
regenerated by the user on the device 200. Data sent to the devices
200 is encrypted by the enterprise server 120 using the private
encryption key retrieved from the dedicated user storage area. The
encrypted data, when received on the devices 200, is decrypted
using the private encryption key stored in memory. Similarly, data
sent to the enterprise server 120 from the devices 200 is encrypted
using the private encryption key stored in the memory of the device
200. The encrypted data, when received on the enterprise server
120, is decrypted using the private encryption key retrieved from
the dedicated user storage area.
[0041] The enterprise server 120 may comprise a mobile data
delivery module (not shown) which provides connectivity between the
wireless WAN 102 and the WLAN 104 and the other connections 106 and
devices 200 and/or networks connected directly or indirectly to the
enterprise server 120. Alternatively, the mobile data delivery
module (not shown) may be implemented by a separate server or
server application which is connected to the enterprise server 120.
In some embodiments, the mobile data delivery module (not shown)
provides TCP/IP (transmission control protocol/Internet protocol)
and HTTP (hypertext transfer protocol)-based connectivity providing
an Internet based service connection. The mobile data delivery
module provides access for the devices 102 to the Internet 112 and
World Wide Web (WWW) and possibly other external communication
networks.
[0042] The wireless network gateway 110 is adapted to route data
packets received from the device 200 over the wireless network 101
to destination email and/or Instant PIM server 132, Internet/Web
servers 134, and one or more application servers 134 through the
mobile data delivery module, and to route data packets received
from the servers 132, 134, 136 through the mobile data delivery
module over the wireless network 101 to a destination device 200.
The wireless network gateway 110 forms a connection or bridge
between the servers 132, 134, 136 and wireless networks associated
with wireless e-mail communication and/or Internet access.
[0043] The enterprise network 124 may comprise a private local area
network, wide area network, or combinations thereof. Typically, the
enterprise network 124 is an intranet of a corporation or other
organization. The enterprise server 120 may also provide access to
other public or private communication networks such as the Internet
112. A plurality of enterprise computers 130 (one of which is shown
in FIG. 1), such as desktop or notebook computers, are connected to
the enterprise network 124 by a wired connection or through a WLAN
access point interface 116.
[0044] Mobile wireless communication devices 200 may be connected
to the enterprise network 124 via an AP 114 or via a computer 130
using a physical interface or short-range wireless communication
interface 106 between the computer 130 and a mobile wireless
communication device 200. Synchronization between devices 200 and a
host computer 130 may be performed as understood by those skilled
in the art. Databases that store PIM data, such as messages,
calendar event data, and task data, may exist on a mobile wireless
communication device 200, a host computer 130, and/or the PIM
server 132. Synchronization may be performed wirelessly via the
wireless network 101 or via a computer 130 using a physical
interface or short-range wireless communication interface 106
between the computer 130 and a mobile wireless communication device
200. The databases that store PIM data may be of various
configurations and locations, and may be accessed on the device
200, computer 130, PIM server 132 or accessed by any of these
systems remotely, or by an Application Programming Interface (API)
where the database architecture may not be known.
[0045] It will be appreciated that the above-described
communication system is provided for the purpose of illustration
only, and that the above-described communication system comprises
one possible communication network configuration of a multitude of
possible configurations for use with the devices 200. Suitable
variations of the communication system will be understood to a
person of skill in the art and are intended to fall within the
scope of the present disclosure.
[0046] Reference is next made to FIG. 2 which illustrates in block
diagram form a device 200 in which example embodiments described in
the present disclosure can be applied. Examples of the device 200
include, but are not limited to, a mobile (or cellular) telephone,
smartphone or superphone, and tablet computer. Other possible
examples of the device 200 include a notebook computer (also known
as a laptop, netbook or ultrabook computer depending on the device
capabilities), portable or personal media player (e.g., music or
MP3 players, video players, etc.), wireless organizer or personal
digital assistant (PDA), portable gaming device, special purpose
digital camera or wearable computer such as a smartwatch or optical
head-mounted display.
[0047] The device 200 illustratively includes a rigid case or
housing (not shown) which carries the electronic components of the
device 200. The housing may be elongated vertically, or may take on
other sizes and shapes (including clamshell housing structures).
The device 200 includes a controller comprising at least one
processor 202 (such as a microprocessor) which controls the overall
operation of the device 200.
[0048] The processor 202 interacts with other components, such as
input device(s) 206, Random Access Memory (RAM) 208, Read Only
Memory (ROM) 210, wireless communication subsystem 211 for
exchanging radio frequency signals with a wireless network 101, a
display 212 such as a color liquid crystal display (LCD) or
active-matrix organic light-emitting diode (AMOLED) display,
persistent (non-volatile) memory 260 which may be flash erasable
programmable read only memory (EPROM) memory (flash memory) or
other suitable form of memory, sensor(s) 268 such as a motion
sensor, an orientation sensor and/or proximity sensor, auxiliary
input/output (I/O) subsystems 250, data port 252 such as serial
data port (e.g., Universal Serial Bus (USB) data port), speaker
256, microphone 258, a short-range communication subsystem 262, and
other device subsystems 264 such as a camera, global positioning
system (GPS), vibrator or light-emitting diode (LED) notification
light. The components of the device 200 are coupled via a
communication bus (not shown) which provides a communication path
between the various components.
[0049] The input device(s) 206 may include a keyboard or keypad,
one or more buttons, one or more switches, a touchpad, a rocker
switch, a thumbwheel, or other type of input device. In addition to
or instead of a keyboard or keypad, the display 212 may be provided
as part of a touchscreen or touch-sensitive display which provides
an input device 206. The display 212 which together with a
touch-sensitive overlay (not shown) operably coupled to an
electronic controller (not shown) may comprise the touch-sensitive
display. The touch-sensitive display is typically a capacitive
touch-sensitive display which includes a capacitive touch-sensitive
overlay.
[0050] User-interaction with a graphical user interface (GUI)
presented on the display 212 performed using the input devices 206.
Information, such as text, characters, symbols, images, icons, and
other items are rendered and displayed on the display 212 via the
processor 202. The processor 202 may interact with one or more
sensors 268, such as the orientation sensor to detect direction of
gravitational forces or gravity-induced reaction forces so as to
determine, for example, the orientation of the device 200 in order
to determine a screen orientation for the GUI.
[0051] Operating system software 280 executed by the processor 202
is stored in the persistent memory 260, such as flash memory, but
may be stored in other types of memory devices, such as ROM 210 or
similar storage element. User data 280 is also stored in the
persistent memory 260. System software, software modules, specific
device applications, or parts thereof, may be temporarily loaded
into a volatile store, such as RAM 208, which is used for storing
runtime data variables and other types of data or information.
Communication signals received by the device 200 may also be stored
in the RAM 208. Although specific functions are described for
various types of memory, this is merely one example, and a
different assignment of functions to types of memory could also be
used.
[0052] The processor 202, in addition to its operating system
functions, enables execution of software applications on the device
200. A predetermined set of applications or functional software
modules that control basic device operations, such as voice
communication module (not shown) and data communication module (not
shown) may be installed on the device 200, for example, during
manufacture. New applications and updates to installed applications
may be installed by the user, for example, via the Internet. In an
example embodiment, the software resident on the device 200
includes a messaging application 282, a calendar 284, an address
book 286, a task application 288, and an event scheduler 290. A
task database 292 for storing task items and a calendar database
294 for storing calendar events and other data may also be stored
in the memory 260 along with other data. The task items and
calendar events can then be stored or accessed by one of the
modules or applications. The task database 292 and the calendar
database 294 associated are distinct databases which are separately
maintained from each other. Tasks and associated calendar events
may be linked, as described in greater detail below. In some
embodiments, some or part of the functionality of the functional
modules or applications can be implemented through firmware or
hardware components instead of, or in combination with, computer
software instructions executed by the processor 202.
[0053] The event scheduler 290 is provided for facilitating the
scheduling of events, as will be explained in greater detail below.
The messaging module 282 enables the device 200 to send and receive
messages, such as email messages, over the wireless network 101.
The term "message" is used herein to designate any type of
electronic message such as an email (which may include a thread of
emails), text or SMS message, instant message, etc.
[0054] The event scheduler 290 may be implemented as part of an
electronic messaging application, such as the messaging module 282
or as part of a general event scheduling application, such as the
calendar 284. Alternatively, the event scheduler 290 may be
implemented as an independent application that communicates with an
electronic messaging application and/or a general event scheduling
application. Alternatively, the event scheduler 290 may be
implemented as part of a PIM application. The PIM application may
be capable of organizing and managing data items, such as email,
calendar events, voice mails, appointments, and task items. The PIM
application may be used instead of the separate messaging
application 282, calendar application 284, address book 286, and
task application 288. The PIM application may also be capable of
sending and receiving data items via the wireless network 101. The
PIM data items may be seamlessly integrated, synchronized and
updated via the wireless network 101 with corresponding data items
stored or associated with a host computer 130 and/or PIM server
132.
[0055] The address book 104 enables contact information, such as
telephone numbers, personal identification numbers (PIN), and email
and/or instant text messaging addresses, to be stored and accessed
on the device 10. As mentioned above, such contact information may
be stored in memory 24, within a contact information database 110.
The messaging module 108 enables the device 10 to transmit and
receive messages over one or more wireless networks 50. In some
embodiments, PIN messages may be sent directly from one electronics
communications device to another without passing through an
employer company's server.
[0056] The device 200 is a two-way wireless Radio Frequency (RF)
communication device having data and/or voice communication
capabilities. In addition, the device 200 may have the capability
to communicate with other computer systems via the Internet. The
wireless communication subsystem 211 exchanges radio frequency
signals with the wireless network 101. The wireless communication
subsystem 211 comprises a wireless Wide Area Network (WAN)
communication subsystem for two-way communication with a wireless
WAN, such as a cellular network. The device 200 may communicate
with any one of a plurality of fixed transceiver base stations (not
shown) of the wireless network 101 within its geographic coverage
area. The device 200 may send and receive communication signals
over the wireless network 101 after the required network
registration or activation procedures have been completed. In
addition, the wireless communication subsystem 211 may comprise a
Wireless Local Area Network (WLAN) communication subsystem for
two-way communication with a WLAN via wireless access points (not
shown), e.g. WiFi.TM..
[0057] Communication functions, including data and voice
communication, are performed through the communication subsystem
211 and possibly through the short-range communication subsystem
262. Data received by the device 200 may be decompressed and
decrypted by a decoder (not shown). The communication subsystem 211
includes a receiver 218, a transmitter 216, and one or more
antennas 218 and 220. In addition, the communication subsystem 211
also includes a processor, such as a digital signal processor (DSP)
224, and local oscillators (LOs) 222. The specific design and
implementation of the communication subsystem 211 is dependent upon
the wireless communication network(s) 104 in which the device 200
is intended to operate. For example, the device 200 may include a
communication subsystem 211 designed to operate with the
Mobitex.TM., Data TAC.TM. or General Packet Radio Service (GPRS)
mobile data communication networks, and also designed to operate
with any of a variety of voice communication networks, such as
Advanced Mobile Phone System (AMPS), time division multiple access
(TDMA), Code Division Multiple Access (CDMA), Wideband code
division multiple access (W-CDMA), Personal Communication Service
(PCS), GSM (Global System for Mobile Communication), Cellular
Digital Packet Data (CDPD), integrated Digital Enhanced Network
(iDEN), High-Speed Downlink Packet Access (HSPDA), Evolution-Data
Optimized (EvDO), Enhanced Data rates for GSM Evolution (EDGE),
etc. Other types of data and voice networks, both separate and
integrated, may also be utilized with the device 200. The device
200 may also be compliant with other communication standards such
as 3GSM, 3rd Generation Partnership Project (3GPP), Universal
Mobile Telecommunication System (UMTS), 4G, etc.
[0058] Network access requirements vary depending upon the type of
communication system. For example, in GPRS networks, network access
is associated with a subscriber or user of a device. The device 200
also includes a memory card interface 230 for receiving a removable
memory card 232 comprising persistent memory, such as flash memory.
The memory card 232 can be inserted in or coupled to the memory
card interface 230 for storing and reading data by the processor
202.
[0059] When required network registration or activation procedures
have been completed, the mobile device 200 may send and receive
communication signals over the communication network 104. Signals
received by the antenna 218 through the wireless network 101 are
input to the receiver 214, which may perform such common receiver
functions as signal amplification, frequency down conversion,
filtering, channel selection, etc., as well as analog-to-digital
(A/D) conversion. A/D conversion of a received signal allows more
complex communication functions such as demodulation and decoding
to be performed in the DSP 224. In a similar manner, signals to be
transmitted are processed, including modulation and encoding, for
example, by the DSP 224. These DSP-processed signals are input to
the transmitter 216 for digital-to-analog (D/A) conversion,
frequency up conversion, filtering, amplification, and transmission
to the wireless network 101 via the antenna 220.
[0060] In addition to processing communication signals, the DSP 224
provides for control of the receiver 214 and the transmitter 216.
For example, the gains applied to communication signals in the
receiver 214 and the transmitter 216 may be adaptively controlled
through automatic gain control algorithms implemented in the DSP
224.
[0061] In a data communication mode, a received signal, such as a
text message or web page download, is processed by the
communication subsystem 211 and is input to the processor 202. The
received signal is then further processed by the processor 202 for
an output to the display 212, or alternatively to some other
auxiliary I/O device 250. The device 200 may also be used to
compose data items, such as email messages, using the input
device(s) 206 and/or some other auxiliary I/O device 250. The
composed data items may then be transmitted over the communication
network 104 via the communication subsystem 211.
[0062] In a voice communication mode, overall operation of the
device is substantially similar to the data communication mode,
except that received signals are output to a speaker 256, and
signals for transmission are generated by a microphone 258.
Alternative voice or audio I/O subsystems, such as a voice message
recording subsystem, may also be implemented on the device 200. In
addition, the display 212 may also be utilized in voice
communication mode, for example to display the identity of a
calling party, the duration of a voice call, or other voice call
related information.
[0063] The short-range communication subsystem 262 enables
communication between the device 200 and other proximate systems or
devices, which need not necessarily be similar devices. The
short-range communication subsystem 262 may include a Near field
communication (NFC) subsystem or subsystem for Bluetooth.TM., IEEE
802.11, IEEE 802.15.3a (also referred to as UltraWideband (UWB)),
Z-Wave, Zig Bee, or infrared such as an Infrared Data Association
(IrDA) communication, as well as a corresponding communication
module in persistent memory 260 to provide for communication with
similarly-enabled systems and devices.
[0064] The device 200 also includes a battery 238 as a power
source, which is typically one or more rechargeable batteries that
may be charged, for example, through charging circuitry coupled to
a battery interface such as the serial data port 252. The battery
238 provides electrical power to at least some of the components of
the device 200, and the battery interface 236 provides a mechanical
and electrical connection for the battery 238. The battery
interface 236 is coupled to a regulator (not shown) which provides
power V+ to the circuitry of the device 200.
[0065] FIG. 3A shows a diagrammatic view of a task user interface
300 for a task application in accordance with one example
embodiment of the present disclosure. The task user interface 300
may be used to create and store a new task or edit an existing
task. The task user interface 300 includes task information
concerning a particular task. The task information is provided by a
number of fields, at least some of which are selectable and
editable by the user. The provided fields may differ between
different embodiments. In the shown embodiment, the task user
interface 300 includes a subject field 310, a time required field
(also known as the duration field) 312, a due date field 314, a
priority field 316, a status field 318, a privacy (or sensitivity)
field 320, a reminder field 322, a schedule field 324 (shown as
"Add to Calendar"), and a note field 328. The various fields of the
task user interface may be comprised of subfields, or in other
embodiments multiple fields may be provided. The type of field also
varies between the various fields. The task user interface 300 also
includes a "Save and Close" button 342 for saving the task item and
closing the task user interface 300, and a "Cancel" button 344 for
discarding any received input and closing the task user interface
300. The task user interface 300 may also include a schedule status
field 330 (shown as "Scheduled").
[0066] The subject field 310 is a text field in which a subject of
the task can be entered.
[0067] The duration field 312 comprises a number field and a text
field in which an estimated time required for the task can be
entered. Alternatively, the duration field 312 may be a dropdown
list from which a duration can be selected from a number of
predetermined duration options. The duration field 312 may be
dynamic. For example, the value of the field may decrease after
each the completion/occurrence of each associated calendar event by
an amount equivalent to the duration of the completed calendar
event. For example, when the duration field of a task is initially
set at 3.5 hours (hrs) and a calendar event having a duration of
1.0 hour associated with the task completes (i.e., the timeslot
allocated to the calendar event has past), the duration field 312
may be reduced by 1.0 hour to a value of 2.5 hours.
[0068] The due date field 314 is a date field in which a due date
for the task can be entered. The due date field 314 may also
include a time field for entering a time on the due date by which
the task should be completed. In some embodiments, the task
application 288 performs a check to ensure that the value of the
due date field 314 occurs in the future and prompts the user for a
new due date when the value of the due date field 314 is set in the
past.
[0069] The priority field 316 is a dropdown list from which a
priority value can be selected from a number of predetermined
priority field options. In the shown embodiment, the priority field
options are "Low", "Normal" and "High", thereby allowing a
qualitative priority to be specified.
[0070] Alternatively, in other embodiments a specific and unique
priority can be assigned to tasks, thereby allowing an absolute
priority or priority ranking to be assigned. For example, the user
may assign each task a unique priority ranking in decreasing order
of importance. For example, the highest priority task may be
assigned a priority ranking of "1", the second highest priority
task may be assigned a priority ranking of "2" and so forth until
all tasks have been assigned a priority ranking. The priority
ranking may be dynamic. For example, when a task is completed as
determined by the value of status field 318 of the respective task,
the priority of the remaining uncompleted tasks may be
automatically updated (i.e., without user intervention). For
example, when the task with a priority ranking of "1" is completed,
the task with the priority ranking of "2" will have the value of
its priority ranking updated to "1".
[0071] A dedicated user interface may be provided to assist in
inputting and managing the priority ranking of the tasks in the
task database 292. An example of a task manager user interface 360
is shown in FIG. 3B. The task manager user interface 360 provides a
list of tasks items stored in the task database 292. Task
information is provided in the task manager user interface 360. In
the shown example, the subject 310, due date 314, priority 316,
status 318, and schedule field 324. The task manager user interface
360 also includes a "Save and Close" button 362 for saving the
changes to the task items and closing the task manager user
interface 360, and a "Cancel" button 364 for discarding any
received input and closing the task manager user interface 360. The
task manager user interface 360 allows multiple tasks to be viewed
and edited from a common user interface. For example, the priority
of all tasks in the task database 292 could be viewed and edited as
necessary.
[0072] The status field 318 is a dropdown list from which a task
status can be selected from a number of predetermined task status
options. The status field 318 has at least two task status field
options. In a relatively simple embodiment, the task status field
has a value of "Completed" or "Not Completed". In the shown
embodiment, the task status field options include "Not Started",
"In Progress", "Waiting on someone else", "Deferred" and
"Completed". In some embodiments, the status of "Not Started" may
be automatically assigned by the task application 288 before any
scheduled calendar event associated with a particular task have
occurred (e.g., before such events have been started or completed)
and that status of "In Progress" may be automatically assigned by
the task application 288 after a scheduled calendar event
associated with the particular task has occurred but other
scheduled calendar event associated with the task remain.
[0073] The privacy field 320 is a dropdown list from which a
privacy setting can be selected from a number of predetermined
privacy setting options. The privacy field 320 has at least two
privacy field options. In a relatively simple embodiment, the
privacy field 320 has a value of "Private" or "Public". A task
having the privacy setting of "Public" is published to a public
calendar (if any) maintained by the PIM server 132 and can only be
moved by the user and not the event scheduler 290. Thus, tasks
having the privacy setting of "Public" can be identified by the
event scheduler 290 as not moveable. In contrast, tasks having the
privacy setting of "Private" are not published to a public calendar
(if any) and can be moved by either the event scheduler 290 or the
user. Thus, tasks having the privacy setting of "Private" can be
identified by the event scheduler 290 as moveable. It will be
appreciated that calendar events associated with private tasks may
be stored in the calendar database 294 of the user, or private
tasks may be stored in other databases and marked as "Private". The
privacy setting, in addition to determining whether a calendar
event associated with a task is published to a public calendar,
provides a mechanism for identifying moveable calendar events.
[0074] The reminder field 322 comprises a number field and a text
field in which a duration of time before a calendar event for
generating a reminder can be entered. The duration specifies a time
before a calendar event associated with a task at which a reminder
is generated. Alternatively, the reminder field 322 may be a
dropdown list from which a duration can be selected from a number
of predetermined duration options. The reminder field 322 may also
include a toggle, such as a checkbox, for enabling or disabling
reminders. When reminders are enabled, for example by checking the
checkbox, a duration can be set by the user. A default duration may
be defined in the absence of user input. For example, the reminder
date may be set as a default number of days after the task is
created or a default number of days before the due date of the task
(if any), whereas the reminder time may be a default time of day or
a default amount of time before the due date of the task (if any).
Alternatively, the default reminder may be 0, i.e. to generate the
reminder when the associated calendar event starts.
[0075] The schedule field 324 (shown as "Add to Calendar")
comprises a toggle, shown as a checkbox, to indicate whether or not
the task is to be scheduled. When a particular task is to be
scheduled, a user can check the checkbox. The schedule field 324
may have a default status of "on" or "yes" so that the task will be
scheduled (e.g., the checkbox is checked) which the user can change
if desired. In other embodiments, the schedule field 324 could be
omitted. The value of the schedule field 324 of multipole tasks may
be changed relatively easily with the task manager user interface
360 (FIG. 3B), described above.
[0076] The note field 328 is a text field in which additional
information about the task can be entered.
[0077] The schedule status field 330 (shown as "Scheduled")
provides an indication as to whether the respect task item has been
scheduled, i.e. whether corresponding calendar events have been
created and added to the calendar database 284. The schedule status
field 330 is not user editable. Instead, the schedule status field
330 reflects the schedule status of the particular task item. In
the shown example, a checked checkbox is used to indicate that a
task item has been scheduled whereas an unchecked checkbox is used
to indicate that a task item has not been scheduled. The checkbox
is merely an example of a visual indication of the schedule status.
Other means of visual indication of the schedule status are
possible. In other embodiments, the schedule status field 330 could
be omitted.
[0078] The task user interface 300 can be used to create a task and
edit the task parameters at any time thereafter. For example, the
task user interface 300 may be used to edit the time required
(duration) field 312 or the status field 318 at any time. When
changes are made to uncompleted tasks, calendar events associated
with those tasks are changed accordingly. This may involve changing
the number, duration and/or date/time at which the associated
calendar events are scheduled to occur. The changes to calendar
events associated with a task may be made in response to the saving
of changes to a task item, for example, after the changes to a task
item are saved. Alternatively, the changes may be made in response
to designated input, such as input to schedule any unscheduled
tasks or input to update scheduled tasks. For example, toggling the
schedule field 324 from "yes" to "no: (e.g., from checked to
unchecked) will cause scheduled calendar events associated with a
task to be cancelled, and toggling the schedule field 324 from "no"
to "yes" (e.g., from unchecked to checked) will cause new calendar
events to be added based on the available timeslots. In some
embodiments, when a change to task which affects scheduled calendar
events associated with the task is made, for simplicity the
scheduled calendar events are cancelled and new calendar events are
added based on the available timeslots, as described elsewhere
herein.
[0079] It is contemplated that a task may be dependent on one or
more actions in some embodiments. The one or more actions upon
which a task depends may include one or more other tasks. A
particular action or task may have one or more tasks which depend
on it. In some embodiments, if the status 318 is set to "Waiting
for someone else" the user may be provided with an option to
specify an action on which the task depends and an owner of the
action via a shared calendar such as that provided by Microsoft
Exchange.TM.. When the status 318 is set to "Waiting for someone
else", the task may not be not available for scheduling.
[0080] When a particular task is dependent on one or more other
actions (the "dependent task"), the other actions (e.g., tasks)
upon which the particular task depends are to be completed before
the dependent task is started and before the dependent task is
available for scheduling. The schedule field 324 may be used to
indicate whether a task is available for scheduling in some
embodiments. For example, the schedule field 324 may have a value
of "yes" or "no" or equivalent. When the value of the schedule
field 324 is "yes", the task is available for scheduling, and when
the value of the schedule field 324 is "no", the task is not
available for scheduling. The task user interface 300 may be used
to provide a user interface for setting task dependencies in some
embodiments. When a task upon which a dependent task depends is not
completed the value of the schedule field 324 is "no" and the
schedule field 324 (shown as "Add to Calendar") may be unchecked
and unselectable by the user (possibly grayed out), or the schedule
field 324 may not be shown in the task user interface 300 for the
particular task. Task dependency information and whether a task is
available for scheduling may be stored in the task items of the
respective tasks (e.g., the dependent task and the one or more
tasks on which it depends) by the task application 288 and/or
calendar application 284. When all tasks on which a dependent task
depends are completed (as indicated by the value of the respective
status field(s) 318), the dependent task is released for
scheduling. Alternatively, whether a task is available for
scheduling may be recorded by other means.
[0081] In some embodiments, if the status 318 is set to "Deferred"
the user may be provided with an option to specify a date to begin
or resume scheduling the task. When the status 318 is set to
"Deferred", the task may not be not available for scheduling.
Before the deferred date, the schedule field 324 (shown as "Add to
Calendar") may be unchecked and unselectable by the user (possibly
grayed out), or the schedule field 324 may not be shown in the task
user interface 300 for the particular task. Setting a deferred date
which occurs on or after the due date 314 may cause the task
application 288 to automatically adjust the due date 314 to the
deferred date or a default amount of time after the deferred date,
depending on the embodiment.
[0082] Once the user is satisfied with the information included in
the task user interface 300, the user can select the "Save and
Close" button 342'' which causes the information in the fields of
the task user interface 300 to be saved as a task item in the task
database 292 in the memory 260 of the device 200 or in a storage
accessible to the device 200. Once the information has been saved,
the new task item will appear as an entry in the task application
288, for example in the task manager user interface, and can be
opened by appropriate input selecting the calendar event for
viewing, editing or deletion.
[0083] FIG. 4A shows an example flowchart of a method 400 of
automatic scheduling on an electronic device in accordance with one
example embodiment of the present disclosure. The method may be
carried out by software executed, for example, by a processor.
Coding of software for carrying out such a method 400 is within the
scope of a person of ordinary skill in the art provided the present
disclosure. The method 400 may contain additional or fewer
processes than shown and/or described, and may be performed in a
different order in other embodiments. Computer-readable code
executable by the processor 202 to perform the method 400 may be
stored in a computer-readable medium such as the memory 260 of the
device 200.
[0084] The method 400 begins with the event scheduler 290 receiving
one or more tasks items associated with a user at 402, such as the
user of the device 200. As described above, each task item includes
information about the task such as a duration 312 of the task and
possibly other information such as a due date 314 and priority 316,
as described above. Each task item is defined by a data object
which stores task information in a prescribed format or schema
which, for example, may be compatible with a task format or schema
of the PIM server 132, such as Microsoft Exchange.TM. and the PIM
client on the host computer 130, such as Microsoft Office.TM..
[0085] The tasks may be received from the task database 292 stored,
for example, in the memory 260 of the device 200. In such cases,
receiving the one or more tasks comprises obtaining the one or more
tasks from the task database 292 associated with the user. As noted
above, the task database 292 associated with the user and the
calendar database 294 associated with the user are typically
distinct databases which are separately maintained from each other.
Tasks and associated calendar events may be linked, as described in
greater detail below. The method 400 may be initiated in response
to input to schedule all or selected unscheduled tasks which are
available for scheduling, for example, using the task manager user
interface 360 and selecting (e.g., checking) the schedule field for
the respective tasks. In this way, a list of one or more tasks can
be provided to the event scheduler 290 for scheduling.
Alternatively, the input to select all or some unscheduled tasks
for scheduling may be provided by the selection of a menu option in
an invokable menu, toolbar, or the like. Alternatively, the one or
more tasks may be received as input from the user in 402. For
example, a task item may be received by the creation and storing of
a task item in response to corresponding user input in the task
user interface 300 shown in FIG. 3. In some embodiments, selecting
(e.g., checking) the value of the schedule field 324 in the task
user interface 300 may be used to specify that the task is to be
scheduled. In other embodiments, the method 400 may be
automatically initiated by the storing of the new task item. For
another example, one or more tasks may be dragged and dropped into
the calendar application 284, the dragged and dropped task would
then be scheduled by the event schedule 290. The one or more tasks
may be dragged and dropped on any user interface element
corresponding to the calendar application 284 or only designed user
interface elements corresponding to the calendar application 284,
depending on the embodiment.
[0086] A task may have one or more dependencies or conditions to be
met before the task can be scheduled. For example, a document or
other resources may be necessary to complete the task. The task
user interface 300 may allow the user to specify the dependency or
condition (e.g., in a freeform text field or from a predetermined
number of options from a dropdown list) and a due date (which may
include a time) for satisfying the dependency or condition, which
may be set by the user or a default value. A reminder notification
is then provided at or before the due date for satisfying the
dependency or condition, e.g. on the display 212. When the due date
arrives, a prompt as to whether the dependency or condition has
been met is provided, e.g. on the display 212. If the dependency or
condition has been met, the task can be scheduled and the
operations 400 proceed to 404 for scheduling. If the dependency or
condition has not been met, the task cannot be scheduled and the
reminder is moved forward a predetermined duration by the event
scheduler 290 or by an amount specified by the user.
[0087] At 404, the event scheduler 290 determines available
timeslots in the calendar database 294 associated with the user. In
at least some embodiments, some of the timeslots are schedulable
and some of the timeslots are not schedulable. In embodiments in
which one or more scheduling parameters are defined, determining
the available timeslots comprises determining available timeslots
in the calendar database 294 associated with the user that match
the one or more scheduling parameters. For example, the calendar
284 or event scheduler may have scheduling parameters which define
(i) days and/or times of day which are schedulable and (ii) days
and/or times of day which are not schedulable. The scheduling
parameters may define one or more of: a start of working (business)
hours and an end of working (business) hours between which
timeslots are schedulable, days of the week which are schedulable,
days of the year which are schedulable (e.g., to accommodate
various statutory holidays), or one or more breaks in each schedule
day which are not schedulable (e.g., to accommodate lunch breaches
or other breaks).
[0088] The scheduling parameters may be partially or completely
configurable by the user or system administrator of the enterprise
network 124, depending on the embodiment. Default values for the
scheduling parameters may be automatically set. The one or more of
the scheduling parameters could be fixed, for example, to enforce
working hour restrictions required by law, in some embodiments.
[0089] At 406, the event scheduler 290 automatically (i.e., without
user intervention) populates one or more of the available timeslots
in the calendar database 294 associated with the user with new
calendar events associated with the one or more tasks in accordance
with one or more scheduling rules. The automatic populating
comprises automatically generating one or more calendar events for
a particular task, and storing the automatically generated calendar
events in the calendar database 294 for the user. Each calendar
event is defined by a data object which stores calendar event
information in a prescribed format or schema which, for example,
may be compatible with a calendar event format or schema of the PIM
server 132, such as Microsoft Exchange.TM. and the PIM client on
the host computer 130, such as Microsoft Office.TM.. Once the
information has been saved, the new calendar event will appear as a
calendar entry for the respective timeslot which can be opened by
appropriate input selecting the calendar event for viewing, editing
or deletion. A flag indicating that the task item has been
scheduled is set in the task item. The flag may be the schedule
status field 330 described above in at least some embodiments.
[0090] It will be appreciated that each calendar event associated
with a task item is defined by a calendar object which includes
linking information to the associated task, and each task item
associated with one or more calendar events is defined by a task
object which includes linking information to the one or more
associated calendar events. The linking information allows the
event scheduler 290 to associate calendar events and tasks with
each other. In at least some embodiments, each task in the task
database 292 and each calendar event in the calendar database 294
have a unique identifier (ID). The task object of each task item
associated with one or more calendar events includes the unique IDs
of the one or more calendar events with which it is associated
(e.g., within a discrete field), and the calendar object of each
calendar event associated with a task item includes the unique ID
of the associated task (e.g., within a discrete field). While not
shown in the task user interface 300, it is contemplated that in
other embodiments the calendar events associated with a particular
task (e.g., identified by the calendar IDs in the corresponding
task object) and possibly information about the calendar events,
may be displayed in the task user interface 300 along with, or
instead of, the schedule status field 330. It is also contemplated
that the displayed calendar event information may include a link to
each associated calendar event, so that selecting a link causes the
associated calendar event to be opened.
[0091] The scheduling rules are rules which define how and when
available timeslots are populated, examples of which are described
more fully below. The calendar events are at least partially
populated with task information stored in the associated task item.
The calendar events are allocated for each of the one or more tasks
in series rather than in parallel. The calendar events are
typically scheduled in accordance with an order of the one or more
tasks. For example, the tasks may be scheduled in accordance with
an order of creation (e.g., chronological order), an order of
priority base on a value of the priority field 316 of the
respective task item as described more fully below, or a
combination thereof. This avoids collisions/conflicts caused by
attempting to schedule more than one calendar event at the same
timeslot and facilitates the application of scheduling rules, among
other things.
[0092] As described above, tasks may have a due date specified by a
due date field 314. The due date is specified in terms of date and
optionally time. In such embodiments, the one or more scheduling
rules may include a due date rule which specifies that new calendar
events associated with the one or more tasks are automatically
populated in the calendar database so that calendar events
associated with tasks having a due date are scheduled to be
completed before the due date of the respective tasks. For example,
calendar events associated with tasks having a due date may be
scheduled to be completed a threshold duration before the due date
of the respective tasks to give the user a buffer in case the task
takes more time to complete than initially thought, and additional
time to complete the task is required. For example, a threshold
duration of a number days could be applied, e.g. 2 days.
[0093] Also as described above, tasks may have a priority specified
by a priority field 316. The value of the priority is one of "Low",
"Normal" or "High" in some embodiments. In such embodiments, the
one or more scheduling rules may include a priority rule which
specifies that new calendar events associated with the one or more
tasks are automatically populated in the calendar database so that
calendar events associated with tasks having a priority are
scheduled in accordance with an order of priority based on the
priority associated with the one or more tasks, for example, a
decreasing order of priority (e.g., from High to Low). For example,
"High" priority tasks may be automatically populated first,
followed by "Normal" priority tasks, followed last by "Low"
priority tasks. This allows higher priority tasks to be scheduled
before lower priority tasks.
[0094] The due date rule and priority rule described above may be
used separately or together, depending on the embodiment.
[0095] FIG. 4B illustrates a method 420 for automatically
populating one or more of the available timeslots in the calendar
database 294 associated with the user when a task has an associated
due date. The method may be carried out by software executed, for
example, by a processor. Coding of software for carrying out such a
method 420 is within the scope of a person of ordinary skill in the
art provided the present disclosure. The method 420 may contain
additional or fewer processes than shown and/or described, and may
be performed in a different order in other embodiments.
Computer-readable code executable by the processor 202 to perform
the method 420 may be stored in a computer-readable medium such as
the memory 260 of the device 200.
[0096] At 422, when a task has an associated due date, the event
scheduler 290 determines a total time represented by the available
timeslots before the due date of the particular task. At 424, the
event scheduler 290 determines whether the total time represented
by the available timeslots before the due date is greater than or
equal to the associated duration of the particular task.
[0097] At 436, when the total time represented by the available
timeslots before the due date is greater than or equal to the
associated duration of the particular task, the event scheduler 290
automatically populates one or more of the available timeslots in
the calendar database 294 associated with the user with new
calendar events associated with the particular task in accordance
with the one or more scheduling rules.
[0098] At 426, when the total time represented by the available
timeslots before the due date is less than the associated duration
of the particular task (block 424), the event scheduler 290
determines an amount of additional time to be allocated to the
particular task.
[0099] At 428, the event scheduler 290 identifies any moveable
calendar events in the calendar database 294 associated with the
user before the due date which can be moved. Moveable calendar
events can be determined in many different ways. For example, the
event scheduler 290 can consider who create the calendar event, the
location of the calendar event, who else is invited (if anyone),
and the availability of any other people, among other
possibilities. For another example, when a calendar event is
associated with a task having an associated priority, the priority
of the associated task can be used to determine whether the
calendar event is moveable. In such embodiments, calendar events
associated with a task having a lower priority than the particular
task are identified as moveable.
[0100] For yet another example, when a calendar event is associated
with a task having a privacy setting, the privacy setting of the
associated task can be used to determine whether the calendar event
is moveable. As described above, the value of the privacy setting
field can be either "Private" or "Public". When a task has the
privacy setting of "Public", the associated calendar events can
only be moved by the user. When a task has the privacy setting of
"Private", the associated calendar events can be moved by either
the event scheduler 290 or the user. In such embodiments, tasks
having the privacy setting of "Public" are identified as not
moveable and tasks having the privacy setting of "Private" are
identified as moveable.
[0101] At 430, the event scheduler 290 determines a total time
represented by any moveable calendar events in the calendar
database 294 associated with the user before the due date.
[0102] At 432, the event scheduler 290 determines whether the total
time represented moveable calendar events in the calendar database
294 associated with the user before the due date is greater than or
equal to the associated duration of the particular task.
[0103] At 434, when the total time represented by any moveable
calendar events in the calendar database 294 associated with the
user before the due date is greater than or equal to the amount of
additional time to be allocated to the particular task, the event
scheduler 290 moves one or more of the moveable calendar events in
the calendar database 294 associated with the user to an available
timeslot occurring after the due date until the total time
represented by the available timeslots before the due date is
greater than or equal to the associated duration of the particular
task. The event schedule 290 moves the one or more of the moveable
calendar events in the calendar database 294 in accordance with the
one or more scheduling rules used when automatically populating
available time slots in some embodiments. In other embodiments, the
event schedule 290 may moves the one or more of the moveable
calendar events in the calendar database 294 in accordance with a
different set of scheduling rules.
[0104] Next, operations proceed to 436 described above, in which
the event scheduler 290 automatically populates one or more of the
available timeslots in the calendar database 294 associated with
the user with new calendar events associated with the particular
task in accordance with the one or more scheduling rules.
[0105] At 438, when the total time represented by any moveable
calendar events in the calendar database 294 associated with the
user before the due date is less than the amount of additional time
to be allocated to the particular task, the event scheduler 290
provides a notification. The notification may be a message
displayed on the display 212 of the device 200 which notifies the
user that there is insufficient time to reschedule the task. The
user can then take corrective action if desired or necessary. For
example, the due date for the task could be adjusted or the user
could manually move tasks which the event scheduler 290 is unable
to move automatically.
[0106] FIG. 5 shows an example flowchart of a method 500 of
processing a scheduled task in accordance with one example
embodiment of the present disclosure. The method may be carried out
by software executed, for example, by a processor. Coding of
software for carrying out such a method 500 is within the scope of
a person of ordinary skill in the art provided the present
disclosure. The method 500 may contain additional or fewer
processes than shown and/or described, and may be performed in a
different order in other embodiments. Computer-readable code
executable by the processor 202 to perform the method 500 may be
stored in a computer-readable medium such as the memory 260 of the
device 200.
[0107] At 508, the calendar 284 provides a reminder notification at
the start or, or before the start of, a calendar event associated
with a particular task. The reminder notification may be provided
at a predetermined time before the start of the calendar event
which may be set by a duration of the reminder field 322 of the
corresponding task item, which may be set using the task user
interface 300. The reminder notification may comprise a message
displayed on the display 212 of the device 200 which displays task
information concerning the particular task. The task information
may include information such as the subject 310, time required (or
duration) 312, due date 314, priority 316, status 318, and privacy
320. Additional information, such as a note 328, may also be
included in the displayed task information. The reminder
notification may not be provided in all embodiments or
circumstances, for example, if the task user interface 300 does not
include a reminder field 322 or if the reminder feature is
disabled.
[0108] The reminder notification may be provided in an event
reminder dialog box, an example of which is shown in FIG. 6. The
event reminder dialog box 600 comprises a plurality of buttons 610
which include an open button 612 (designated by "Open") for viewing
the details of the scheduled calendar event in an interface screen
similar to the task user interface 300 (FIG. 3A), a defer button
614 (designated by "Snooze") for deferring the reminder to a new
time and date, and a dismiss button 614 (designated by "Dismiss")
for dismissing the reminder.
[0109] When there is more than one calendar event for a particular
task (decision block 510), the reminders are provided at the start
or, or before the start of, the next scheduled calendar event. If
there are no more calendar events scheduled for the particular
task, this means that a total time represented by expired calendar
events is greater than or equal to the associated duration of the
particular task, and operations proceed to 512. In other words, the
user has had scheduled time to complete the task at least equal to
the time required specified by the user.
[0110] At 512, the event scheduler 290 automatically displays the
task user interface 300 on the display 212 of the device 200 after
completion of the last calendar event associated with the
particular task. In the described embodiment, the task user
interface 300 that is displayed is the same as that used to create
and edit a task. In other embodiments, a different task user
interface could be displayed. As described above, the task user
interface 300 includes a task status field 318 having a value
selectable from a number of predetermined task status field options
such as "Completed" or "Not Completed". In the shown embodiment,
the task status field options include "Not Started", "In Progress",
"Waiting on someone else", "Deferred" and "Completed". In some
embodiments, the task user interface 300 is automatically displayed
only after a last completed calendar event associated with the
particular task when more than one calendar event is associated
with the particular tasks. This avoids unnecessary user
interruptions since the user has not yet had scheduled time to
complete the task at least equal to the time required specified by
the user. Accordingly, it is unlikely that the task is completed.
Alternatively, the task user interface could be automatically
displayed after each completed calendar event associated with the
particular task in other embodiments. This may be useful, for
example, to allow the status to be updated even if the task has not
yet been completed.
[0111] At 514, input is received from the user via the input
devices 206. At 516, the event scheduler 290 determines whether the
input set the value of the task status field 318 as a first value
(such as "Completed") or another value. The other value may vary
between embodiments. For example, in some embodiments the other
value could be "Not Completed" as described above. Alternatively,
in other embodiments the other value could be "Not Started", "In
Progress", "Waiting on someone else" or "Deferred" as described
above.
[0112] At 518, in response to the first value (e.g., "Completed")
being set as the value of the task status field 318, the event
scheduler 290 updates the value of the task status field 318 of the
task item associated with the particular task. If the task is a
dependency for other tasks, the other tasks are released if there
are not other dependencies and are made available for scheduling.
In some embodiments, the priority ranking of the remaining tasks
may be updated accordingly.
[0113] At 520, in response to a value other than the first value
(e.g., "Not Completed" or one of "Not Started", "In Progress",
"Waiting on someone else" or "Deferred") being set as the value of
the task status field 318, the event scheduler 290 updates the task
status field 318 in the corresponding task item. It will be
appreciated that a status other than the first value, i.e. other
than "Completed", indicates that the task is uncompleted and that
additional time to complete the task should be allocated and/or a
new due date should be set. While more than one other value may be
provided, in the described embodiment the value of the task status
field 318 when it is other than the first value (i.e. other than
"Completed") is merely informational and does not affect the
operations 500. In other embodiments, it is contemplated that the
value of the task status field 318 when it is other than the first
value may affect the operations 500, the operations 500 may affect
the value of the task status field 318, or both. As noted above, in
some embodiments the status of "Not Started" may be automatically
assigned by the task application 288 before any scheduled calendar
event associated with a particular task have occurred (e.g., before
such events have been started or completed) and that status of "In
Progress" may be automatically assigned by the task application 288
after a scheduled calendar event associated with the particular
task has occurred but other scheduled calendar event associated
with the task remain. In some embodiments, if the status 318 is set
to "Waiting for someone else" the user may be provided with an
option to specify an action on which the task depends and an owner
of the action via a shared calendar such as that provided by
Microsoft Exchange.TM.. If the status 318 is set to "Deferred" the
user may be provided with an option to specify the date to resume
scheduling the task.
[0114] At 522, the event scheduler 290 automatically displays a
prompt on the display 212 of the device 200, for additional time
(e.g., a new duration) and/or a new due date for the particular
task.
[0115] At 524, a new duration and/or a new due date is received as
input from the user via the input devices 206.
[0116] At 526, in response to the new duration and/or a new due
date received as input the task item associated with the particular
task is updated. In response to receiving a new duration as input,
the event scheduler 290 automatically changes the value of the
duration field 312 of the task item associated with the particular
task to the new duration received as input. In response to
receiving a new due date as input, the event scheduler 290
automatically changes the value of the due date field 314 of the
task item associated with the particular task due date to the new
due date received as input.
[0117] At 528, the event scheduler 290 determines available
timeslots in the calendar database 294 associated with the
user.
[0118] At 530, the event scheduler 290 automatically populates one
or more of the available timeslots in the calendar database 294
associated with the user with one or more new calendar events
associated with the particular task in accordance with the new
duration and/or due new due date and the one or more scheduling
rules.
[0119] Variations of the operations 400, 420 and 500 are possible.
For example, while the operations 400, 420, 500 are described
separately, it is contemplated that the operations could cooperate
or be performed together in at least some embodiments. In addition,
while the operations 400, 420, 500 are described as being performed
by a mobile wireless communication device 200, the operations 400,
420, 500 could be performed by a computer, such as a computer 130,
or could be performed at least partially by a server, such as the
PIM server 132. In addition to the operations 400, 420 and 500, it
is contemplated that users could drag and drop a task into a
specific timeslot in a displayed calendar view of the calendar
application 284 to create an associated calendar event at that
specific timeslot. The drag and drop operation would create and
save a calendar event having calendar at the timeslot having a
calendar event information derived from the task information of the
corresponding task.
[0120] The steps and/or operations in the flowcharts and drawings
described herein are for purposes of example only. There may be
many variations to these steps and/or operations without departing
from the teachings of the present disclosure. For instance, the
steps may be performed in a differing order, or steps may be added,
deleted, or modified.
[0121] While the present disclosure is described, at least in part,
in terms of methods, a person of ordinary skill in the art will
understand that the present disclosure is also directed to the
various components for performing at least some of the aspects and
features of the described methods, be it by way of hardware
components, software or any combination of the two, or in any other
manner. Moreover, the present disclosure is also directed to a
pre-recorded storage device or other similar computer readable
medium including program instructions stored thereon for performing
the methods described herein.
[0122] The present disclosure may be embodied in other specific
forms without departing from the subject matter of the claims. The
described example embodiments are to be considered in all respects
as being only illustrative and not restrictive. The present
disclosure intends to cover and embrace all suitable changes in
technology. The scope of the present disclosure is, therefore,
described by the appended claims rather than by the foregoing
description. The scope of the claims should not be limited by the
embodiments set forth in the examples, but should be given the
broadest interpretation consistent with the description as a
whole.
* * * * *