|
| 1 | +--- |
| 2 | +layout: toc-type |
| 3 | +title: Component |
| 4 | +parent: "/Tasks" |
| 5 | +mainParent: "Tasks" |
| 6 | +parents: "Tasks:/Tasks" |
| 7 | +order: 200 |
| 8 | +--- |
| 9 | + |
| 10 | +# Tasks - Component |
| 11 | +A task is represented in iCalendar by the VTODO component and in jsCalendar by an object of type Task. |
| 12 | + |
| 13 | +The task object differs only slightly from an event. This section will describe those differences. The similarity of the components makes it easy to generate an event from a task, for instance when a task is assigned to someone to be carried out at a specific time. |
| 14 | + |
| 15 | +## Tasks do not occupy busy time |
| 16 | +Hard as it is to discern that from the specs - that is the case. Calculations of busy time only include events. This does make sense. A task is something to be done - not the period of time in which it is being done. However, implementations for freebusy need to exclude tasks in their data when calculating freebusy. |
| 17 | + |
| 18 | +This is also the reason why tasks MUST be turned into events when accepted by somebody. |
| 19 | + |
| 20 | +## Start and end times mean something different. |
| 21 | +For an event the start and end mean that is the time taken by the event (bar some fuzziness with all day events). |
| 22 | + |
| 23 | +For tasks the picture has been even more fuzzy. It's fairly clear what the intent was in that tasks in RFC5545 have a start and a due date. What was missing was how long the task was supposed to take. |
| 24 | + |
| 25 | +For example, we might have a task "paint the room". That task is expected to take 2 hours. |
| 26 | +However, there's a whole week to complete the task. The start may be Monday 5th and due date is Friday 9th. The extensions add an **estimated duration** to allow us to specify how long we expect the task to actually take. This makes the due date into a deadline. |
| 27 | + |
| 28 | +Also, tasks do not require the specification of a start date. This means they MUST always appear in time range searches. They are task which need to be done but have no specific time - that is, they are reminders. |
| 29 | + |
| 30 | +Note that RFC5545 removed the ability to specify ONLY a duration. This will be restored by the task extensions specification. |
| 31 | + |
| 32 | +## Further extensions. |
| 33 | +### Reporting. |
| 34 | +The new tasks extensions provide better reporting of status. It is important to be able to specify not only the status of the task as a whole but also the status for individual actors - the **attendees**. |
| 35 | + |
| 36 | +### Task mode |
| 37 | +This allows specification of which actor alters the state of the task - usually to completed or failed. This may be a client or the server. |
| 38 | + |
| 39 | +## Possible uses for task components. |
| 40 | +The intent of the task extensions was to allow the component to be more widely used. broadly speaking there were two main areas of interest: |
| 41 | + |
| 42 | + * Project management. |
| 43 | + * Business processes. |
| 44 | + |
| 45 | +The current extensions are intended t cover all of these requirements. |
| 46 | + |
| 47 | +### Project management |
| 48 | +A project consists of a number of sub-tasks which may have a number of temporal relationships constraining them, for example task-A must follow task-B. Additionally, a (sub)task may have its own deadlines and estimated time for completion. Other attributes may include cost to complete. |
| 49 | + |
| 50 | +There is also a requirement to be able to report progress and indicate what is blocking progress. |
| 51 | + |
| 52 | +The task component also provides a standard way to represent the project - allowing export from one application and import into another. |
| 53 | + |
| 54 | +### Business processes. |
| 55 | +The extensions allow an automated system to represent the tasks that must be fulfilled and track their progress and update their status. |
| 56 | + |
| 57 | +Such systems may be order fulfillment, delivery systems etc. The main characteristic is possibly that the **organizer** is not a human but the application. The actors in such a system may take part by carrying out operations and reporting back, e.g. delivering a package or a meal. These actors may be humans or some automated mechanism. |
0 commit comments