A task management application enables users to track various tasks. A user may prefer to complete a task in any of a variety of different ways in view of one or more constraints. However, determining the optimal way to complete a task in view of such constraints is difficult, especially when considering multiple constraints.
It is with respect to these and other general considerations that embodiments have been described. Also, although relatively specific problems have been discussed, it should be understood that the embodiments should not be limited to solving the specific problems identified in the background.
Aspects of the present disclosure relate to task modification and optimization. In examples, a user provides an indication of a task goal. A set of candidate task templates are identified based on the task goal, wherein each of the candidate task templates comprise a set of subtasks to achieve the task goal. The user also specifies optimization criteria, such that the set of candidate task templates is ranked based on the optimization criteria. Accordingly, at least a part of the ranked set is presented to the user and the user selects a task template from which a task is generated in a task management application. In other examples, an optimal task template is determined automatically and used to generate a task for the user.
In some instances, a user selects a subtask of an existing task to optimize in view of optimization criteria. Accordingly, a set of candidate replacement subtasks is identified. The set of candidate replacement subtasks is ranked according to the optimization criteria, after which a user may select one or more replacement subtasks. As a result, one or more subtasks of the task are replaced according to the selected subtask(s). Thus, the user is able to alter a task in response to changed constraints while still maintaining the same end task goal.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Non-limiting and non-exhaustive examples are described with reference to the following Figures.
In the following detailed description, references are made to the accompanying drawings that form a part hereof, and in which are shown by way of illustrations specific embodiments or examples. These aspects may be combined, other aspects may be utilized, and structural changes may be made without departing from the present disclosure. Embodiments may be practiced as methods, systems or devices. Accordingly, embodiments may take the form of a hardware implementation, an entirely software implementation, or an implementation combining software and hardware aspects. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the present disclosure is defined by the appended claims and their equivalents.
A task management application provides functionality that enables a user to manage and track a task to completion. For example, a task may be comprised of a set of subtasks, have one or more associated resources, and/or have other users with which aspects of the task are associated. Thus, it is possible to view progress toward completion of the task, generate an estimated time of completion, and delegate aspects of the task to other users. However, in some examples, the same task goal may be completed by performing any of a variety of different sets of subtasks. For example, each set may comprise at least a partially different group of subtasks or subtasks in a different order, while still ultimately achieving the task goal. Depending on a user's circumstances, one set of subtasks may be favorable as compared to another set of subtasks. As an example, different sets may have different associated monetary costs and/or time requirements, among other costs. In other examples, a user may wish to substitute a subtask of an existing task with one or more other subtasks in order to better suit the circumstances of the user. However, identifying such alternatives and deciding between them is difficult, especially in instances where multiple constraints are to be considered.
Accordingly, aspects of the present disclosure relate to task modification and optimization. In examples, a user provides a task goal, which indicates a desired end result or goal to achieve (e.g., fixing a grill, preparing a meal, planning a trip, etc.). In some examples, a user provides information regarding an initial state, such as available inputs, a current location, available time to complete the task, a budget for the task, etc. Accordingly, a set of candidate task templates relating to the task goal are identified. For example, task templates may be accessed from a task template catalog comprising automatically generated task templates (e.g., from a data source such as a website, a how-to video, etc.) and/or user-submitted task templates (as may be shared or accessed from a task catalog, etc.). In examples, the candidate templates are ranked, such that the user may view at least a subset of the ranked candidate task templates to manually select a task template accordingly. In other examples, the set of candidate templates comprises a single task template or a task template is automatically determined from the set of candidate templates.
Thus, a set of subtasks to complete a task goal that is “optimal” depending on a user's circumstances is generated. As used herein, optimal refers to a task, subtask, or set of subtasks having one or more improved characteristics as compared to at least one other task, subtask, or sets of subtask. For example, an optimized or optimal task may exhibit a reduced estimated time required for completion, a reduced monetary cost, or an increased estimated likelihood of success, among other examples. As a result of the aspects disclosed herein, the utility of the task management application is increased because the user is more likely to use the task management application to manage the task as a result of being able to automatically optimize tasks. Additionally, processing the task catalog to identify crowd-sourced and automatically generated task templates improves both the expediency and accuracy of identifying alternative tasks/subtasks. By contrast, the user would otherwise have to manually identify potential alternatives and/or improved subtasks based mainly on intuition and past experience.
A task may be comprised of one or more subtasks. In some examples, one subtask is dependent on one or more other subtasks, such that the other subtasks are prerequisites for completing the subtask. In other examples, subtasks are hierarchical, wherein a subtask is further comprised of a set of other constituent subtasks. A task may be associated with a resource, wherein the resource is relevant to completing the task. Example resources include, but are not limited to, a document, a link to a website, contact information, a set of tools, or audio or video content, among other examples. In another example, a task is associated with one or more users, which may be responsible for overseeing or performing aspects of the task. In examples, a task may have one or more associated “costs.” Example costs include, but are not limited to, an estimated or actual amount of time to complete the task, an estimated or actual monetary cost associated with the task, and/or one or more inputs to perform the task (e.g., ingredients, supplies, etc.). It will be appreciated that while examples are described herein with respect to a task, such examples are similarly applicable to subtasks.
As discussed above, a user may provide a task goal that indicates an outcome that the user intends to achieve as a result of performing a task. Thus, the task goal will be achieved as a result of the user performing the task, even though the associated subtasks to achieve the task goal will vary depending on the optimization techniques described herein. An initial state may also be determined. In examples, the initial state comprises information received from a user (e.g., in response to one or more prompts, previous user input, one or more user preference indications, etc.) and/or determined from one or more computing devices (e.g., a user's computing device, a remote computing device, etc.). For example, the initial state comprises information regarding available inputs, time constraints, budget constraints, and other information. Thus, the initial state represents the circumstances from which the user is starting and the task goal is the desired end state as a result of completing the task. In other examples, the initial state represents the current (or expected) circumstances of the user (e.g., as may be the case after some subtasks associated with a task have been performed). As such, it will be appreciated that while examples are described herein with respect to an “initial” state existing prior to performing a task, an initial state as used herein represents a state prior to achieving the task goal.
A user may specify one or more optimization criteria. Example criteria include, but are not limited to, a time constraint, a budget constraint, a dependency on the availability of another user, and/or a dependence on another task. In examples, a threshold is used while, in other examples, a user may indicate a criterion that more generally specifies an improvement (e.g., a “faster” or “cheaper” way to achieve the task goal). It will be appreciated that other criteria may be used, such as a criterion that reduces or minimizes the amount of effort required or increases or maximizes the likelihood of success.
A task template is used to generate a task. As described above, a task template may be accessed from a task template catalog and may be an automatically generated task template or may be a user-submitted task template, among other examples. Optimization criteria are used to rank a set of candidate task templates and/or determine an optimal task template based on the initial state and costs associated with each task template. In examples, one or more subtasks of a task template may be unordered, such that the order of the subtasks is automatically determined (e.g., based on an evaluation of one or more costs, the initial state, and/or optimization criteria, among other examples). Once a candidate task template is selected (e.g., by a user, automatically, etc.), the task template is used to generate a task in a task management application.
Client device 104 is illustrated as comprising task management application 114, task optimization engine 116, and task data store 118. In examples, task management application 114 manages one or more task lists for a user of client device 104. As used herein, a task list comprises a set of tasks. In examples, the tasks are related and/or interdependent. According to aspects described herein, task management application 114 is used to determine optimized task for achieving a task goal according to one or more optimization criteria. In some instances, task management application 114 is used to replace a subtask with one or more other subtasks based on a user's optimization criteria. It will be appreciated that, in other instances, multiple subtasks may be replaced by a single subtask. In examples, a different application, such as a web browser or email application, is used to perform aspects described herein.
As illustrated, client device 104 further comprises task optimization engine 116. In examples, task optimization engine 116 receives an indication of a task goal (e.g., as may be received from a user by task management application 114) for which a task is to be determined. In examples, task optimization engine 116 determines an initial state. The initial state may be associated with the task goal. As described above, the initial state comprises information received from or associated with a user (e.g., available inputs, a time constraint, budget constraint, etc.). In some instances, such information is determined automatically (e.g., based on an analysis of a user's calendar, historical behavioral information, etc.). In another example, the initial state comprises information from one or more computing devices. For example, the initial state comprises a location of client device 104, a battery status, available software installed on client device 104, and/or hardware capabilities of client device 104, among other examples. As another example, information from another computing device is used, such as client device 106 and/or server device 102. While example initial state information is described herein, it will be appreciated that any of a variety of other initial state information may be used.
In some examples, task optimization engine 116 determines a set of candidate task templates associated with the task goal. The determination may comprise an analysis of the initial state to identify task templates associated with a similar initial state. For example, if the initial state indicates a set of ingredients for a recipe, candidate templates identified by task optimization engine 116 may utilize a similar set of inputs. Task optimization engine 116 accesses one or more optimization criteria (e.g., received as user input at task management application 114), automatically determines the optimization criteria, or a combination thereof. For example, optimization criteria may be automatically determined based on an analysis of historical usage data associated with a given task template, task templates of a similar category, or task templates of a similar type, among other examples. As another example, a set of candidate optimization criteria is determined and presented to a user, thereby enabling the user to select one or more criteria from the set of candidates.
Accordingly, the candidate task templates are ranked based on the optimization criteria. For example, one or more costs associated with a candidate template are evaluated in view of optimization criteria to determine whether the optimization criteria are satisfied and, if so, to what degree. For example, candidate task templates are ranked based evaluating an associated cost in view of the optimization criteria (e.g., a monetary cost, an expected amount of time, etc.) or, in some instances, based on the extent to which the cost is above or below a threshold specified by the criteria. Depending on the criterion, the evaluation may depend on whether an associated cost is below a threshold (e.g., as may be the case with a budget or time constraint) or above a threshold (e.g., as may be the case with a number of people, a number of days spent traveling, etc.). In instances where multiple criteria are used, a set of weights may be used to evaluate each criterion and its associated cost.
As an example, a user indicates a set of optimization criteria comprising a monetary budget criterion and a time constraint criterion. The user may also indicate a higher importance for the time constraint criterion. Accordingly, a ranking metric is generated for each task template based on a lower weighting of the monetary cost and a higher weighting of the estimated time for each template. In other examples, the set of weights is determined to account for differences between different types of optimization criterion. For example, a monetary cost associated with a task may have higher variability as compared to estimated time of completion. Accordingly, the set of weights is generated based on the variability associated with each criterion, thereby enabling a better comparison between and ranking of candidate task templates.
In examples, the ranked list of candidate task templates is provided to task management application 114 for display to a user. In other examples, a task is automatically determined from the set of candidate task templates (e.g., based on selecting the highest ranked task, based on a user preference indication of a certain type of optimization and/or an associated threshold, such as favoring cost over time, etc.).
Task optimization engine 116 may also optimize one or more subtasks of an existing task in task management application 114. For example, an indication is received comprising a subtask and optimization criteria. Accordingly, task optimization engine 116 determines candidate subtasks to replace the received subtask. In examples, a set of subtasks is identified as a candidate to replace a single subtask or, in other examples, a single subtask is identified as a candidate to replace a set of subtasks. The candidate subtasks are ranked according to the optimization criteria. The ranked candidate subtasks may be provided to task management application 114 for display to a user. In other examples, a replacement subtask is automatically determined (e.g., based on selecting the highest ranked subtask, based on a user preference indication of a certain type of optimization and/or an associated threshold, such as favoring cost over time, etc.).
Task optimization engine 116 may access a remote task template catalog (e.g., as may be provided by server device 102) to perform the optimization techniques described herein. In another example, task optimization engine 116 evaluates subtasks of a task stored by task data store 118 in order to generate an optimized ordering of the subtasks. In some instances, historical information is stored by task data store 118 that relates to previous tasks and associated subtasks performed by a user. Thus, task optimization engine 116 may evaluate such stored historical information when identifying candidate tasks and/or replacement subtasks.
Client device 104 further comprises task data store 118. Task data store 118 stores task lists and associated tasks, as may be used by task management application 114 and task optimization engine 116. In examples, task data store 118 is stored locally to client device 104. In another example, at least a part of task data store 118 is stored remotely (e.g., by task data store 112 of server device 102), thereby enabling tasks to be synchronized among multiple devices.
Client device 106 comprises task management application 120, task optimization engine 122, and task data store 124, each of which are similar to task management application 114, task optimization engine 116, and task data store 118 of client device 104, respectively. In examples, client device 106 is a different type of computing device than client device 104. Additionally, it will be appreciated that client devices 104 and 106 may each be used by the same user or may be used by different users.
Server device 102 is illustrated as comprising request processing engine 108, task optimization engine 110, and task data store 112. In examples, request processing engine 108 processes task catalog requests and optimization requests, according to aspects described herein. Thus, in some examples, certain aspects of task optimization may be performed local to a client device (e.g., using task optimization engine 116 or 122), while other aspects are performed by task optimization engine 110 of server device 102. In other examples, a client device omits a local task optimization engine and uses task optimization engine 110 instead.
Server device 102 further comprises task optimization engine 110, which performs task and subtask optimization according to aspects described herein. Task optimization engine 110 performs similar functionality as discussed above with respect to task optimization engine 116. Therefore, certain aspects are not reiterated with respect to task optimization engine 110. In examples, task optimization engine 110 accesses data stored by task data store 112. For example, task data store 112 stores user-created task templates (e.g., as may be received from task management applications 114 and 120) and/or automatically generated task templates (e.g., as may be generated by a task template generator). For example, task optimization engine 110 analyzes task templates stored by task data store 112 to identify candidate task templates associated with a task goal. As another example, task optimization engine 110 identifies candidate replacement subtasks based on subtasks stored by task data store 112. In some examples, task data store 112 stores user account data comprising tasks and/or task lists (e.g., either as an alternative to or in combination with task data stores 118 and/or 124), thereby enabling cross-device synchronization and task backup capabilities.
At operation 204, a set of candidate task templates for achieving the task goal are identified. In examples, generating the set of candidate task templates comprises evaluating one or more tags associated with a task template to determine whether it is related to the task goal. In other examples, a set of keywords, a title or description, and/or information associated with one or more subtasks are evaluated to determine task templates that are associated with the task goal. In examples, a pre-generated set of tasks is accessed based on the task goal. The task templates may be accessed from a task template data store, such as task data store 112 of server device 102 in
Flow progresses to operation 206, where an optimal task template is determined based on the optimization criteria received at operation 202. In some examples, determining an optimal task template comprises ranking the candidate task templates based on the optimization criteria. For example, one or more costs for each candidate template is evaluated in view of the optimization criteria to determine whether the optimization criteria are satisfied and, if so, to what degree. While method 200 is described with respect to receiving optimization criteria as part of the optimization request, it will be appreciated that, in other examples, at least a part of the optimization criteria may be automatically determined. In some examples, the highest-ranked task template is automatically determined to be the optimal task template. In other examples, a set of candidate task templates is determined as the optimal task template (e.g., based on a threshold, such as the top three, top five, candidate templates having a cost below the threshold, etc.), thereby enabling a user to manually select a task template from the set of templates.
At operation 208, the determined task template is provided in response to the optimization request received at operation 202. In examples, a set of ranked candidate task templates is provided as a list that is parsed by a client application, such as task management applications 114 or 120 in
At operation 254, a set of candidate subtasks relating to the received subtask are identified. In examples, generating the set of candidate subtasks comprises evaluating one or more tags associated with a task template to determine whether it is related to the subtask, and further identifying one or more relevant subtasks of the task template. In other examples, a set of keywords, a title or description, and/or information associated with the task templates is evaluated to identify subtasks that are relevant to the received subtask. In examples were a task goal, the task itself, or an associated task template is received, such information may be used as well. The task templates may be accessed from a task template data store, such as task data store 112 of server device 102 in
Moving to operation 256, an optimal subtask is determined based on the received optimization criteria. In some examples, determining an optimal subtask comprises ranking the candidate subtasks based on the optimization criteria. For example, one or more costs for each candidate subtask is evaluated in view of the optimization criteria to determine whether the optimization criteria is satisfied and, if so, to what degree. While method 250 is described with respect to receiving optimization criteria as part of the optimization request, it will be appreciated that, in other examples, at least a part of the optimization criteria may be automatically determined. In some examples, the highest-ranked subtask is automatically determined to be the optimal task template. In other examples, a set of candidate subtasks is determined as the optimal subtask (e.g., based on a threshold, such as the top three, top five, subtasks having a cost below the threshold, etc.), thereby enabling a user to manually select a subtask from the set of subtasks.
Flow progresses to operation 258, where the determined subtask is provided in response to the optimization request received at operation 252. In examples, a set of ranked subtasks is provided as a list that is parsed by a client application, such as task management applications 114 or 120 in
Flow progresses to operation 304, where a selection of optimization criteria is received. In examples, a user may input one or more thresholds associated with the criteria, select from a list of potential criteria (e.g., fastest, cheapest, etc.). In some examples, the user selects a single optimization criterion. While example criteria are described herein, it will be appreciated that any of a variety of criteria may be used. In some examples, a set of candidate optimization criteria is generated, from which the user selects the criteria received at operation 304. In other examples, aspects of operation 304 are omitted and optimization criteria is instead determined automatically according to aspects described herein. For example, a task is automatically optimized (e.g., as may be the case in instances where a user is unaware that the task can be optimized).
At operation 306, an optimization request is generated. In examples, the optimization request comprises the task goal and optimization criteria. It will be appreciated that, in other examples, the optimization request comprises an indication as to an initial state. For example, the initial state comprises information received from a user and/or determined from one or more computing devices.
Flow progresses to operation 308, where a response is received comprising an optimal task template. As discussed above, in some examples, a ranked list of multiple task templates is received. For example, the list may be in an Extensible Markup Language (XML) or JavaScript Object Notation (JSON) format that is parsed by an application (e.g., task management application 114 or 118 of client device 104 or 106 in
Flow progresses to operation 310, where a display of the received task template is generated. For example, a task management application (e.g., task management application 114 or 118 of client device 104 or 106 in
At operation 312, the task template is customized to generate a task. Operation 312 is illustrated using a dashed box to indicate that, in some examples, operation 312 may be omitted. For example, if the task template does not offer any customizations, operation 312 may be omitted. In other examples, aspects of the task template are customized based on user input, device information, or any of a variety of other information that may be evaluated at operation 312. In some examples, aspects of the selected task template are left un-customized, such that they may be customized at a later time. For example, this may occur if the user is unsure of requested information or if information requested for the customization process is unavailable.
Flow progresses to operation 314, where the generated task is stored in a task data store. For example, the generated task may be stored in a task data store such as task data store 112, 118, or 124 of server device 102, client device 104, or client device 106 in
At operation 354, a selection of optimization criteria is received. In examples, a user may input one or more thresholds associated with the criteria, select from a list of potential criteria (e.g., fastest, cheapest, etc.). In some examples, the user selects a single optimization criterion. While example criteria are described herein, it will be appreciated that any of a variety of criteria may be used. In some examples, a set of candidate optimization criteria is generated, from which the user selects the criteria received at operation 354. In other examples, aspects of operation 354 are omitted and optimization criteria is instead determined automatically according to aspects described herein. For example, a task is automatically optimized.
Moving to operation 356, an optimization request is generated. In examples, the optimization request comprises the selected subtask and selected optimization criteria. It will be appreciated that, in other examples, the optimization request comprises an indication as to the task with which the subtask is associated. For example, a reference to the task may be included or an indication of a task template associated with the task may be included, among other examples.
Flow progresses to operation 358, where a response is received comprising a replacement subtask. As discussed above, in some examples, a set of multiple subtasks is received. For example, the set may be in an XML or JSON format that is parsed by an application (e.g., task management application 114 or 118 of client device 104 or 106 in
At operation 360, an updated task is generated comprising the replacement subtask. In examples, generating the updated task comprises replacing the selected subtask with the replacement subtask. In other examples, one or more subtasks of the task are rearranged in order to incorporate the replacement subtask. For example, the order of the subtasks may be determined by a task optimization engine. As discussed above, a set of multiple subtasks may be received to replace the selected subtask or, in other examples, one replacement subtask may replace a set of selected subtasks. Though method 350 is not illustrated as comprising the customization operation 312 discussed above with respect to method 300 in
Flow progresses to operation 314, where the generated task is stored in a task data store. For example, the generated task may be stored in a task data store such as task data store 112, 118, or 124 of server device 102, client device 104, or client device 106 in
Moving to operation 362, the updated task is stored in a task data store. For example, the generated task may be stored in a task data store such as task data store 112, 118, or 124 of server device 102, client device 104, or client device 106 in
While aspects of
In examples, a user inputs a task goal into search box 402. Upon actuating the “GO” button illustrated as part of search box 402, an optimization request is generated. In examples, the optimization request is transmitted to a server device, such as server device 102, which is used to generate a set of candidate task templates. For example, aspects of method 200 discussed above with respect to
As illustrated, results 406A-C are task templates that were identified to be relevant to the task goal in search box 402 and optimized accordingly. Results 406A-406C are illustrated as having a title (e.g., “BUILD TWO-SWING SWING SET FROM SCRATCH”), a timeline 410, and associated costs (e.g., “ESTIMATED COST: $600” and “ESTIMATED TIME:18 HOURS”). Further, the timeline for each respective result is scaled according to the attribute associated with the optimization criteria (e.g., cost). As illustrated, timeline 410 is shortest because it has the lowest cost of the displayed task templates. It will be appreciated that the task template listing illustrated by user interface 400 is provided as an example and that, in other examples, additional, alternative, or different information may be displayed.
User interface 400 is further illustrated as comprising time badge 408 to highlight a task template as having one or more subtasks that have a high time cost associated with them. In examples, a user may specify a filter to remove such task templates from the displayed results (e.g., altogether, based on a specified threshold, etc.). Similarly, a user preference may indicate a threshold above which such badges should be displayed. Further, the timelines associated with results 406A-406C comprise money badges, such as money badge 412. Such badges highlight certain subtasks having a high monetary cost (as compared to other subtasks of the task template, as compared to other displayed task templates, etc.). In examples, a user hovers, taps, or otherwise interacts with money badge 412 to determine which subtask is associated with the illustrated badge. Similar user experience aspects are applicable to element 414 as well. It will be appreciated that while example badges 408 and 412 are discussed herein, any of a variety of other badges may be used to indicate task templates with one or more notable subtasks.
Turning now to
Optimization panel 444 is displayed once arrow 442 is actuated, which displays an optimization selector 446, which provides similar functionality to optimization criteria selectors 404 and 424 in
The system memory 504 may include an operating system 505 and one or more program modules 506 suitable for running software application 520, such as one or more components supported by the systems described herein. As examples, system memory 504 may store task management application 524 and task optimization engine 526. The operating system 505, for example, may be suitable for controlling the operation of the computing device 500.
Furthermore, embodiments of the disclosure may be practiced in conjunction with a graphics library, other operating systems, or any other application program and is not limited to any particular application or system. This basic configuration is illustrated in
As stated above, a number of program modules and data files may be stored in the system memory 504. While executing on the processing unit 502, the program modules 506 (e.g., application 520) may perform processes including, but not limited to, the aspects, as described herein. Other program modules that may be used in accordance with aspects of the present disclosure may include electronic mail and contacts applications, word processing applications, spreadsheet applications, database applications, slide presentation applications, drawing or computer-aided application programs, etc.
Furthermore, embodiments of the disclosure may be practiced in an electrical circuit comprising discrete electronic elements, packaged or integrated electronic chips containing logic gates, a circuit utilizing a microprocessor, or on a single chip containing electronic elements or microprocessors. For example, embodiments of the disclosure may be practiced via a system-on-a-chip (SOC) where each or many of the components illustrated in
The computing device 500 may also have one or more input device(s) 512 such as a keyboard, a mouse, a pen, a sound or voice input device, a touch or swipe input device, etc. The output device(s) 514 such as a display, speakers, a printer, etc. may also be included. The aforementioned devices are examples and others may be used. The computing device 500 may include one or more communication connections 516 allowing communications with other computing devices 550. Examples of suitable communication connections 516 include, but are not limited to, radio frequency (RF) transmitter, receiver, and/or transceiver circuitry; universal serial bus (USB), parallel, and/or serial ports.
The term computer readable media as used herein may include computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, or program modules. The system memory 504, the removable storage device 509, and the non-removable storage device 510 are all computer storage media examples (e.g., memory storage). Computer storage media may include RAM, ROM, electrically erasable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other article of manufacture which can be used to store information and which can be accessed by the computing device 500. Any such computer storage media may be part of the computing device 500. Computer storage media does not include a carrier wave or other propagated or modulated data signal.
Communication media may be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” may describe a signal that has one or more characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared, and other wireless media.
If included, an optional side input element 615 allows further user input. The side input element 615 may be a rotary switch, a button, or any other type of manual input element. In alternative aspects, mobile computing device 600 may incorporate more or less input elements. For example, the display 605 may not be a touch screen in some embodiments.
In yet another alternative embodiment, the mobile computing device 600 is a portable phone system, such as a cellular phone. The mobile computing device 600 may also include an optional keypad 635. Optional keypad 635 may be a physical keypad or a “soft” keypad generated on the touch screen display.
In various embodiments, the output elements include the display 605 for showing a graphical user interface (GUI), a visual indicator 620 (e.g., a light emitting diode), and/or an audio transducer 625 (e.g., a speaker). In some aspects, the mobile computing device 600 incorporates a vibration transducer for providing the user with tactile feedback. In yet another aspect, the mobile computing device 600 incorporates input and/or output ports, such as an audio input (e.g., a microphone jack), an audio output (e.g., a headphone jack), and a video output (e.g., a HDMI port) for sending signals to or receiving signals from an external device.
One or more application programs 666 may be loaded into the memory 662 and run on or in association with the operating system 664. Examples of the application programs include phone dialer programs, e-mail programs, personal information management (PIM) programs, word processing programs, spreadsheet programs, Internet browser programs, messaging programs, and so forth. The system 602 also includes a non-volatile storage area 668 within the memory 662. The non-volatile storage area 668 may be used to store persistent information that should not be lost if the system 602 is powered down. The application programs 666 may use and store information in the non-volatile storage area 668, such as e-mail or other messages used by an e-mail application, and the like. A synchronization application (not shown) also resides on the system 602 and is programmed to interact with a corresponding synchronization application resident on a host computer to keep the information stored in the non-volatile storage area 668 synchronized with corresponding information stored at the host computer. As should be appreciated, other applications may be loaded into the memory 662 and run on the mobile computing device 600 described herein (e.g., search engine, extractor module, relevancy ranking module, answer scoring module, etc.).
The system 602 has a power supply 670, which may be implemented as one or more batteries. The power supply 670 might further include an external power source, such as an AC adapter or a powered docking cradle that supplements or recharges the batteries.
The system 602 may also include a radio interface layer 672 that performs the function of transmitting and receiving radio frequency communications. The radio interface layer 672 facilitates wireless connectivity between the system 602 and the “outside world,” via a communications carrier or service provider. Transmissions to and from the radio interface layer 672 are conducted under control of the operating system 664. In other words, communications received by the radio interface layer 672 may be disseminated to the application programs 666 via the operating system 664, and vice versa.
The visual indicator 620 may be used to provide visual notifications, and/or an audio interface 674 may be used for producing audible notifications via the audio transducer 625. In the illustrated embodiment, the visual indicator 620 is a light emitting diode (LED) and the audio transducer 625 is a speaker. These devices may be directly coupled to the power supply 670 so that when activated, they remain on for a duration dictated by the notification mechanism even though the processor 660 and other components might shut down for conserving battery power. The LED may be programmed to remain on indefinitely until the user takes action to indicate the powered-on status of the device. The audio interface 674 is used to provide audible signals to and receive audible signals from the user. For example, in addition to being coupled to the audio transducer 625, the audio interface 674 may also be coupled to a microphone to receive audible input, such as to facilitate a telephone conversation. In accordance with embodiments of the present disclosure, the microphone may also serve as an audio sensor to facilitate control of notifications, as will be described below. The system 602 may further include a video interface 676 that enables an operation of an on-board camera 630 to record still images, video stream, and the like.
A mobile computing device 600 implementing the system 602 may have additional features or functionality. For example, the mobile computing device 600 may also include additional data storage devices (removable and/or non-removable) such as, magnetic disks, optical disks, or tape. Such additional storage is illustrated in
Data/information generated or captured by the mobile computing device 600 and stored via the system 602 may be stored locally on the mobile computing device 600, as described above, or the data may be stored on any number of storage media that may be accessed by the device via the radio interface layer 672 or via a wired connection between the mobile computing device 600 and a separate computing device associated with the mobile computing device 600, for example, a server computer in a distributed computing network, such as the Internet. As should be appreciated such data/information may be accessed via the mobile computing device 600 via the radio interface layer 672 or via a distributed computing network. Similarly, such data/information may be readily transferred between computing devices for storage and use according to well-known data/information transfer and storage means, including electronic mail and collaborative data/information sharing systems.
A task management application 720 may be employed by a client that communicates with server device 702, and/or the task optimization engine 721 may be employed by server device 702. The server device 702 may provide data to and from a client computing device such as a personal computer 704, a tablet computing device 706 and/or a mobile computing device 708 (e.g., a smart phone) through a network 715. By way of example, the computer system described above may be embodied in a personal computer 704, a tablet computing device 706 and/or a mobile computing device 708 (e.g., a smart phone). Any of these embodiments of the computing devices may obtain content from the store 716, in addition to receiving graphical data useable to be either pre-processed at a graphic-originating system, or post-processed at a receiving computing system.
As will be understood from the foregoing disclosure, one aspect of the technology relates to a system comprising: at least one processor; and memory storing instructions that, when executed by the at least one processor, causes the system to perform a set of operations. The set of operations comprises: generating an optimization request comprising a task goal and at least one optimization criteria; receiving, in response to the optimization request, a set of candidate task templates associated with the task goal, the set of candidate task templates comprising at least a first task template; and generating a user interface comprising a first timeline associated with a first set of subtasks for the first task template. In an example, the set of candidate task templates further comprises a second task template; the user interface further comprises a second timeline associated with a second set of subtasks for the second task template; and the set of operations further comprises: receiving, at the user interface, a selection of either the first task template or the second task template; in response to the selection, generating a task based on the selected task template; and storing the generated task in a task data store. In another example, the first timeline comprises a badge that is at least one of a cost badge or a time badge. In a further example, the user interface further comprises an optimization criteria selector indicating the at least one optimization criteria. In yet another example, the optimization request further comprises an initial state relating to the task goal. In a further still example, information relating to a subtask of the first set of subtasks is displayed when an interaction is received by the first timeline. In an example, a first scale of the first timeline and a second scale of the second timeline are determined based on the at least one optimization criteria.
In another aspect, the technology relates to a method for optimizing a subtask of a task. The method comprises: receiving, at a user interface comprising a display of the task, a selection of the subtask; generating, in response to the selection, an optimization request comprising an indication of the subtask and an optimization criteria; receiving a response comprising a replacement subtask; generating a display of the replacement subtask; and based on receiving a user indication to replace the selected subtask with the replacement subtask, generating an updated task comprising the replacement subtask and omitting the selected subtask. In an example, the display of the replacement subtask further comprises an optimization selector indicating the optimization criteria. In another example, the method further comprises: updating the user interface to display the updated task comprising the replacement subtask; and storing the updated task in a task data store. In a further example, the optimization request further comprises information relating to the task. In yet another example, generating the updated task further comprises optimizing a set of subtasks comprising the replacement subtask. In a further still example, the response further comprises a second replacement subtask, and generating the display further comprises displaying the second replacement subtask.
In a further aspect, the technology relates to a method for optimizing a task. The method comprises: generating an optimization request comprising a task goal and at least one optimization criteria; receiving, in response to the optimization request, a set of candidate task templates associated with the task goal, the set of candidate task templates comprising at least a first task template; and generating a user interface comprising a first timeline associated with a first set of subtasks for the first task template. In an example, the set of candidate task templates further comprises a second task template, the user interface further comprises a second timeline associated with a second set of subtasks for the second task template, and the method further comprises: receiving, at the user interface, a selection of either the first task template or the second task template; in response to the selection, generating a task based on the selected task template; and storing the generated task in a task data store. In another example, the first timeline comprises a badge that is at least one of a cost badge or a time badge. In a further example, the user interface further comprises an optimization criteria selector indicating the at least one optimization criteria. In yet another example, the optimization request further comprises an initial state relating to the task goal. In a further still example, information relating to a subtask of the first set of subtasks is displayed when an interaction is received by the first timeline. In an example, a first scale of the first timeline and a second scale of the second timeline are determined based on the at least one optimization criteria.
Aspects of the present disclosure, for example, are described above with reference to block diagrams and/or operational illustrations of methods, systems, and computer program products according to aspects of the disclosure. The functions/acts noted in the blocks may occur out of the order as shown in any flowchart. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved.
The description and illustration of one or more aspects provided in this application are not intended to limit or restrict the scope of the disclosure as claimed in any way. The aspects, examples, and details provided in this application are considered sufficient to convey possession and enable others to make and use the best mode of claimed disclosure. The claimed disclosure should not be construed as being limited to any aspect, example, or detail provided in this application. Regardless of whether shown and described in combination or separately, the various features (both structural and methodological) are intended to be selectively included or omitted to produce an embodiment with a particular set of features. Having been provided with the description and illustration of the present application, one skilled in the art may envision variations, modifications, and alternate aspects falling within the spirit of the broader aspects of the general inventive concept embodied in this application that do not depart from the broader scope of the claimed disclosure.