OSDN Git Service

- Partial fix for timezone handling.
[tjqt4port/tj2qt4.git] / docs / en / index.sgml.in
1 <!doctype linuxdoc system>
2 <article>
3 <title>The TaskJuggler Manual
4 <author>Chris Schlaeger <tt>cs@suse.de</tt>,
5 Marc R&uuml;hrschneck <tt>mac@suse.de</tt>
6 <date>Version TJVER, Thu Feb 14 14:33:25 CET 2002
7 <abstract>
8 This document describes TaskJuggler version TJVER
9
10 </abstract>
11
12 <toc>
13
14 <sect>Introduction
15 <p>
16 <sect1>About TaskJuggler
17 <p>
18
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.
22
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. 
26
27 <p>
28 <sect1>Features and Highlights
29 <p>
30
31 <itemize>
32 <item>Automatic scheduling of interdependent tasks with resource
33 conflict solver.
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.
49 </itemize>
50
51 <p>
52 <sect1>TaskJuggler on the Web
53 <p>
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">.
57
58 <sect1>Changes
59 <p>
60
61 <sect2>Version 1.0.0 (2002-03-14)
62 <p>
63 <itemize>
64
65 <item>Initial stable public release
66
67 </itemize>
68 <p>
69 <sect2>Version 1.0.1 (2002-03-15)
70 <p>
71 <itemize>
72
73 <item>Fixed completely broken global vacation handling
74
75 <item>Added test case for vacation handling to test suite
76
77 </itemize>
78 <p>
79
80 <sect2>Version 1.1
81 <p>
82 <itemize>
83
84 <item> Added some reports to the example file, so users actually get a
85 result of the taskjuggler run. 
86
87 <item> Support for later completion of task and resources added. By
88 writing 'supplement task &lt;ID&gt; { ... }' 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
91 itself.
92
93 <item>Extended expression parser to work on string type values as well.
94
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'.
98
99 <item>Moved the docs directory from taskjugger subdir to topdir.
100
101 <item>Added feature list and changelog to the documentation.
102
103 <item>Property reference is now sorted in alphabetical order.
104
105 <item>Added missing 'export' report to documentation. Export reports
106 can now contain the scheduled tasks as well as the resource
107 allocations.
108
109 <item>New keywords 'planbooking' and 'actualbooking' to enter fixed
110 bookings of resources in the resource declaration.
111
112 <item>Added new example project to illustrate the use of export in big
113 projects that are split into sub projects.
114
115 <item>HTML comment in HTML report files is now using correct syntax.
116
117 <item>Partial fix for correct timezone handling.
118
119 </itemize>
120 <p>
121
122 <sect>Installation
123 <p>
124 <sect1>Obtaining TaskJuggler 
125 <p>
126
127 TaskJuggler may be obtained from the following web site:
128
129 <htmlurl url="http://www.suse.de/~cs/taskjuggler"
130 name="http://www.suse.de/~cs/taskjuggler/">
131
132 <sect1>Requirements
133 <p>
134
135 To build and run TaskJuggler, you need:
136
137 <itemize>
138 <item>qt3 &mdash; The qt c++ class library version 3
139 <item> gcc 2.95 &mdash; The GNU C compiler version 2.95. The c++
140 extensions must be available
141 </itemize>
142
143 This version of TaskJuggler was built and tested on SuSE Linux 7.3/x86
144
145 <sect1>Compilation and Installation
146 <p>
147
148 To compile and install TaskJuggler on your system, type the following 
149 in the base directory of the TaskJuggler distribution:
150
151 <tscreen><verb>
152 % ./configure
153 % make
154 % make install
155 </verb></tscreen>
156
157 <p>
158 Since TaskJuggler uses <tt/autoconf/, you should have no trouble
159 compiling it.
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.
163
164
165 <p>
166 <sect> Usage <p>
167 <sect1> Basics
168 <p>
169
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.
175
176 <sect1> General Usage
177 <p>
178
179 TaskJuggler works like a compiler. You provide the source files, it computes
180 the contents and creates the output files.
181
182 <p>
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:
186
187 <tscreen><verb>
188 % taskjuggler AcSo.tjp
189 </verb></tscreen>
190
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
195 attributes.
196
197 <sect1> The Command Line Options
198 <p>
199
200 To get a list of the command line options of TaskJuggler, use the <tt>--help</tt>
201 option:
202
203 <tscreen><verb>
204 % taskjuggler --help
205 </verb></tscreen>
206
207 <sect>An Example
208 <p>
209
210 The easiest way to give an overview of the functionality of TaskJuggler is
211 with an example.
212
213 <sect1> Introducing the Example: Accounting Software
214 <p>
215
216 Refer to section <ref id="example" name="The Example: Accounting
217 Software"> for a printout of the example.
218
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:
222
223 <descrip>
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:
228   <descrip>
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
232   data.
233   </descrip>
234
235 <tag/Software testing/Testing the software. There are two stages of software
236 testing:
237   <descrip>
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.
241   </descrip>
242
243 <tag/Manual/Creating the printed user manual
244
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.
250
251 This process consist of the following subtasks:
252   <descrip>
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.
259   </descrip>
260 </descrip>
261
262 <sect> The Basic Parts of a <tt>.tjp</tt> File
263 <p>
264
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.
269
270 <descrip>
271 <tag>project fibu "Accounting Software" "1.0" 2002-01-16 2002-06-30</tag>
272
273 This statement informs TaskJuggler about the most important things on the
274 project. These things include:
275
276 <descrip>
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
281 </descrip>
282
283 Refer to the <ref id="project" name="project"> command in the reference
284 for details.
285
286 <tag>resource dev "Developers" { ... }</tag>
287
288 This defines a resource with the unique ID <tt/dev/. It will be shown as
289 <tt/Developers/ on the schedule later.
290
291 <descrip>
292 <tag/dev/The resource ID, unique for TaskJuggler
293 <tag/Developers/The real name of the resource
294 </descrip>
295
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 {}.
299
300 Refer to the <ref id="resource" name="resource"> command in the
301 reference for details.
302
303 <tag>task AcSo "Accounting Software" { ... }</tag>
304
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.
307
308 Refer to the <ref id="task" name="task"> command in the reference.
309
310 <tag>htmltaskreport "tasks.html" name,start,end,resources,weekly</tag>
311
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.
316
317 Refer to the <ref id="htmltaskreport" name="htmltaskreport"> command in
318 the reference for details.
319 </descrip>
320
321 <sect> Other Useful Commands and Environments
322 <p>
323
324 <descrip> 
325 <tag> <tt/now 2002-02-17/</tag>
326
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
329 the future.
330
331 <tag> <tt/rate 310.0/</tag>
332
333 <tag> <tt/currency "EUR"/</tag>
334
335 Sets the global monetary currency to Euro. It is used for printing out cost and
336 revenue values in the correct currency.
337
338 <tag> <tt/account dev "Development" cost {}/</tag>
339
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">).
343 </descrip>
344
345 <sect>Property Reference<p><label id="reference">
346
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 '*/'.
351
352 <descrip>
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.
355
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.
359
360 <label id="string"><tag/STRING/A string may contain any characters and is enclosed in '"'. A
361 string may include line breaks.
362
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. 
369
370 <label id="time"><tag/TIME/A time in the format HH:MM.
371
372 <label id="unit"><tag/UNIT/May be h for hours, d for days, w for weeks, m for months, y for
373 years.
374
375 <label id="weekday"><tag/WEEKDAY/May be
376 <descrip>
377 <tag/mon/ for Monday
378 <tag/tue/ for Tuesday
379 <tag/wed/ for Wednesday
380 <tag/thu/ for Thursday
381 <tag/fri/ for Friday
382 <tag/sat/ for Saturday
383 <tag/sun/ for Sunday
384 </descrip>
385
386 <label id="integer"><tag/INTEGER/A number that is an integer.
387
388 <label id="real"><tag/REAL/A real number (e.g., 3.14).
389
390 <label id="logicalexpression"><tag/LOGICALEXPRESSION/This is a logical expression consisting of logical
391 operations, such as '&' for and, '|' for or, and '&tilde;' 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. '&tilde;' 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:
398
399 (flagFoo | flagFooBar) & &tilde;flagBar
400
401 The following functions can be used in logical expressions:
402
403 <descrip>
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.
408 </descrip>
409
410 <label id="sortingcriteria"><tag/SORTINGCRITERIA/See attribute description for allowed values.
411 </descrip>
412
413 Optional attributes of a property must be enclosed by {}.
414
415
416 <sect1>account &lt;id&gt; &lt;name&gt; &lt;type&gt;<label id="account">
417 <p>
418 id: <ref id="id" name="ID">
419
420 name: <ref id="string" name="STRING">
421
422 type: <ref id="id" name="ID">
423
424 Optional attributes:
425
426 <descrip>
427 <tag/account &lt;id&gt; &lt;name&gt;/
428 Accounts may be nested. An account that has subaccounts may not have
429 a balance or a kotrusid.
430
431 <tag/credit &lt;date&gt; &lt;description&gt; &lt;amount&gt;/
432 date: <ref id="date" name="DATE">
433
434 description <ref id="string" name="STRING">
435
436 amount: <ref id="real" name="REAL">
437
438 Credits the specified amount to the account at the specified date. The
439 description should contain some information about the reason for the
440 transaction.
441
442 <tag/kotrusid &lt;id&gt;/
443 id: <ref id="string" name="STRING">
444
445 The KoTrus <ref id="id" name="ID"> of the account (Kostentraeger).
446 This is a special reserved keyword.  
447 </descrip>
448
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'.
453
454
455 <sect1>currency &lt;text&gt;<label id="currency">
456 <p>
457 text: <ref id="string" name="STRING">
458
459 The currency for money values in reports.
460
461
462 <sect1>currencydigits &lt;number&gt;<label id="currencydigits">
463 <p>
464 number: <ref id="integer" name="INTEGER">
465
466 The number of decimal places.
467
468
469 <sect1>export &lt;filename&gt;<label id="export">
470 <p>
471 filename: <ref id="string" name="STRING">
472 <p>
473 Optional attributes:
474
475 <descrip>
476 <tag/hideresource &lt;expression&gt;/
477 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
478
479 Report only resources that do not have flags meeting the described logical
480 expression.
481
482 <tag/hidetask &lt;expression&gt;/
483 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
484
485 Report only tasks that do not have flags meeting the described logical
486 expression.
487
488 <tag/rollupresource &lt;expression&gt;/
489 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
490
491 Do not show subresources of resources with flags meeting the described
492 logical expression.
493
494 <tag/rolluptask &lt;expression&gt;/
495 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
496
497 Do not show subtasks of tasks with flags meeting the described
498 logical expression.
499
500 </descrip>
501
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.
505
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
508 same export report.
509
510 The export report can be used to share certain tasks or milestones
511 with other projects.
512
513
514 <sect1>flags &lt;id&gt;&lsqb;,&lt;id&gt;&rsqb;<label id="flags">
515 <p>
516 id: <ref id="id" name="ID">
517
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.
521
522
523 <sect1>htmlaccountreport &lt;filename&gt;<label id="htmlaccountreport">
524 <p>
525
526 filename: <ref id="string" name="STRING">
527
528 Optional attributes:
529
530 <descrip>
531 <tag/columns &lt;colid&gt;&lsqb;,&lt;colid&gt;&rsqb;/
532 colid: <ref id="id" name="ID">
533
534 Specifies which columns should be included in the task report. The
535 following values for colid are available:
536
537 <descrip>
538 <tag/no/The task index
539
540 <tag/id/The global <ref id="id" name="ID"> of a task
541
542 <tag/name/The name of a task, resource, or account
543
544 <tag/total/Total accumulated values
545
546 <tag/daily/A day-by-day calendar view of the accounts
547
548 <tag/weekly/A week-by-week calendar view of the accounts
549
550 <tag/monthly/A month-by-month calendar view of the accounts
551
552 <tag/quaterly/A quarter-by-quarter calender view of the accounts
553 </descrip>
554
555 <tag/start &lt;day&gt;/
556 day: <ref id="date" name="DATE">
557
558 The start date for the calender view.
559
560 <tag/end &lt;day&gt;/
561 day: <ref id="date" name="DATE">
562
563 The end date for the calender view.
564
565 <tag/show &lt;flag&gt;&lsqb;,flag&rsqb;/
566 flag: <ref id="id" name="ID">
567
568 List only accounts with the listed flags. This attribute
569 conflicts with 'hide'.
570
571 <tag/hide &lt;flag&gt;&lsqb;,flag&rsqb;/
572 flag: <ref id="id" name="ID">
573
574 List only accounts that do not have the listed flags. This attribute
575 conflicts with 'show'.
576 </descrip>
577
578
579 <sect1>htmlresourcereport &lt;filename&gt;<label id="htmlresourcereport">
580 <p>
581
582 filename: <ref id="string" name="STRING">
583
584 Optional attributes:
585
586 See <ref id="htmltaskreport" name="htmltaskresport">
587
588
589 <sect1>htmltaskreport &lt;filename&gt;<label id="htmltaskreport">
590 <p>
591
592 filename: <ref id="string" name="STRING">
593
594 Optional attributes:
595
596 <descrip>
597 <tag/columns &lt;colid&gt;&lsqb,&lt;colid&gt;&rsqb/
598 colid: <ref id="id" name="ID">
599
600 Specifies which columns should be included in the task report. The
601 following values for colid are available:
602
603 <descrip>
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
623 </descrip>
624
625 <tag/start &lt;day&gt;/
626 day: <ref id="date" name="DATE">
627
628 The start date for the calender view.
629
630 <tag/end &lt;day&gt;/
631 day: <ref id="date" name="DATE">
632
633 The end date for the calender view.
634
635 <tag/headline &lt;text&gt;/
636 text: <ref id="string" name="STRING">
637
638 Defines the headline used for the report. The headline is printed on
639 top of the page and with a larger font.
640
641 <tag/caption &lt;text&gt;/
642 text: <ref id="string" name="STRING">
643
644 Defines the caption used for the report. The caption is printed right
645 above the task list.
646
647 <tag/sorttasks &lt;criteria&gt;/
648
649 criteria: <ref id="sortingcriteria" name="SORTINGCRITERIA">
650
651 The sorting criteria specifies how the tasks in the generated report
652 will be sorted. Possible values are:
653
654 <descrip>
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.
659
660 <tag/tree/Show nesting with indentation
661
662 <tag/indexup/Last index on top
663
664 <tag/indexdown/First index on top
665
666 <tag/idup/Last <ref id="id" name="ID"> on top
667
668 <tag/iddown/First <ref id="id" name="ID"> on top
669
670 <tag/fullnameup/Last full name on top
671
672 <tag/fullnamedown/First full name on top
673
674 <tag/nameup/Last name on top
675
676 <tag/namedown/First name on top
677
678 <tag/startup/Latest start date on top
679
680 <tag/startdown/Earliest start date on top
681
682 <tag/endup/Latest end date on top
683
684 <tag/enddown/Earliest end date on top
685
686 <tag/priorityup/Lowest priority on top
687
688 <tag/prioritydown/Highest priority on top
689
690 <tag/responsibleup/Last name of responsible on top
691
692 <tag/responsibledown/First name of responsible on top
693
694 <tag/mineffortup/Smallest minimal effort on top
695
696 <tag/mineffortdown/Largest minimal effort on top
697
698 <tag/maxeffortup/Smallest maximum effort on top
699
700 <tag/maxeffortdown/Largest maximum effort on top
701
702 <tag/rateup/Smallest rate on top
703
704 <tag/ratedown/Largest rate on top
705
706 <tag/kotrusidup/Last kotrusid on top
707
708 <tag/kotrusiddown/First kotrusid on top
709 </descrip>
710
711 <tag/showActual/
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.
714
715 <tag/hidetask &lt;expression&gt;/
716 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
717
718 List only tasks that do not have flags meeting the described logical
719 expression.
720
721 <tag/rolluptask &lt;expression&gt;/
722 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
723
724 Do not show subtasks of tasks with flags meeting the described
725 logical expression.
726
727 <tag/hideresource &lt;expression&gt;/
728 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
729
730 List only resources that do not have flags meeting the described logical
731 expression.
732
733 <tag/rollupresource &lt;expression&gt;/
734 expression: <ref id="logicalexpression" name="LOGICALEXPRESSION">
735
736 Do not show subresources of resources with flags meeting the
737 described logical expression.
738
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.
742 </descrip>
743
744
745 <sect1>icalreport &lt;filename&gt;<label id="icalreport">
746 <p>
747
748 filename: <ref id="string" name="STRING">
749
750 create an ical calender format output file which can be imported
751 to korganiser.
752
753
754 <sect1>include &lt;filename&gt;<label id="include">
755 <p>
756 filename: <ref id="string" name="STRING">
757
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
761 accounts.
762
763
764 <sect1>kotrusMode &lt;mode&gt;<label id="kotrusMode">
765 <p>
766
767 mode: <ref id="string" name="STRING">
768
769 sets the kotrus mode. Valid values are
770 <itemize>
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
774 </itemize>
775
776
777 <sect1>macro &lt;id&gt; &lsqb; body &rsqb;<label id="macro">
778 <p>
779 id: <ref id="id" name="ID">
780
781 The body is not optional. It must be enclosed in [ ]. Macros can be
782 declared like this:
783
784 <descrip>
785 <tag/macro foo &lsqb; This text &rsqb;/
786
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.
790
791 <tag/macro foo &lsqb; This ${1} text &rsqb;/
792
793 will expand to ' This stupid text ' if called as ${foo
794 "stupid"}. Macros may call other macros.
795 </descrip>
796
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',
799 'expr' or 'for'.
800
801
802 <sect1>maxeffort &lt;value&gt;<label id="maxeffort">
803 <p>
804 value: <ref id="real" name="REAL">
805
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.
809
810
811 <sect1>mineffort &lt;value&gt;<label id="mineffort">
812 <p>
813 value: <ref id="real" name="REAL">
814
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
818 otherwise.
819
820
821 <sect1>priority &lt;value&gt;<label id="priority">
822 <p>
823 value: <ref id="integer" name="INTEGER">
824
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.
828
829
830 <sect1>project &lt;id&gt; &lt;name&gt; &lt;version&gt; &lt;start&gt;
831 &lt;end&gt;<label id="project">
832 <p>
833
834 id: <ref id="id" name="ID"> 
835
836 name: <ref id="string" name="STRING"> 
837
838 version: <ref id="string" name="STRING">
839
840 start: <ref id="date" name="DATE">
841
842 end: <ref id="date" name="DATE">
843
844 Optional attributes: none
845
846 The project property is mandatory and should be the first property in
847 a project file. &lt;id&gt; is the default project <ref id="id" name="ID"> used to register
848 resource allocations in a global database. &lt;name&gt; is the name of the
849 project. &lt;version&gt; is the version of the project file. Typically this
850 is the CVS ID. &lt;start&gt; and &lt;end&gt; 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.
853
854
855 <sect1>rate &lt;money&gt;<label id="rate">
856 <p>
857 money: <ref id="real" name="REAL">
858
859 The default daily rate for using a resource full-time. This value will
860 be used for all subsequent resource declarations unless specified
861 otherwise.
862
863
864 <sect1>resource &lt;id&gt; &lt;name&gt;<label id="resource">
865 <p>
866
867 id: <ref id="id" name="ID">
868
869 name: <ref id="string" name="STRING">
870
871 Optional attributes:
872
873 <descrip>
874 <tag/resource &lt;id&gt; &lt;name&gt;/
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 &lt;value&gt;/
880 value: <ref id="real" name="REAL">
881
882 The daily minimum effort for a resource. Resources that are
883 used less than this value will be marked in the report.
884
885 <tag/maxeffort &lt;value&gt;/
886 value: <ref id="real" name="REAL">
887
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.
891
892 <tag/efficiency &lt;value&gt;/
893 value: <ref id="real" name="REAL">
894
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.
897
898 <tag/rate &lt;value&gt;/
899 value: <ref id="real" name="REAL">
900
901 The daily costs of the resource.
902
903 <tag/kotrusid &lt;id&gt;/
904 id: <ref id="string" name="STRING">
905
906 The KoTrus <ref id="id" name="ID"> of the resource (e-mail address).
907
908 <tag/vacation &lt;from&gt; &lsqb;- &lt;to&gt;&rsqb;/
909 from: <ref id="date" name="DATE">
910
911 to: <ref id="date" name="DATE">
912
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.
915
916 <tag/workinghours &lt;weekday&gt; &lt;from&gt; - &lt;to&gt;&lsqb;,&lt;from&gt;-&lt;to&gt;&rsqb;/
917 weekday: <ref id="weekday" name="WEEKDAY">
918
919 from: <ref id="time" name="TIME">
920
921 to: <ref id="time" name="TIME">
922
923 Sets the working hours to the specified intervals. If no hours are
924 specified for a day, the global definitions are used.
925
926 <tag/shift &lt;id&gt; &lt;from&gt; - &lt;to&gt;/
927 id: <ref id="id" name="ID">
928
929 from: <ref id="date" name="DATE">
930
931 to: <ref id="date" name="DATE">
932
933 Assigns the resource to a defined shift during the specified
934 interval. Multiple shifts can be defined, but shift invervals may not
935 overlap.
936 </descrip>
937
938
939 <sect1>shift &lt;id&gt; &lt;name&gt;<label id="shift">
940 <p>
941 id: <ref id="id" name="ID">
942
943 name: <ref id="string" name="STRING">
944
945 The following optional parameter may be used. At least one optional
946 parameter must be specified.
947
948 <descrip>
949 <tag/shift &lt;id&gt; &lt;name&gt;/
950 id: <ref id="id" name="ID">
951
952 name: <ref id="string" name="STRING">
953
954 Shifts may be nested. A nested shift inherits the attributes of the
955 enclosing shift.
956
957 <tag/workinghours &lt;weekday&gt; &lt;from&gt;-&lt;to&gt;&lsqb;,&lt;from&gt;-&lt;to&gt;&rsqb/
958 weekday: <ref id="weekday" name="WEEKDAY">
959
960 from: <ref id="time" name="TIME">
961
962 to: <ref id="time" name="TIME">
963
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.
968
969 </descrip>
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.
973 Resources.
974
975
976 <sect1>supplement &lt;task|resource&gt; &lt;ID&gt;<label id="completion">
977 <p>
978 ID: <ref id="id">
979 <p>
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.
984
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.
989
990
991 <sect1>task &lt;id&gt; &lt;name&gt;<label id="task">
992 <p>
993
994 id: <ref id="id" name="ID">
995
996 name: <ref id="string" name="STRING">
997
998 Optional attributes:
999
1000 <descrip>
1001 <tag/task &lt;id&gt; &lt;name&gt;/
1002 id: <ref id="id" name="ID">
1003
1004 name: <ref id="string" name="STRING">
1005
1006 A task may have subtasks. If subtasks are specified, many of the
1007 other attributes are illegal. See attributes for details.
1008
1009 <tag/note &lt;text&gt;/
1010 text: <ref id="string" name="STRING">
1011
1012 A longer description of the task.
1013
1014 <tag/start &lt;date&gt;/
1015 date: <ref id="date" name="DATE">
1016
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.
1021
1022 <tag/end &lt;date&gt;/
1023 date: <ref id="date" name="DATE">
1024
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
1028 policy to ALAP.
1029
1030 <tag/minstart &lt;date&gt;/
1031 date: <ref id="date" name="DATE">
1032
1033 The earliest desired start date for the task. If this date cannot
1034 be met, the task is marked in the task list.
1035
1036 This attribute is inherited by subtasks.
1037
1038 <tag/maxstart &lt;date&gt;/
1039 date: <ref id="date" name="DATE">
1040
1041 The latest desired start date for the task. If this date cannot be
1042 met, the task is marked in the task list.
1043
1044 This attribute is inherited by subtasks.
1045
1046 <tag/actualstart &lt;date&gt;/
1047 date: <ref id="date" name="DATE">
1048
1049 The actual start date of the task. This can be specified to compare the planned 
1050 and actual dates.
1051
1052 <tag/minend &lt;date&gt;/
1053 date: <ref id="date" name="DATE">
1054
1055 The earliest desired end date for the task. If this date cannot be
1056 met, the task is marked in the task list.
1057
1058 This attribute is inherited by subtasks.
1059
1060 <tag/maxend &lt;date&gt;/
1061 date: <ref id="date" name="DATE">
1062
1063 The latest desired end date for the task. If this date cannot be
1064 met, the task is marked in the task list.
1065
1066 This attribute is inherited by subtasks.
1067
1068 <tag/actualend &lt;date&gt;/
1069 date: <ref id="date" name="DATE">
1070
1071 The actual end date of the task. This can be specified to compare the planned 
1072 and actual dates.
1073
1074 <tag/length &lt;number&gt; &lt;unit&gt;/
1075 number: <ref id="real" name="REAL">
1076
1077 unit: <ref id="unit" name="UNIT">
1078
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.
1081
1082 Tasks may not have subtasks if this attribute is used.
1083
1084 <tag/duration &lt;number&gt; &lt;unit&gt;/
1085 number: <ref id="real" name="REAL">
1086
1087 unit: <ref id="unit" name="UNIT">
1088
1089 Specifies the time the task occupies the resources. This is calender
1090 time, not working time. 7d means one week.
1091
1092 Tasks may not have subtasks if this attribute is used.
1093
1094 <tag/effort &lt;number&gt; &lt;unit&gt;/
1095 number: <ref id="real" name="REAL">
1096
1097 unit: <ref id="unit" name="UNIT">
1098
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.
1101
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.
1106
1107 Tasks may not have subtasks if this attribute is used.
1108
1109 <tag/complete &lt;percent&gt;/
1110 percent: <ref id="integer" name="INTEGER">
1111
1112 Specifies what percentage of the task is already completed. This can be
1113 useful for project tracking.
1114
1115 Tasks may not have subtasks if this attribute is used.
1116
1117 <tag/allocate &lt;id&gt;/
1118 id: <ref id="id" name="ID">
1119
1120 Optional attributes:
1121
1122 <descrip>
1123 <tag/load &lt;days&gt;/
1124 days: <ref id="real" name="REAL">
1125
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.
1129
1130 <tag/alternative &lt;id&gt;&lsqb,&lt;id&gt;&rsqb;/
1131 id: <ref id="id" name="ID">
1132
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.
1136
1137 <tag/persistent/
1138
1139 If set, the first available resource out of the specified resource and
1140 its specified alternatives will be used for the entire task.
1141 </descrip>
1142
1143
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.
1150
1151 Tasks may not have subtasks if this attribute is used.
1152
1153 <tag/scheduling &lt;policy&gt;/
1154 policy: <ref id="id" name="ID">
1155
1156 This specifies the scheduling policy for the task. Possible values are:
1157
1158 <descrip>
1159 <tag/ASAP/As soon as possible. The task is scheduled to happen as early as
1160 possible.
1161
1162 <tag/ALAP/As late as possible. The task is scheduled to happen as late as
1163 possible.
1164 </descrip>
1165
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
1169 effective policy.
1170
1171 <tag/depends &lt;id&gt;&lsqb,&lt;id&gt;&rsqb;/
1172 id: GLOBAL_<ref id="id" name="ID">
1173
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
1179 dots.
1180
1181 Example:
1182 <tscreen><verb>
1183 task foo1 {
1184    task foo2 { start 2002-12-04 }
1185    task foo3 { depends !foo2 }
1186 }
1187 task bar { depends foo1.foo2 }
1188 </verb></tscreen>
1189
1190 By using the 'depends' attribute, the scheduling policy is
1191 automatically set to ASAP. If 'depends' and 'preceeds' are used, the
1192 last policy counts.
1193
1194 <tag/preceeds &lt;id&gt;&lsqb;,&lt;id&gt;&rsqb;/
1195 id: GLOBAL_<ref id="id" name="ID">
1196
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.
1200
1201 By using the 'preceeds' attribute, the scheduling policy is
1202 automatically set to ALAP. If 'depends' and 'preceeds' are used, the
1203 last policy counts.
1204
1205 <tag/flags &lt;id&gt;&lsqb;,&lt;id&gt;&rsqb;/
1206 id: <ref id="id" name="ID">
1207
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'.
1210
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 
1213 are NOT inherited.
1214
1215 <tag/responsible &lt;id&gt;/
1216 id: <ref id="id" name="ID">
1217
1218 The ID of the resource that is responsible for this task.
1219
1220 This attribute is inherited by subtasks if specified prior to the
1221 definition of the subtask.
1222
1223 <tag/priority &lt;value&gt;/
1224 value: <ref id="integer" name="INTEGER">
1225
1226 Specifies a priority between 1 and 1000. A task with higher priority
1227 is more likely to get the requested resources.
1228
1229 This attribute is inherited by subtasks if specified prior to the
1230 definition of the subtask.
1231
1232 <tag/account &lt;id&gt;/
1233 id: <ref id="id" name="ID">
1234
1235 Specifies the account to which all money associated with this task will be
1236 credited.
1237
1238 This attribute is inherited by subtasks if specified prior to the
1239 definition of the subtask.
1240
1241 <tag/startcredit &lt;amount&gt;/
1242 amount: <ref id="real" name="REAL">
1243
1244 Specifies an amount that is credited to the account specified by the
1245 'account' property at the moment the tasks starts.
1246
1247 <tag/endcredit &lt;amount&gt;/
1248 amount: <ref id="real" name="REAL">
1249
1250 Specifies an amount that is credited to the account specified by the
1251 'account' property at the moment the tasks ends.
1252 </descrip>
1253
1254 Tasks may be nested and some attributes are inherited by the subtasks.
1255
1256
1257 <sect1>timingresolution &lt;value&gt; &lt;unit&gt;<label id="timingresolution">
1258 <p>
1259 value: INTERGER
1260
1261 unit: <ref id="unit" name="UNIT">
1262
1263 Sets the minimum timing resolution. The smaller the value, the longer
1264 the schedulings process requires. The default is 1 hour. The smallest
1265 value is 5 min.
1266
1267
1268 <sect1>vacation name &lt;start&gt; &lsqb;- &lt;end&gt;&rsqb;<label id="vacationname">
1269 <p>
1270 name: <ref id="string" name="STRING">
1271
1272 start: <ref id="date" name="DATE">
1273
1274 end: <ref id="date" name="DATE">
1275
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.
1279
1280
1281 <sect1>workinghours &lt;weekday&gt; &lt;from&gt;-&lt;to&gt;&lsqb;,&lt;from&gt;-&lt;to&gt;&rsqb;<label id="hours">
1282 <p>
1283 weekday: <ref id="weekday" name="WEEKDAY">
1284
1285 from: <ref id="time" name="TIME">
1286
1287 to: <ref id="time" name="TIME">
1288
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.
1292
1293
1294 <sect1>workinghoursperday &lt;value&gt;<label id="workinghoursperday">
1295 <p>
1296 value: <ref id="integer" name="INTEGER">
1297
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.
1303
1304
1305 <sect1>xmltaskreport &lt;filename&gt;<label id="xmltaskreport">
1306 <p>
1307
1308 filename: <ref id="string" name="STRING">
1309
1310 create a xml task report to the given file. Note that this is still
1311 experimental. The format might change in future releases.
1312
1313
1314 <sect>The Example: Accounting Software<label id="example">
1315 <p>
1316
1317 <tscreen><verb>
1318 project fibu "Accounting Software" "1.0" 2002-01-16 2002-06-30
1319
1320 now 2002-02-17
1321
1322 # The daily rate of all resources
1323 rate 310.0
1324 currency "EUR"
1325
1326 # This is one way to form teams
1327 macro allocate_developers [
1328   allocate dev1
1329   allocate dev2 { load 0.5 }
1330   allocate dev3
1331 ]
1332
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 }
1337 }
1338 resource misc "The others" {
1339   resource test "Peter Murphy" { maxeffort 0.8 rate 240.0 }
1340   resource doc "Dim Sung"
1341 }
1342
1343 account dev "Development" cost {}
1344 account doc "Dokumentation" cost {}
1345 account rev "Payments" revenue {}
1346
1347 task AcSo "Accounting Software" {
1348
1349   account dev
1350
1351   task spec "Spezification" {
1352     effort 20d
1353     ${allocate_developers}
1354     depends !deliveries.start
1355   }
1356
1357   task software "Software development" {
1358
1359     priority 1000
1360
1361     task database "Database coupling" {
1362       effort 20d
1363       depends !!spec
1364       allocate dev1
1365       allocate dev2
1366     }
1367
1368     task gui "Graphical user interface" {
1369       effort 35d
1370       actualeffort 40d
1371       depends !database, !backend
1372       allocate dev2
1373       allocate dev3
1374     }
1375
1376     task backend "Backend functions" {
1377       effort 30d
1378       complete 100
1379       depends !database, !!spec
1380       allocate dev1
1381       allocate dev2
1382     }
1383     
1384   }
1385
1386   task test "Software testing" {
1387
1388     task alpha "Alpha test" {
1389       effort 1w
1390       depends !!software
1391       allocate test
1392       allocate dev2
1393     }
1394
1395     task beta "Beta test" {
1396       effort 4w
1397       depends !alpha
1398       allocate test
1399       allocate dev1
1400     }
1401   }
1402
1403   task manual "Manual" {
1404     effort 10w
1405     depends !deliveries.start
1406     allocate doc
1407     allocate dev3
1408     account doc
1409   }
1410
1411   task deliveries "Ship to customer" {
1412
1413     account rev
1414
1415     task start "Projectstart" {
1416       milestone
1417       start 2002-01-16
1418       actualstart 2002-01-20
1419       startcredit 30000.0
1420     }
1421
1422     task beta "Betaversion" {
1423       milestone
1424       depends !!test.alpha
1425       startcredit 10000.0
1426     }
1427
1428     task done "Ship product to customer" {
1429       milestone
1430       maxend 2002-04-17
1431       depends !!test.beta, !!manual
1432       startcredit 20000.0
1433     }
1434   }
1435 }
1436
1437 htmltaskreport "tasks.html" name,start,end,resources,weekly
1438 </verb></tscreen>
1439
1440 <sect>Questions and Answers<p>
1441
1442 <sect>Copyright<p>
1443
1444 TaskJuggler Copyright 2001 Chris Schlaeger , cs@suse.de
1445
1446
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. 
1450
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.
1455
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.
1459
1460 <p>
1461 </article>