1 <!doctype linuxdoc system>
3 <title>The TaskJuggler Manual
4 <author>Chris Schlaeger <tt>cs@suse.de</tt>,
5 Marc Rührschneck <tt>mac@suse.de</tt>
6 <date>Version TJVER, Thu Feb 14 14:33:25 CET 2002
8 This document describes TaskJuggler version TJVER
16 <sect1>About TaskJuggler
19 TaskJuggler is a project management tool. It helps to organize and plan
20 projects. It schedules the whole project and tries to optimize
21 the resources needed for the project.
23 The output can be a report showing the several tasks, the resource usage,
24 or the account information. Multiple reports can be created as html files,
25 enabling easy display with a web browser.
28 <sect1>Features and Highlights
32 <item>Automatic scheduling of interdependent tasks with resource
34 <item>Powerful project description syntax with macro support.
35 <item>Flexible working hours and vacation handling.
36 <item>Support for shifts.
37 <item>Timezone support.
38 <item>Flexibel resource grouping.
39 <item>Project accounting support.
40 <item>Task may have initial costs, finishing costs.
41 <item>Resource may have running costs.
42 <item>Support for simple profit/loss analysis.
43 <item>HTML and XML report generation.
44 <item>Support for plan and actual scenario comparisons.
45 <item>Project tracking support.
46 <item>Groupware support by using a revision control system such as CVS
47 or RCS on the project description files.
48 <item>Support for central resource allocation database.
52 <sect1>TaskJuggler on the Web
54 The official TaskJuggler web page can be found at <url
55 url="http://www.suse.de/~freitag/taskjuggler"
56 name="http://www.suse.de/~freitag/taskjuggler">.
61 <sect2>Version 1.0.0 (2002-03-14)
65 <item>Initial stable public release
69 <sect2>Version 1.0.1 (2002-03-15)
73 <item>Fixed completely broken global vacation handling
75 <item>Added test case for vacation handling to test suite
84 <item> Added some reports to the example file, so users actually get a
85 result of the taskjuggler run.
87 <item> Support for later completion of task and resources added. By
88 writing 'supplement task <ID> { ... }' an already defined task
89 can be extended. So it's easier now to create a file which contains
90 the vacations for all resources seperate from the resource definition
93 <item>Extended expression parser to work on string type values as well.
95 <item>Logical expressions for hidetask, rolluptask etc. can now
96 contain functions as well. Currently there is support for 'istask',
97 'issubtaskof', 'contains', 'ismilestone'.
99 <item>Moved the docs directory from taskjugger subdir to topdir.
101 <item>Added feature list and changelog to the documentation.
103 <item>Property reference is now sorted in alphabetical order.
105 <item>Added missing 'export' report to documentation. Export reports
106 can now contain the scheduled tasks as well as the resource
109 <item>New keywords 'planbooking' and 'actualbooking' to enter fixed
110 bookings of resources in the resource declaration.
112 <item>Added new example project to illustrate the use of export in big
113 projects that are split into sub projects.
115 <item>HTML comment in HTML report files is now using correct syntax.
117 <item>Partial fix for correct timezone handling.
124 <sect1>Obtaining TaskJuggler
127 TaskJuggler may be obtained from the following web site:
129 <htmlurl url="http://www.suse.de/~cs/taskjuggler"
130 name="http://www.suse.de/~cs/taskjuggler/">
135 To build and run TaskJuggler, you need:
138 <item>qt3 — The qt c++ class library version 3
139 <item> gcc 2.95 — The GNU C compiler version 2.95. The c++
140 extensions must be available
143 This version of TaskJuggler was built and tested on SuSE Linux 7.3/x86
145 <sect1>Compilation and Installation
148 To compile and install TaskJuggler on your system, type the following
149 in the base directory of the TaskJuggler distribution:
158 Since TaskJuggler uses <tt/autoconf/, you should have no trouble
160 If you have problems, please report them to the TaskJuggler developers
161 mailing list at <htmlurl url="mailto:taskjuggler-devel@suse.de"
162 name="taskjuggler-devel@suse.de"> in English.
170 TaskJuggler uses one or more ASCII files to describe a project. The main
171 project should be placed in a file with the <tt>.tjp</tt> extension. This
172 main project may contain several subprojects. Such subprojects should be
173 placed in files with the <tt>.tjsp</tt> extension. These subprojects are
174 included in the main project during compile time.
176 <sect1> General Usage
179 TaskJuggler works like a compiler. You provide the source files, it computes
180 the contents and creates the output files.
183 After you created the project description file, have TaskJuggler
184 compute and create the output. For example, if you have created the
185 <tt>AcSo.tjp</tt> project file. You need to send this file to TaskJuggler then:
188 % taskjuggler AcSo.tjp
191 TaskJuggler will try to schedule all tasks with the specified
192 conditions and generate the reports that were requested with the <ref
193 id="htmltaskreport" name="htmltaskreport">, <ref
194 id="htmlresourcereport" name="htmlresourcereport"> or other report
197 <sect1> The Command Line Options
200 To get a list of the command line options of TaskJuggler, use the <tt>--help</tt>
210 The easiest way to give an overview of the functionality of TaskJuggler is
213 <sect1> Introducing the Example: Accounting Software
216 Refer to section <ref id="example" name="The Example: Accounting
217 Software"> for a printout of the example.
219 In this project, we plan to create an accounting program. The project
220 starts on January 16, 2002, and its end is planned for June 30, 2002. The
221 project will consist of the following tasks:
224 <tag/Specification/The developers set up the specification for the
225 software and documentation.
226 <tag/Software development/This is the whole process of coding the software. It
227 includes the following subtasks:
229 <tag/Database coupling/Connection procedures to the database.
230 <tag/Graphical user interface/Creating the user interface.
231 <tag/Back-end functions/Creating the calucation and computing routines for the
235 <tag/Software testing/Testing the software. There are two stages of software
238 <tag/Alpha test/Test the software in alpha stage.
239 <tag/Beta test/Test the software in beta stage. The customer normally takes
240 part in this beta test phase.
243 <tag/Manual/Creating the printed user manual
245 <tag/Ship to customer/This task includes all steps necessary to communicate
246 to the customer. This is an important task, as it defines the basic milestones
247 of the project. For example, we cannot start the project before the contract
248 is signed. It is also important to check the planned date of shipping the
249 software to the customer.
251 This process consist of the following subtasks:
253 <tag/Projectstart/This milestone defines the start of the project.
254 <tag/Betaversion/This marks the start of the beta test. Normally, the
255 customer wants to see a beta version, so this is also a milestone.
256 <tag/Ship product to customer/This is the date when the project has ended.
257 Software is in final stage, the manual is ready and printed, and everything is
258 shipped to the customer.
262 <sect> The Basic Parts of a <tt>.tjp</tt> File
265 This section gives an overview of the most important commands, properties,
266 and attributes used in a typical project file. Refer to <ref
267 id="reference" name="Property Reference"> for a complete list of commands and
268 properties usable in project files.
271 <tag>project fibu "Accounting Software" "1.0" 2002-01-16 2002-06-30</tag>
273 This statement informs TaskJuggler about the most important things on the
274 project. These things include:
277 <tag/fibu/The project ID, unique within the scope of the project
278 <tag/Accounting Software/The short description of the project
279 <tag/1.0/The version of the schedule
280 <tag/2002-01-16 2002-6-30/Begin and end dates of the project
283 Refer to the <ref id="project" name="project"> command in the reference
286 <tag>resource dev "Developers" { ... }</tag>
288 This defines a resource with the unique ID <tt/dev/. It will be shown as
289 <tt/Developers/ on the schedule later.
292 <tag/dev/The resource ID, unique for TaskJuggler
293 <tag/Developers/The real name of the resource
296 In the example, the resource consists of the three developers (<tt/dev1/,
297 <tt/dev2/, and <tt/dev3/). For every resource, you can specify additional
298 attributes in separate curly braces {}.
300 Refer to the <ref id="resource" name="resource"> command in the
301 reference for details.
303 <tag>task AcSo "Accounting Software" { ... }</tag>
305 This defines the task <tt/AcSo/. In this example, it represents the whole
306 project to build the Accounting Software. A task may contain several subtasks.
308 Refer to the <ref id="task" name="task"> command in the reference.
310 <tag>htmltaskreport "tasks.html" name,start,end,resources,weekly</tag>
312 This command creates a task-based report in html and saves it as
313 <tt/tasks.html/ to the current directory. The report will include the task
314 name, start and end of the task, and the necessary resources. The report's
315 resolution will be in weeks.
317 Refer to the <ref id="htmltaskreport" name="htmltaskreport"> command in
318 the reference for details.
321 <sect> Other Useful Commands and Environments
325 <tag> <tt/now 2002-02-17/</tag>
327 This sets the current date to 2002-02-17. This is the day or week that will be
328 higlighted in the report later. This helps with printing and creating reports for
331 <tag> <tt/rate 310.0/</tag>
333 <tag> <tt/currency "EUR"/</tag>
335 Sets the global monetary currency to Euro. It is used for printing out cost and
336 revenue values in the correct currency.
338 <tag> <tt/account dev "Development" cost {}/</tag>
340 This creates an account <tt/dev/ as a <tt/cost/ account. There is also a
341 account type <tt/revenue/, which is used to cover all kinds of income (see
342 reference: <ref id="account" name="account">).
345 <sect>Property Reference<p><label id="reference">
347 <bf>Comments</bf><p><label id="comments">
348 There are two ways to annotate a project file with comments. All text
349 after a '#' will be ignored. Comments that span multiple rows must be
350 started with '/*' and ended with '*/'.
353 <label id="id"><tag/ID/A string that may consist of the characters A-Z, a-z, 0-9, and _.
354 It may not start with a number.
356 <label id="global_id"><tag/GLOBAL_ID/A GLOBAL_ID may have the same characters as ID, but
357 additionally may contain '.' and '!'. '!' may only be used at the
358 beginning and is used in relative IDs. A '!' means one level up.
360 <label id="string"><tag/STRING/A string may contain any characters and is enclosed in '"'. A
361 string may include line breaks.
363 <label id="date"><tag/DATE/A DATE is an ISO-compliant date in the
364 format YYYY-MM-DD[-hh:mm[:ss]][-TIMEZONE]. Hour, minutes,
365 seconds and the TIMEZONE are optional. If not specified, the values
366 are set to 0. The local timezone is used if no other is specified. If
367 the timezone is not known taskjuggler will fall back to UTC. See
368 the source code (taskjuggler/Utility.cpp) for details.
370 <label id="time"><tag/TIME/A time in the format HH:MM.
372 <label id="unit"><tag/UNIT/May be h for hours, d for days, w for weeks, m for months, y for
375 <label id="weekday"><tag/WEEKDAY/May be
378 <tag/tue/ for Tuesday
379 <tag/wed/ for Wednesday
380 <tag/thu/ for Thursday
382 <tag/sat/ for Saturday
386 <label id="integer"><tag/INTEGER/A number that is an integer.
388 <label id="real"><tag/REAL/A real number (e.g., 3.14).
390 <label id="logicalexpression"><tag/LOGICALEXPRESSION/This is a logical expression consisting of logical
391 operations, such as '&' for and, '|' for or, and '˜' for not, to
392 operate on INTEGER values
393 or symbols. As symbols flag names and certain functions are supported. The
394 expression is evaluated from left to right. '˜' has a higher
395 precedence than other operators. Use braces to avoid ambiguous
396 operations. If flagFoo, flagFooBar, and flagBar are declared flags, the
397 following example is a correct expression:
399 (flagFoo | flagFooBar) & ˜flagBar
401 The following functions can be used in logical expressions:
404 <tag/containstask(<ref id="id" name="ID">)/ true if the task has task ID as sub task.
405 <tag/ismilestone()/ true if the task is a milestone.
406 <tag/issubtask(<ref id="id" name="ID">)/ true if the task is a sub task of task ID.
407 <tag/istask(<ref id="id" name="ID">)/ true if the tasks has the listed ID.
410 <label id="sortingcriteria"><tag/SORTINGCRITERIA/See attribute description for allowed values.
413 Optional attributes of a property must be enclosed by {}.
416 <sect1>account <id> <name> <type><label id="account">
418 id: <ref id="id" name="ID">
420 name: <ref id="string" name="STRING">
422 type: <ref id="id" name="ID">
427 <tag/account <id> <name>/
428 Accounts may be nested. An account that has subaccounts may not have
429 a balance or a kotrusid.
431 <tag/credit <date> <description> <amount>/
432 date: <ref id="date" name="DATE">
434 description <ref id="string" name="STRING">
436 amount: <ref id="real" name="REAL">
438 Credits the specified amount to the account at the specified date. The
439 description should contain some information about the reason for the
442 <tag/kotrusid <id>/
443 id: <ref id="string" name="STRING">
445 The KoTrus <ref id="id" name="ID"> of the account (Kostentraeger).
446 This is a special reserved keyword.
449 Declares an account. Accounts can be used to calculate costs of tasks
450 or the whole project. Account declaration may be nested, but only the
451 top level accounts may have a type attribute specified. All
452 subaccounts inherit this type. The type may be 'Cost' or 'Revenue'.
455 <sect1>currency <text><label id="currency">
457 text: <ref id="string" name="STRING">
459 The currency for money values in reports.
462 <sect1>currencydigits <number><label id="currencydigits">
464 number: <ref id="integer" name="INTEGER">
466 The number of decimal places.
469 <sect1>export <filename><label id="export">
471 filename: <ref id="string" name="STRING">
476 <tag/hideresource <expression>/
477 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
479 Report only resources that do not have flags meeting the described logical
482 <tag/hidetask <expression>/
483 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
485 Report only tasks that do not have flags meeting the described logical
488 <tag/rollupresource <expression>/
489 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
491 Do not show subresources of resources with flags meeting the described
494 <tag/rolluptask <expression>/
495 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
497 Do not show subtasks of tasks with flags meeting the described
502 The export report looks like a regular taskjuggler file but contains
503 fixed start and end dates for all tasks. The tasks only have start and
504 end times and their flags. No other attributes are exported.
506 If requested the resource usage for the tasks is reported as well. But
507 only those allocations are listed that belong to tasks listed in the
510 The export report can be used to share certain tasks or milestones
514 <sect1>flags <id>[,<id>]<label id="flags">
516 id: <ref id="id" name="ID">
518 Declares the specified flags. Flags can be assigned to tasks,
519 resources, or accounts to be used as filters during report
520 generation. It is legal to declare a flag more than once.
523 <sect1>htmlaccountreport <filename><label id="htmlaccountreport">
526 filename: <ref id="string" name="STRING">
531 <tag/columns <colid>[,<colid>]/
532 colid: <ref id="id" name="ID">
534 Specifies which columns should be included in the task report. The
535 following values for colid are available:
538 <tag/no/The task index
540 <tag/id/The global <ref id="id" name="ID"> of a task
542 <tag/name/The name of a task, resource, or account
544 <tag/total/Total accumulated values
546 <tag/daily/A day-by-day calendar view of the accounts
548 <tag/weekly/A week-by-week calendar view of the accounts
550 <tag/monthly/A month-by-month calendar view of the accounts
552 <tag/quaterly/A quarter-by-quarter calender view of the accounts
555 <tag/start <day>/
556 day: <ref id="date" name="DATE">
558 The start date for the calender view.
560 <tag/end <day>/
561 day: <ref id="date" name="DATE">
563 The end date for the calender view.
565 <tag/show <flag>[,flag]/
566 flag: <ref id="id" name="ID">
568 List only accounts with the listed flags. This attribute
569 conflicts with 'hide'.
571 <tag/hide <flag>[,flag]/
572 flag: <ref id="id" name="ID">
574 List only accounts that do not have the listed flags. This attribute
575 conflicts with 'show'.
579 <sect1>htmlresourcereport <filename><label id="htmlresourcereport">
582 filename: <ref id="string" name="STRING">
586 See <ref id="htmltaskreport" name="htmltaskresport">
589 <sect1>htmltaskreport <filename><label id="htmltaskreport">
592 filename: <ref id="string" name="STRING">
597 <tag/columns <colid>&lsqb,<colid>&rsqb/
598 colid: <ref id="id" name="ID">
600 Specifies which columns should be included in the task report. The
601 following values for colid are available:
604 <tag/no/The task index
605 <tag/id/The global <ref id="id" name="ID"> of a task
606 <tag/name/The name of a task, resource, or account
607 <tag/start/The start date of a task
608 <tag/end/The end date of a task
609 <tag/minstart/The earliest desired start date
610 <tag/maxstart/The latest desired start date
611 <tag/minend/The earliest desired end date
612 <tag/maxend/The latest desired end date
613 <tag/priority/The scheduling priority
614 <tag/resources/The names of the used resources
615 <tag/depends/The task index of the tasks on which this task depends
616 <tag/follows/The task index of the tasks that depend on this task
617 <tag/responsible/The name of the resource responsible for a task
618 <tag/responsibilies/A list of all tasks indicies for which a resource is responsible
619 <tag/note/The description of the task
620 <tag/daily/A day-by-day calendar view of the tasks
621 <tag/weekly/A week-by-week calendar view of the tasks
622 <tag/monthly/A month-by-month calendar view of the tasks
625 <tag/start <day>/
626 day: <ref id="date" name="DATE">
628 The start date for the calender view.
630 <tag/end <day>/
631 day: <ref id="date" name="DATE">
633 The end date for the calender view.
635 <tag/headline <text>/
636 text: <ref id="string" name="STRING">
638 Defines the headline used for the report. The headline is printed on
639 top of the page and with a larger font.
641 <tag/caption <text>/
642 text: <ref id="string" name="STRING">
644 Defines the caption used for the report. The caption is printed right
647 <tag/sorttasks <criteria>/
649 criteria: <ref id="sortingcriteria" name="SORTINGCRITERIA">
651 The sorting criteria specifies how the tasks in the generated report
652 will be sorted. Possible values are:
655 <tag/tasktree/This is the default and creates a list with subtasks
656 indented and grouped together. If this sorting is used, parent tasks
657 are shown when subtasks are not hidden, even if the parent task
658 matches the hide expression.
660 <tag/tree/Show nesting with indentation
662 <tag/indexup/Last index on top
664 <tag/indexdown/First index on top
666 <tag/idup/Last <ref id="id" name="ID"> on top
668 <tag/iddown/First <ref id="id" name="ID"> on top
670 <tag/fullnameup/Last full name on top
672 <tag/fullnamedown/First full name on top
674 <tag/nameup/Last name on top
676 <tag/namedown/First name on top
678 <tag/startup/Latest start date on top
680 <tag/startdown/Earliest start date on top
682 <tag/endup/Latest end date on top
684 <tag/enddown/Earliest end date on top
686 <tag/priorityup/Lowest priority on top
688 <tag/prioritydown/Highest priority on top
690 <tag/responsibleup/Last name of responsible on top
692 <tag/responsibledown/First name of responsible on top
694 <tag/mineffortup/Smallest minimal effort on top
696 <tag/mineffortdown/Largest minimal effort on top
698 <tag/maxeffortup/Smallest maximum effort on top
700 <tag/maxeffortdown/Largest maximum effort on top
702 <tag/rateup/Smallest rate on top
704 <tag/ratedown/Largest rate on top
706 <tag/kotrusidup/Last kotrusid on top
708 <tag/kotrusiddown/First kotrusid on top
712 If used, not only the plan values are listed in the table, but also the
713 actual values. The actual values are put underneath the plan values.
715 <tag/hidetask <expression>/
716 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
718 List only tasks that do not have flags meeting the described logical
721 <tag/rolluptask <expression>/
722 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
724 Do not show subtasks of tasks with flags meeting the described
727 <tag/hideresource <expression>/
728 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
730 List only resources that do not have flags meeting the described logical
733 <tag/rollupresource <expression>/
734 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
736 Do not show subresources of resources with flags meeting the
737 described logical expression.
739 Generates a report of all tasks (excluding hidden and filtered) in
740 HTML format. Multiple declarations of htmltaskreport can be made to
741 generate several different reports with one run of TaskJuggler.
745 <sect1>icalreport <filename><label id="icalreport">
748 filename: <ref id="string" name="STRING">
750 create an ical calender format output file which can be imported
754 <sect1>include <filename><label id="include">
756 filename: <ref id="string" name="STRING">
758 Includes the specified file name as if its contents would be written
759 instead of the include property. include commands can be used within
760 global scope or between property declarations of tasks, resources, and
764 <sect1>kotrusMode <mode><label id="kotrusMode">
767 mode: <ref id="string" name="STRING">
769 sets the kotrus mode. Valid values are
771 <item>'NoKotrus' for no KoTrus connection
772 <item>'XML' to read from an XML file (not yet supported)
773 <item>'DB' to read from database configured in your .taskjugglerrc
777 <sect1>macro <id> [ body ]<label id="macro">
779 id: <ref id="id" name="ID">
781 The body is not optional. It must be enclosed in [ ]. Macros can be
785 <tag/macro foo [ This text ]/
787 If later ${foo} is found in the project file, it is expanded to ' This
788 text '. Macros may have arguments. Arguments are special macros with
789 numbers as names. The number specifies the index of the argument.
791 <tag/macro foo [ This ${1} text ]/
793 will expand to ' This stupid text ' if called as ${foo
794 "stupid"}. Macros may call other macros.
797 Macro <ref id="id" name="ID">s should have at least one uppercase letter as all lowercase
798 letter <ref id="id" name="ID">s may be used in a later version for built-in macros like 'if',
802 <sect1>maxeffort <value><label id="maxeffort">
804 value: <ref id="real" name="REAL">
806 The default daily maximum effort for a resource. Resources will not be
807 scheduled more than this value. This value will be used for all
808 subsequent resource declarations unless specified otherwise.
811 <sect1>mineffort <value><label id="mineffort">
813 value: <ref id="real" name="REAL">
815 The default daily minimum effort for a resource. Resources that are
816 used less than this value will be marked in the report. This value
817 will be used for all subsequent resource declarations unless specified
821 <sect1>priority <value><label id="priority">
823 value: <ref id="integer" name="INTEGER">
825 The default scheduling priority for tasks. The value must be between 1
826 and 1000 and is inherited by all tasks if no other priority is
827 specified. The default value is 500.
830 <sect1>project <id> <name> <version> <start>
831 <end><label id="project">
834 id: <ref id="id" name="ID">
836 name: <ref id="string" name="STRING">
838 version: <ref id="string" name="STRING">
840 start: <ref id="date" name="DATE">
842 end: <ref id="date" name="DATE">
844 Optional attributes: none
846 The project property is mandatory and should be the first property in
847 a project file. <id> is the default project <ref id="id" name="ID"> used to register
848 resource allocations in a global database. <name> is the name of the
849 project. <version> is the version of the project file. Typically this
850 is the CVS ID. <start> and <end> define the time frame of the
851 project. The end may be well after the end of the last task, but must
852 be specified to terminate the scheduling process.
855 <sect1>rate <money><label id="rate">
857 money: <ref id="real" name="REAL">
859 The default daily rate for using a resource full-time. This value will
860 be used for all subsequent resource declarations unless specified
864 <sect1>resource <id> <name><label id="resource">
867 id: <ref id="id" name="ID">
869 name: <ref id="string" name="STRING">
874 <tag/resource <id> <name>/
875 Resources may be nested to create groups. A nested resource inherits
876 the attributes of the parent resource. Only those attributes
877 specified prior to the declaration of the
878 nested resource are inherited.
879 <tag/mineffort <value>/
880 value: <ref id="real" name="REAL">
882 The daily minimum effort for a resource. Resources that are
883 used less than this value will be marked in the report.
885 <tag/maxeffort <value>/
886 value: <ref id="real" name="REAL">
888 The daily maximum effort for a resource. Resources will not be
889 scheduled to be used more than this value. A value of 1.0 means a
890 full working day. 0.5 means half a working day.
892 <tag/efficiency <value>/
893 value: <ref id="real" name="REAL">
895 The efficiency of the resource. This can be used to describe a team as
896 a resource. A team of five should have an efficiency of 5.0.
898 <tag/rate <value>/
899 value: <ref id="real" name="REAL">
901 The daily costs of the resource.
903 <tag/kotrusid <id>/
904 id: <ref id="string" name="STRING">
906 The KoTrus <ref id="id" name="ID"> of the resource (e-mail address).
908 <tag/vacation <from> [- <to>]/
909 from: <ref id="date" name="DATE">
911 to: <ref id="date" name="DATE">
913 Specifies a vacation for a resource. The to value is NOT included in
914 the vacation. It specifies the first second after the vacation.
916 <tag/workinghours <weekday> <from> - <to>[,<from>-<to>]/
917 weekday: <ref id="weekday" name="WEEKDAY">
919 from: <ref id="time" name="TIME">
921 to: <ref id="time" name="TIME">
923 Sets the working hours to the specified intervals. If no hours are
924 specified for a day, the global definitions are used.
926 <tag/shift <id> <from> - <to>/
927 id: <ref id="id" name="ID">
929 from: <ref id="date" name="DATE">
931 to: <ref id="date" name="DATE">
933 Assigns the resource to a defined shift during the specified
934 interval. Multiple shifts can be defined, but shift invervals may not
939 <sect1>shift <id> <name><label id="shift">
941 id: <ref id="id" name="ID">
943 name: <ref id="string" name="STRING">
945 The following optional parameter may be used. At least one optional
946 parameter must be specified.
949 <tag/shift <id> <name>/
950 id: <ref id="id" name="ID">
952 name: <ref id="string" name="STRING">
954 Shifts may be nested. A nested shift inherits the attributes of the
957 <tag/workinghours <weekday> <from>-<to>[,<from>-<to>&rsqb/
958 weekday: <ref id="weekday" name="WEEKDAY">
960 from: <ref id="time" name="TIME">
962 to: <ref id="time" name="TIME">
964 Sets the working hours to the specified intervals. If no hours are
965 specified for a day, the global definitions are used. If no working
966 hours should be specified for a day, the keyword 'off' must be used
967 instead of the time interval.
970 When several resource have the same working hours, these working hours
971 should be defined as shifts. Each shift must have a unique <ref id="id" name="ID">.
972 Resources can be assigned to shifts for certain intervals. Ref.
976 <sect1>supplement <task|resource> <ID><label id="completion">
980 The supplement keyword provides a mechanism to add more attributes to
981 already defined tasks or resources. The additional attributes must
982 obey the same rules as in regular task or resource definitions and
983 must be enclosed by curly braces.
985 This construct is primerily meant for situations where the information
986 about a task or resource is split over serveral files. E. g. the
987 vacation dates for the resources may be in a seperate file that was
988 generated by some other tool.
991 <sect1>task <id> <name><label id="task">
994 id: <ref id="id" name="ID">
996 name: <ref id="string" name="STRING">
1001 <tag/task <id> <name>/
1002 id: <ref id="id" name="ID">
1004 name: <ref id="string" name="STRING">
1006 A task may have subtasks. If subtasks are specified, many of the
1007 other attributes are illegal. See attributes for details.
1009 <tag/note <text>/
1010 text: <ref id="string" name="STRING">
1012 A longer description of the task.
1014 <tag/start <date>/
1015 date: <ref id="date" name="DATE">
1017 The planned start date for the task. If no start date is given,
1018 the task must depend on other tasks. If no dependency is given, the
1019 project start date is used. Setting a start date will switch the
1020 scheduling policy to ASAP.
1022 <tag/end <date>/
1023 date: <ref id="date" name="DATE">
1025 The planned end date for the task. If no end date is given, the
1026 task must depend on other tasks. If no dependency is given, the project
1027 start date is used. Setting an end date will switch the scheduling
1030 <tag/minstart <date>/
1031 date: <ref id="date" name="DATE">
1033 The earliest desired start date for the task. If this date cannot
1034 be met, the task is marked in the task list.
1036 This attribute is inherited by subtasks.
1038 <tag/maxstart <date>/
1039 date: <ref id="date" name="DATE">
1041 The latest desired start date for the task. If this date cannot be
1042 met, the task is marked in the task list.
1044 This attribute is inherited by subtasks.
1046 <tag/actualstart <date>/
1047 date: <ref id="date" name="DATE">
1049 The actual start date of the task. This can be specified to compare the planned
1052 <tag/minend <date>/
1053 date: <ref id="date" name="DATE">
1055 The earliest desired end date for the task. If this date cannot be
1056 met, the task is marked in the task list.
1058 This attribute is inherited by subtasks.
1060 <tag/maxend <date>/
1061 date: <ref id="date" name="DATE">
1063 The latest desired end date for the task. If this date cannot be
1064 met, the task is marked in the task list.
1066 This attribute is inherited by subtasks.
1068 <tag/actualend <date>/
1069 date: <ref id="date" name="DATE">
1071 The actual end date of the task. This can be specified to compare the planned
1074 <tag/length <number> <unit>/
1075 number: <ref id="real" name="REAL">
1077 unit: <ref id="unit" name="UNIT">
1079 Specifies the time the task occupies the resources. This is working
1080 time, not calender time. 7d means 7 working days, not one week.
1082 Tasks may not have subtasks if this attribute is used.
1084 <tag/duration <number> <unit>/
1085 number: <ref id="real" name="REAL">
1087 unit: <ref id="unit" name="UNIT">
1089 Specifies the time the task occupies the resources. This is calender
1090 time, not working time. 7d means one week.
1092 Tasks may not have subtasks if this attribute is used.
1094 <tag/effort <number> <unit>/
1095 number: <ref id="real" name="REAL">
1097 unit: <ref id="unit" name="UNIT">
1099 Specifies the effort needed to complete the task. An effort of 4d can
1100 be done with 2 full-time resources in 2 days.
1102 WARNING: In almost all real world projects effort is not the product
1103 of time and resources. This is only true if the task can be
1104 partitioned without adding any overhead. For more information about
1105 this read "Mythical Man-Month" by Frederick P. Brooks, Jr.
1107 Tasks may not have subtasks if this attribute is used.
1109 <tag/complete <percent>/
1110 percent: <ref id="integer" name="INTEGER">
1112 Specifies what percentage of the task is already completed. This can be
1113 useful for project tracking.
1115 Tasks may not have subtasks if this attribute is used.
1117 <tag/allocate <id>/
1118 id: <ref id="id" name="ID">
1120 Optional attributes:
1123 <tag/load <days>/
1124 days: <ref id="real" name="REAL">
1126 Specifies how many days the resource can be used per day for this
1127 task. A load of 0.5 means that the resource will be used for at most
1128 half a working day for this task.
1130 <tag/alternative <id>&lsqb,<id>]/
1131 id: <ref id="id" name="ID">
1133 Specifies <ref id="id" name="ID">s of alternative resources. One of the alternatives will
1134 be used if the main resource is not available. If multiple
1135 resources are used, they must be separated by commas.
1139 If set, the first available resource out of the specified resource and
1140 its specified alternatives will be used for the entire task.
1144 Specifies a resource that can be used to fulfill the task. More than
1145 one resource can be specified for a task. All resources must be
1146 declared before they can be used. Ref. 'resource'. Resource
1147 allocations are mandatory for 'effort'-based tasks. Task with a
1148 'length' or 'duration' specification may have resources allocated, but
1149 do not require them.
1151 Tasks may not have subtasks if this attribute is used.
1153 <tag/scheduling <policy>/
1154 policy: <ref id="id" name="ID">
1156 This specifies the scheduling policy for the task. Possible values are:
1159 <tag/ASAP/As soon as possible. The task is scheduled to happen as early as
1162 <tag/ALAP/As late as possible. The task is scheduled to happen as late as
1166 The scheduling policy is automatically changed if the 'depends' or
1167 'preceeds' attributes are used. If multiple attributes that affect the
1168 scheduling policy are used, that last attribute determines the
1171 <tag/depends <id>&lsqb,<id>]/
1172 id: GLOBAL_<ref id="id" name="ID">
1174 Specifies that the task cannot start before the task with the
1175 specified <ref id="id" name="ID">s have been finished. If multiple <ref id="id" name="ID">s are specified, they
1176 must be separated by commas. IDs must be either global or relative. A
1177 relative <ref id="id" name="ID"> starts with a number of '!'. Each '!' moves the scope to the
1178 parent task. Global <ref id="id" name="ID">s do not contain '!', but have <ref id="id" name="ID">s separated by
1184 task foo2 { start 2002-12-04 }
1185 task foo3 { depends !foo2 }
1187 task bar { depends foo1.foo2 }
1190 By using the 'depends' attribute, the scheduling policy is
1191 automatically set to ASAP. If 'depends' and 'preceeds' are used, the
1194 <tag/preceeds <id>[,<id>]/
1195 id: GLOBAL_<ref id="id" name="ID">
1197 Specifies that this task preceeds the tasks with the specified
1198 <ref id="id" name="ID">s. If multiple tasks are specified, they must be separated by
1199 commas. The format is equivalent to the 'depends' attribute.
1201 By using the 'preceeds' attribute, the scheduling policy is
1202 automatically set to ALAP. If 'depends' and 'preceeds' are used, the
1205 <tag/flags <id>[,<id>]/
1206 id: <ref id="id" name="ID">
1208 Attaches flags to the task. Flags can be used to filter tasks from the
1209 the output. Flags must be declared before they can be used. Ref. 'flags'.
1211 Flags are inherited by subtasks from their parent tasks if they are
1212 declared before the subtask. Flags that are declared after the subtasks
1215 <tag/responsible <id>/
1216 id: <ref id="id" name="ID">
1218 The ID of the resource that is responsible for this task.
1220 This attribute is inherited by subtasks if specified prior to the
1221 definition of the subtask.
1223 <tag/priority <value>/
1224 value: <ref id="integer" name="INTEGER">
1226 Specifies a priority between 1 and 1000. A task with higher priority
1227 is more likely to get the requested resources.
1229 This attribute is inherited by subtasks if specified prior to the
1230 definition of the subtask.
1232 <tag/account <id>/
1233 id: <ref id="id" name="ID">
1235 Specifies the account to which all money associated with this task will be
1238 This attribute is inherited by subtasks if specified prior to the
1239 definition of the subtask.
1241 <tag/startcredit <amount>/
1242 amount: <ref id="real" name="REAL">
1244 Specifies an amount that is credited to the account specified by the
1245 'account' property at the moment the tasks starts.
1247 <tag/endcredit <amount>/
1248 amount: <ref id="real" name="REAL">
1250 Specifies an amount that is credited to the account specified by the
1251 'account' property at the moment the tasks ends.
1254 Tasks may be nested and some attributes are inherited by the subtasks.
1257 <sect1>timingresolution <value> <unit><label id="timingresolution">
1261 unit: <ref id="unit" name="UNIT">
1263 Sets the minimum timing resolution. The smaller the value, the longer
1264 the schedulings process requires. The default is 1 hour. The smallest
1268 <sect1>vacation name <start> [- <end>]<label id="vacationname">
1270 name: <ref id="string" name="STRING">
1272 start: <ref id="date" name="DATE">
1274 end: <ref id="date" name="DATE">
1276 Defines a vacation period for all resources. The end value is NOT part
1277 of the vacation. So 2001-12-24 - 2001-12-25 specifies one day of
1278 vacation, not two days.
1281 <sect1>workinghours <weekday> <from>-<to>[,<from>-<to>]<label id="hours">
1283 weekday: <ref id="weekday" name="WEEKDAY">
1285 from: <ref id="time" name="TIME">
1287 to: <ref id="time" name="TIME">
1289 Sets the working hours to the specified intervals. The values are used
1290 as default values for all resources defined afterwards. The default
1291 values are 08:00-12:00 and 13:00-17:00 from Mon - Fri.
1294 <sect1>workinghoursperday <value><label id="workinghoursperday">
1296 value: <ref id="integer" name="INTEGER">
1298 Specifies the number of working hours per day. This value is used to
1299 calculate the daily load from the number of booked hours. If
1300 workingHoursPerDay is set to 8 and a resource is used for 12 hours on
1301 a day, the daily load is 1.5. Change this value with care as it
1302 affects many internal calculations.
1305 <sect1>xmltaskreport <filename><label id="xmltaskreport">
1308 filename: <ref id="string" name="STRING">
1310 create a xml task report to the given file. Note that this is still
1311 experimental. The format might change in future releases.
1314 <sect>The Example: Accounting Software<label id="example">
1318 project fibu "Accounting Software" "1.0" 2002-01-16 2002-06-30
1322 # The daily rate of all resources
1326 # This is one way to form teams
1327 macro allocate_developers [
1329 allocate dev2 { load 0.5 }
1333 resource dev "Developers" {
1334 resource dev1 "Paul Smith"
1335 resource dev2 "Larry Bono"
1336 resource dev3 "Klaus Mueller" { vacation 2002-02-01 - 2002-02-05 }
1338 resource misc "The others" {
1339 resource test "Peter Murphy" { maxeffort 0.8 rate 240.0 }
1340 resource doc "Dim Sung"
1343 account dev "Development" cost {}
1344 account doc "Dokumentation" cost {}
1345 account rev "Payments" revenue {}
1347 task AcSo "Accounting Software" {
1351 task spec "Spezification" {
1353 ${allocate_developers}
1354 depends !deliveries.start
1357 task software "Software development" {
1361 task database "Database coupling" {
1368 task gui "Graphical user interface" {
1371 depends !database, !backend
1376 task backend "Backend functions" {
1379 depends !database, !!spec
1386 task test "Software testing" {
1388 task alpha "Alpha test" {
1395 task beta "Beta test" {
1403 task manual "Manual" {
1405 depends !deliveries.start
1411 task deliveries "Ship to customer" {
1415 task start "Projectstart" {
1418 actualstart 2002-01-20
1422 task beta "Betaversion" {
1424 depends !!test.alpha
1428 task done "Ship product to customer" {
1431 depends !!test.beta, !!manual
1437 htmltaskreport "tasks.html" name,start,end,resources,weekly
1440 <sect>Questions and Answers<p>
1444 TaskJuggler Copyright 2001 Chris Schlaeger , cs@suse.de
1447 This program is free software. You can redistribute it and modify
1448 it under the terms of the GNU General Public License version 2 as published
1449 by the Free Software Foundation.
1451 This program is distributed in the hope that it will be useful,
1452 but WITHOUT ANY WARRANTY; without even the implied warranty of
1453 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1454 GNU General Public License for more details.
1456 You should have received a copy of the GNU General Public License
1457 along with this program. If not, write to the Free Software
1458 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.