All TaskJuggler project files should start with the project property and must contain at least one task definition. To visualize the results of the scheduling process, at least one of the reports should be specified.

account copyright csvaccountreport csvresourcereport csvtaskreport export flags_declare htmlaccountreport htmlresourcereport htmlstatusreport htmltaskreport htmlmonthlycalendar htmlweeklycalendar include macro maxeffort limits priority projectid projectids project rate resource shift supplement task vacation_global xmlreport &example_simple;

Declares an account. Accounts can be used to calculate costs of tasks or the whole project. Account declaration may be nested, but only the top level accounts may have a type attribute specified. An account that has sub-accounts may not have a credit. sub-accounts inherit this type.

Each account must have a unique ID.

The type may be `cost` or `revenue`.

account credit csvaccountreport htmlaccountreport &example_account;

All amounts associated with the task will be credited to the specified account. The account must not be an account group.

account &example_account;

If this attribute is specified the values in the calendar columns are accumulated over the reported interval.

&example_account;

If this attribute is specified, redefinitions of task, resources or accounts are not flagged as errors. The primary use of this attribute is for projects that are created by merging sub projects which are again the result of sub project merging. In certain situations enclosing tasks, accounts or resources can be included in more than one sub project. This attribute then avoids the error message which is in most other cases a real user error. So use this feature with care as real errors might go undetected.

In case attributes of the same property must be specified in two different locations the supplement construct is the recommended way to do this.

Specify which resources should be allocated to the task. The optional attributes provide numerous ways to control which resource is used and when exactly it will be assigned to the task. Shifts and limits can be used to restrict the allocation to certain time intervals or to limit them to a certain maximum per time period.

alternative limits mandatory persistent purge select shift_selection effort &example_allocate;

A list of alternative resources for an allocation. There is no difference between the allocated resource and its alternatives. If no selection criteria is given, TaskJuggler picks the resource that it finds most appropriate.

select &example_alternative;

Specifies the contents of the Gantt chart like bars in HTML calendar columns. The default is to show load values.

See table below for possible values.

columns showprojectids

- `empty`
- Do not show any values on calendar bars.
- `load`
- Show task or resource load on calendar bars.

Disables the projection mode for the scenario. This is the default for the top-level scenario. In baseline mode it is assumed that no bookings are provided for any task.

projection

The booking attribute can be used to report completed work. This can be part of the necessary effort or the whole effort. When the scenario is scheduled in projection mode, TaskJuggler assumes that only the work reported with bookings has been done up to now. It then schedules a plan for the still missing effort.

This attribute is also used within export reports to describe the details of a scheduled project.

The sloppy attribute can be used when you want to skip non-working time or other allocations automatically. If it's not given, all bookings must only cover working time for the resource.

overtime sloppy complete projection sloppy_projection strict &example_booking;

Specifies the caption used for a report table.

complete copyright headline &example_htmltaskreport;

Specifies an alternative text that is used for all cells of the column. Usually such a text contains a runtime macro, otherwise all cells of the column will have the same fixed value.

cellurl &example_columns;

Specifies an URL that is attached to the cell contents of the cells of the column in HTML reports.

celltext &example_columns;

Specifies which columns shall be included in a report.

All columns support macro expansion. Contrary to the normal macro expansion, these macros are expanded during the report generation. So the value of the macro is being changed after each table cell or table line. Consequently only build in macros can be used. To protect the macro calls against expansion during the initial file processing, the report macros must be prefixed with an additional `$`.

See table below for possible values.

celltext cellurl hidecelltext hidecellurl subtitle subtitleurl title titleurl

- `accounts`
- This columns lists the account that is assigned to the respective task. It is called 'accounts' because later versions will have support for multiple accounts.
- `chart`
- Use this column to get Gantt and resource charts. It's only supported by the interactive reports in the GUI.
- `completed`
- The percentage the task has been completed already. This is either the value specified by complete or a value computed according to the current date (or the date specified by now) and the length, duration or effort.
- `completedeffort`
- The effort of a task that has already been completed.
- `cost`
- The accumulated costs of the task and its sub tasks
- `criticalness`
- The criticalness of the task. It is a measure for the probability that an effort task gets the requested resources early.
- `daily`
- A day-by-day calendar view of the tasks
- `depends`
- The task index of the tasks on which this task depends
- `duration`
- The duration of the task
- `efficiency`
- The efficiency of the resource. It's a measurement of how much the resource can contribute to the workload of tasks.
- `effort`
- The effort put into the task
- `end`
- The end date of a task
- `endbuffer`
- The percentage of the endbuffer
- `endbufferstart`
- The start time of the end buffer
- `flags`
- The list of flags assigned to the task or resource
- `follows`
- The task index of the tasks that depend on this task
- `freeload`
- The workload of the resource that has not been allocated.
- `hierarchindex`
- The hierarchical index of a task. The index is calculated from the hierarchical structure of the list as well as the start and end dates.
- `hierarchno`
- The hierarchical number of a task. It is based on the order of declaration.
- `id`
- The global ID of a task
- `index`
- The index of a task. The index is calculated from the hierarchical structure of the list as well as the start and end dates.
- `maxeffort`
- The maximum daily load wanted for the resource
- `maxend`
- The latest desired end date
- `maxstart`
- The latest desired start date
- `mineffort`
- The minimum daily load wanted for the resource
- `minend`
- The earliest desired end date
- `minstart`
- The earliest desired start date
- `monthly`
- A month-by-month calendar view of the tasks
- `name`
- The name of a task, resource, or account
- `no`
- The task index in the list. It starts with 1 and increases for every listed item by 1.
- `note`
- The description of the task
- `pathcriticalness`
- The overall criticalness of the task. It is a measure for the probability that an effort task gets scheduled as early as possible. The tasks of the most critical path have the highest path criticalness.
- `priority`
- The scheduling priority
- `profit`
- The accumulated profit of the task and its sub tasks
- `projectid`
- The project ID of the task
- `projectids`
- The project IDs of the projects a resource is allocated to
- `quarterly`
- A quarter-by-quarter calendar view of the tasks
- `rate`
- The daily rate of the resource
- `reference`
- A reference to a URL that contains further information.
- `remainingeffort`
- The effort of a task that still needs to be done to complete the task..
- `resources`
- The names of the used resources
- `responsibilities`
- A list of all tasks indices for which a resource is responsible
- `responsible`
- The name of the resource responsible for a task
- `revenue`
- The accumulated revenue of the task and its sub tasks
- `scenario`
- The name of the scenario. This column is helpful when multiple scenarios are shown in the table. See also scenarios.
- `schedule`
- A detailed schedule of the allocations for the resource.
- `scheduling`
- The scheduling direction of the task. ASAP (As Soon As Possible) tasks are scheduled from start to end, ALAP (As Late As Possible) are scheduled from end to start.
- `seqno`
- The task index in the order of declaration. Each time a task declaration is completed, the sequence number is increased by 1.
- `start`
- The start date of a task
- `startbuffer`
- The percentage of the start buffer
- `startbufferend`
- The end time of the start buffer
- `status`
- The current status of the task. This is derived from the current date or the date specified by now and the degree of completion. The degree of completion is either computed or has been specified by complete.
- `statusnote`
- Some comment about the current status of the task.
- `total`
- Total accumulated values
- `utilization`
- The ratio between the allocated work load of the resource and it's overall available work load.
- `weekly`
- A week-by-week calendar view of the tasks
- `yearly`
- A year-by-year calendar view of the tasks

The following macros are supported for normal table cells:

- `$${0}`
- This is the original value of the table cell. This macro is useful if the user would like to extend the cell text with a fixed string.
- `$${accountid}`
- The ID of the account.
- `$${resourceid}`
- The ID of the resource.
- `$${taskid}`
- the id of the task.

Additionally the original contents of other cells of the same report line can be accessed by the column ID. The following columns are supported:

`index, no, hierarchindex, hierarchno, id, name`

For the title or sub title of the calendar columns (`daily, weekly, monthly, quarterly, yearly`) the following macros are supported:

`$${day}, $${month}, $${week}, $${quarter}, $${year}`.

&example_columns;

Specifies what percentage of the task is already completed. This can be useful for project tracking. Reports with calendar elements may show the completed part of the task in a different color. The completion percentage has no impact on the scheduler. It's meant for documentation purposes only.

Tasks may not have subtasks if this attribute is used.

The value must be between 0 and 100.

&example_complete; booking

Adds a copyright notice to all subsequently defined reports. This notice may contain any text. The notice is added at the bottom of the report.

headline caption &example_htmltaskreport;

Credits the specified amount to the account at the specified date. The description should contain some information about the reason for the transaction.

&example_account;

The report lists all specified account values as a comma separated list. This is useful to export TaskJuggler data to Office Suites like OpenOffice.org or KOffice.

accumulate columns end_report rollupaccount hideaccount period_report scenario_report separator sortaccounts start_report htmlaccountreport

The report lists all specified resource values as a comma separated list. This is useful to export TaskJuggler data to Office Suites like OpenOffice.org or KOffice.

columns end_report rollupresource hideresource loadunit period_report scenario_report separator shorttimeformat sortresources start_report timeformat htmlresourcereport resourcereport

The report lists all specified task values as a comma separated list. This is useful to export TaskJuggler data to Office Suites like OpenOffice.org or KOffice.

columns end_report rolluptask hidetask loadunit period_report scenario_report separator shorttimeformat sorttasks start_report taskroot timeformat htmltaskreport taskreport

The default currency unit.

currencyformat &example_account;

These values specify the default format used for all currency values. The `negativeprefix` and `negativesuffix` strings enclose negative currency values. The `thousandseparator` can be used to make large numbers more readable. The `fractionseparator` separates the fractional part from the rest. `fractiondigits` specifies how many fractional digits should be shown at a maximum.

currency &example_numberformat;

Sets the daily limit of a resource usage or a resource allocation to a task.

monthlymax weeklymax &example_limits;

Set the average number of working hours per day. This is used as the base to convert working hours into working days. This affects for example the length task attribute. The default value is 8 hours and should work for most Western countries. The value you specify should match the settings you specified for workinghours.

yearlyworkingdays &example_project;

If set, every container that has no subtask visible will be drawn as a regular task. The default behaviour is to draw containers as containers even if all their subtasks are hidden.

Specifies that the task cannot start before the task with the specified IDs have been finished. If multiple IDs are specified, they must be separated by commas. IDs must be either global or relative. A relative ID starts with a number of '!'. Each '!' moves the scope to the parent task. Global IDs do not contain '!', but have IDs separated by dots.

Each task ID can have optional attributes enclosed in braces.

By using the 'depends' attribute, the scheduling policy is automatically set to `asap`. If both `depends` and `precedes` are used, the last policy counts.

gapduration gaplength scheduling precedes &example_depends;

Disables the scenario for scheduling.

&example_scenario; enabled

Specifies the time the task occupies the resources. This is calendar time, not working time. 7d means one week. If resources are specified they are allocated when available. Availability of resources has no impact on the duration of the task. It will always be the specified duration.

Tasks may not have subtasks if this attribute is used.

effort length &example_durations;

The efficiency of a resource can be used for two purposes. First you can use it as a crude way to model a team. A team of 5 people should have an efficiency of 5.0. Keep in mind that you cannot track the member of the team individually if you use this feature. The other use is to model performance variations between your resources.

All resources that do not contribute effort to the task, should have an efficiency of 0.0.

load &example_efficiency;

Specifies the effort needed to complete the task. An effort of 4d can be done with 2 full-time resources in 2 days. The task will not finish before the resources have contributed the specified effort. So the duration of the task will depend on the availability of the resources.

WARNING: In almost all real world projects effort is not the product of time and resources. This is only true if the task can be partitioned without adding any overhead. For more information about this read "The Mythical Man-Month" by Frederick P. Brooks, Jr.

Tasks may not have subtasks if this attribute is used.

duration length &example_durations;

Enable the scenario for scheduling. This is the default for the top-level scenario.

disabled

Specifies the end date of the report. In task reports only tasks that start before this end date are listed.

period_report start_report &example_export;

The end date of the task. When specified for the top-level (default) scenario this attributes also implicitly sets the scheduling policy of the tasks to `alap`.

period start maxend minend scheduling endbuffer &example_durations;

Specifies how much slack time you expect to have at the end of the task. This has no impact on the scheduling of the process. This information is for documentation purposes only.

Percent slack of the overall effort, duration or length of the task.

duration effort length startbuffer &example_buffer;

Specifies an amount that is credited to the account specified by the account property at the moment the tasks ends.

startcredit &example_account;

The export report looks like a regular TaskJuggler file but contains fixed start and end dates for all tasks. The tasks only have start and end times, their description and their project id listed. No other attributes are exported unless they are requested using the taskattributes attribute. The contents also depends on the extension of the file name. If the file name ends with `.tjp` a complete project with header, resource and shift definitions is generated. In case it ends with `.tji` only the tasks and resource allocations are exported.

If specified the resource usage for the tasks is reported as well. But only those allocations are listed that belong to tasks listed in the same export report.

The export report can be used to share certain tasks or milestones with other projects. When an export report is included the project IDs of the included tasks must be declared first with the project id property.

end_report hideresource hidetask properties rollupresource rolluptask period_report scenarios start_report taskattributes taskroot include &example_export;

Often it is desirable to collect more information in the project file than is necessary for task scheduling and resource allocation. To add such information to tasks, resources or accounts the user can extend these properties with user-defined attributes. The new attributes can be `text` or `reference` attributes. Optionally the user can specify if the attribute value should be inherited from the enclosing property.

Possible values are `task`, `resource` or `account`

inherit

<type> <id> <name>

- type:
- Specifies the type of the user-defined attribute. `text` is a simple text attribute. `reference` is an URL to another document.
- id:
- An user-defined ID that is unique within the used-defined task attributes. To avoid conflicts with future built-in attributes, all user defined attributes must start with a capital letter.
- name:
- A short description of the attribute. It will be used as default column header in reports.

&example_extend;

Attach a set of flags. The flags can be used in logical expressions to filter properties from the reports.

flags_declare &example_flags;

Declare a set of flags for later use.

flags &example_flags;

Specifies the minimum required gap between the end of a preceding task and the start of this task, or the start of a following task and the end of this task. This is calendar time, not working time. 7d means one week.

duration gaplength &example_gap;

Specifies the minimum required gap between the end of a preceding task and the start of this task, or the start of a following task and the end of this task. This is working time, not calendar time. 7d means 7 working days, not one week. Whether a day is considered a working day or not depends on the defined working hours and global vacations.

gapduration length &example_gap;

Specifies the headline for a report.

caption copyright &example_htmltaskreport;

Do not show accounts that match the specified logical expression. If the report is sorted in tree mode (default) then enclosing accounts are listed even if the expression matches the account.

If the expression is true, the cell will be empty.

hidecellurl &example_columns;

If the expression is true, no URL will be attached to the cell contents.

hidecelltext &example_columns;

If this flag is present a user defined attribute gets inherited by child properties when specified for a parent.

Do not show resources that match the specified logical expression. If the report is sorted in tree mode (default) then enclosing resources are listed even if the expression matches the resource.

&example_htmltaskreport;

Do not show tasks that match the specified logical expression. If the report is sorted in tree mode (default) then enclosing tasks are listed even if the expression matches the task.

&example_guireport;

The report lists all specified account values as a HTML page.

accumulate caption columns end_report headline hideaccount period_report rawhead rawstylesheet rawtail rollupaccount scenarios shorttimeformat sortaccounts start_report timeformat csvaccountreport htmlresourcereport htmltaskreport &example_account;

Generates a calendar like HTML report with one column for each month.

barlabels caption columns end_report headline hideresource hidetask loadunit period_report rawhead rawstylesheet rawtail rollupresource rolluptask scenarios shorttimeformat showprojectids sortresources sorttasks start_report taskroot timeformat weekdays htmlaccountreport htmlresourcereport htmltaskreport htmlstatusreport htmlweeklycalendar

The report lists all resources and their respective values as a HTML page. The tasks that the resources are allocated to can be listed as well.

barlabels caption columns end_report headline hideresource hidetask loadunit period_report rawhead rawstylesheet rawtail rollupresource rolluptask scenarios shorttimeformat showprojectids sortresources sorttasks start_report taskroot timeformat csvresourcereport htmlaccountreport htmltaskreport resourcereport

Generates a HTML status report. The report consists of 4 tables: Overdue tasks, ongoing tasks, finished tasks and upcoming tasks. The default reporting interval is 1 week.

headline caption rawhead rawstylesheet rawtail htmlaccountreport htmlresourcereport htmltaskreport htmlmonthlycalendar htmlweeklycalendar

The report lists all tasks and their respective values as a HTML page. The resources that are allocated to the tasks can be listed as well.

barlabels caption columns end_report headline hideresource hidetask loadunit period_report rawhead rawstylesheet rawtail rollupresource rolluptask scenarios shorttimeformat showprojectids sortresources sorttasks start_report taskroot timeformat csvtaskreport htmlaccountreport htmlresourcereport taskreport

Generates a calendar like HTML report with one row for each week.

barlabels caption columns end_report headline hideresource hidetask loadunit period_report rawhead rawstylesheet rawtail resourcereport_type rollupresource rolluptask scenarios shorttimeformat showprojectids sortresources sorttasks start_report taskroot timeformat weekdays htmlaccountreport htmlmonthlycalendar htmlresourcereport htmltaskreport htmlstatusreport

Generates an ICal report according to RFC2445. This is standardized format used by many calendar applications such as KOrganizer. The filename should have a `.ics` extension.

hideresource hidetask rollupresource rolluptask scenarios &example_icalreport;

Includes the specified file name as if its contents would be written instead of the include property. The only exception is the `include` statement itself. When the included files contains other include statements or report definitions, the filenames are relative to file where they are defined in. `include` commands can be used in the project header, at global scope or between property declarations of tasks, resources, and accounts.

For technical reasons you have to supply the optional pair of curly brackets if the include is followed immediately by a macro call that is defined within the included file.

taskprefix export &example_include;

Journal entries are meant for documentation purposes. They consist of a date and a text entry. Each journal entry adds a new entry to the journal of the property.

note statusnote &example_journalentry;

Specifies the text for the URL in HTML reports. If no label is specified, the URL will be displayed. If a label has been specified, the URL will not be shown.

&example_extend;

Specifies the time the task occupies the resources. This is working time, not calendar time. 7d means 7 working days, not one week. Whether a day is considered a working day or not depends on the defined working hours and global vacations. A task with a length specification may have resource allocations. Resources are allocated when they are available. The availability has no impact on the duration of the task. A day where none of the specified resources is available is still considered a working day, if there is no global vacation or global working time defined.

Tasks may not have subtasks if this attribute is used.

duration effort &example_durations;

Specifies limits on the usage of a resource in general, or of the allocation of a resource to a task. This property replaces the less flexible properties maxeffort and load.

When applied to an allocation this limits the use of all alternative resources or group members as a whole. There has been a bug in version 2.0.x that resulted in faulty limit computation. This has been fixed with version 2.1.

dailymax weeklymax monthlymax &example_limits;

This property has been replaced by limits. The further usage of load is strongly discouraged. It will be dropped from future versions of TaskJuggler.

Specifies the daily load of a resource for an allocation. A load of 1.0 (default) means the resource is allocated for as many hours as specified by dailyworkinghours. A load of 0.5 means half that many hours. This only works if enough working hours have been specified for the particular day.

workinghours vacation_global

Specifies the unit in which loads are reported in a report.

See table below for possible values.

dailyworkinghours yearlyworkingdays

- `days`
- Show load in man or resource-days.
- `hours`
- Show load in man resource-hours.
- `longauto`
- Show load in the most appropriate unit and show long unit name.
- `minutes`
- Show load in man or resource-minutes.
- `months`
- Show load in man or resource-months.
- `shortauto`
- Show load in the most appropriate unit and show short unit name.
- `weeks`
- Show load in man or resource-weeks.
- `years`
- Show load in man or resource-years.

Defines a text fragment that can later be inserted by using the specified ID.

See the description of the `include` statement for details on how to use a macro immediately after including the file where the macro has been defined in.

The body is not optional. It must be enclosed in [ ]. Macros can be declared like this:

    macro FOO [ This text ];

If later ${FOO} is found in the project file, it is expanded to ' This text '. Macros may have arguments. Arguments are special macros with numbers as names. The number specifies the index of the argument.

    macro FOO [ This ${1} text ]

will expand to ' This stupid text ' if called as ${FOO "stupid"}. Macros may call other macros.

Macro IDs should have at least one uppercase letter as all lowercase letter IDs may be used in a later version for built-in macros like 'if', 'expr' or 'for'. Macro names can be prefixed by a question mark. In this case the macro will expand to nothing if the macro is not defined. Otherwise the undefined macro would be flagged with an error message.

    This macro call ${?foo} will expand to nothing if foo is undefined.

include

Makes a resource allocation mandatory. This means, that for each time slot only then resources are allocated when all mandatory resources are available. So either all mandatory resources can be allocated for the time slot, or no resource will be allocated.

&example_mandatory;

This property has been replaced by limits. The further usage of maxeffort is strongly discouraged. It will be dropped from future versions of TaskJuggler.

The daily maximum effort for a resource. Resources will not be scheduled to be used more than this value. A value of 1.0 means a full working day. 0.5 means half a working day.

dailyworkinghours workinghours

Specifies the maximum wanted end time of the task. The value is not used during scheduling, but is checked after all tasks have been scheduled. If the end of the task is later than the specified value, then an error is reported.

maxstart minend minstart &example_minmax;

The scheduler contains a critical path detector. Detecting a critical path requires the analysis of every possible path between 2 end tasks. The number of paths that have to be checked can grow exponentially with the number of tasks and their dependencies. By default, only 10 million paths will be checked. With this parameter the user can define how many paths should be checked. Using 0 as value will trigger an exhaustive search under all circumstances. Scheduling times of hours if not days are certainly possible for large projects.

minslackrate

Specifies the maximum wanted start time of the task. The value is not used during scheduling, but is checked after all tasks have been scheduled. If the start of the task is later than the specified value, then an error is reported.

maxend minend minstart &example_minmax;

Specifies the minimum wanted end time of the task. The value is not used during scheduling, but is checked after all tasks have been scheduled. If the end of the task is earlier than the specified value, then an error is reported.

maxend maxstart minstart &example_minmax;

Specifies the minimum percentage of slack a task path must have before it is marked as critical. A path is any list of explicitely or implicitely connected tasks measured from first task to last task. The slack is the time between start of the first task and end of the last task that is not covered by any task of the path. The default value is 5%.

Larger values in combination with a project that uses lots of inherited dependencies and long dependency pathes can result in very long scheduling times. The more slack you require, the more pathes have to be searched till the end. For larger projects an increase of 5% can turn a 10 second scheduling run into a 1 hour or more scheduling run. If you need larger slack rate values, avoid the use of inherited dependencies.

A value of 0 turns off the critical path detector.

maxpaths &example_criticalpath;

Specifies the minimum wanted start time of the task. The value is not used during scheduling, but is checked after all tasks have been scheduled. If the start of the task is earlier than the specified value, then an error is reported.

maxend maxstart minend &example_minmax;

Turns the task into a special task that has no duration. You may not specify a duration, length, effort or subtasks for a milestone task.

A task that only has a start or an end specification and no duration specification or sub tasks, will be recognized as milestone automatically.

&example_milestone;

Attach a note to the task. This is usually a more detailed specification of what the task is about.

journalentry statusnote &example_minmax;

Sets the monthly limit of a resource usage or a resource allocation to a task.

dailymax weeklymax &example_limits;

Specify the date that TaskJuggler uses for calculation as current date. If no value is specified, the current value of the system clock is used.

&example_complete;

These values specify the default format used for all numerical real values. The `negativeprefix` and `negativesuffix` strings enclose negative currency values. The `thousandseparator` can be used to make large numbers more readable. The `fractionseparator` separates the fractional part from the rest. `fractiondigits` specifies how many fractional digits should be shown at a maximum.

&example_numberformat;

This attribute enables bookings to override working hours and vacations.

Number between 0 and 2. See table below.

- `overtime 0:`
- You can only book available working hours. (Default)
- `overtime 1:`
- You can book off-hours as well.
- `overtime 2:`
- You can book normal working hours, off-hours and vacations.

&example_booking;

This property is a shortcut for setting the start and end property at the same time. In contrast to using these, it does not change the scheduling direction.

end start &example_period;

This property is a shortcut for setting the start and end property at the same time.

end_report start_report &example_period;

Specifies that once a resource is picked from the list of alternatives this resource is used for the whole task. This is useful when several alternative resources have been specified. Normally the selected resource can change after each break. A break is an interval of at least one timeslot where no resources were available.

alternative &example_persistent;

Specifies a priority between 1 and 1000. A task with higher priority is more likely to get the requested resources. Don't confuse the priority of a tasks with the importance or urgency of a task. It only increases the chances that the tasks gets the requested resources. It does not mean that the task happens earlier, though that is usually the effect you will see. It also does not have any effect on tasks that don't have any resources assigned (e.g. milestones).

This attribute is inherited by subtasks if specified prior to the definition of the subtask.

&example_priority;

Specifies that the tasks with the specified IDs cannot start before the task has been finished. If multiple IDs are specified, they must be separated by commas. IDs must be either global or relative. A relative ID starts with a number of '!'. Each '!' moves the scope to the parent task. Global IDs do not contain '!', but have IDs separated by dots.

By using the 'precedes' attribute, the scheduling policy is automatically set to `alap`. If both `depends` and `precedes` are used within a task, the last policy counts.

gapduration gaplength depends scheduling &example_precedes;

The project property is mandatory and should be the first property in a project file. <id> is the default project ID used to register resource allocations in a global database. <name> is the name of the project. <version> is the version of the project file. Typically this is the CVS ID. <start> and <end> define the time frame of the project. The end may be well after the end of the last task, but must be specified to terminate the scheduling process.

The default project ID.

The name of the project.

The version of the project file. This could be a revision number from a revision control system.

The expected interval of the project. It may be larger than necessary, but it needs to be large enough to fit all tasks.

allowredefinition currencyformat currency dailyworkinghours drawemptycontainersastasks extend include journalentry now numberformat scenario shorttimeformat timeformat timezone timingresolution weekstartsmonday weekstartssunday workinghours yearlyworkingdays &example_simple;

At global scope it declares a new project id and activates it. All subsequent task definitions will inherit this ID. If used within a task it simply assigns this project ID to the task. The tasks of a project can have different IDs. This is particularly helpful if the project is merged from several sub projects that each have their own ID.

project projectids &example_projectids;

Declares a list of project IDs.

project projectid &example_projectids;

Enables the projection mode for the scenario. All tasks will be scheduled taking the manual bookings into account. The tasks will be extended by scheduling new bookings starting with the current date until the specified effort, length or duration has been reached. In sloppy mode tasks with no bookings will be filled from the original start. In strict mode all tasks will be filled starting with the current date. No bookings will be added prior to the current date.

sloppy_projection strict baseline booking &example_booking;

This attribute determines which properties will be included in the report.

See table below for possible values.

- `all`
- Include all properties.
- `bookings`
- Include all bookings for the report interval. Only bookings for non-filtered resources will be included.
- `shifts`
- Include all shift definitions.
- `tasks`
- Include all task definitions for non-filtered tasks.
- `resources`
- Include all resource definitions for non-filtered resources.

&example_export;

This attribute can be used to purge inherited flags or allocations. Possible values for `attributeName` are `allocations` or `flags`.

Specifies the daily costs of the resource. The amount are credited to the account specified with the task that makes use of the resource.

account task &example_account;

Specifies a section of raw HTML code that will be inserted at the top of the report.

rawstylesheet rawtail

Specifies a stylesheet for HTML reports.

Specifies a section of raw HTML code that will be inserted at the bottom of the report.

rawhead rawstylesheet

A reference to an external document. If you need more than one reference, you can create your own URL placeholders.

Should be a well formed URL.

label extend &example_extend;

Task use resources to fulfil the specified efforts.

booking efficiency flags journalentry maxeffort limits rate resource shift_selection vacation_resource workinghours task &example_resource;

This report is intended for the TaskJuggler graphical user interface. The report lists all tasks and their respective values as a HTML page. The resources that are allocated to the tasks can be listed as well.

caption columns end_report headline hideresource hidetask loadunit period_report rollupresource rolluptask scenario_report shorttimeformat showprojectids sortresources sorttasks start_report timeformat csvtaskreport htmlaccountreport htmlresourcereport taskreport &example_guireport;

This attribute switches a calendar report from task report mode to resource report mode.

The ID of the resource that is responsible for this task. This value is for documentation purposes only. It's not used by the scheduler.

resource &example_responsible;

Do not show sub-accounts of accounts that match the specified logical expression.

rollupresource rolluptask

Do not show sub-resources of resources that match the specified logical expression.

rollupaccount rolluptask

Do not show sub-tasks of tasks that match the specified logical expression.

rollupaccount rollupresource

Specifies the different project scenarios. A scenario that is nested into another one inherits all inheritable values from the enclosing scenario. There can only be one top-level scenario. It is usually called `plan` scenario. By default this scenario is pre-defined but can be overwritten with any other scenario. In this documenation each attribute is listed as scenario specific or not. A scenario specific attribute can be overwritten in a child scenario thereby creating a new, slightly different variant of the parent scenario. This can be helpful to do plan/actual comparisons if what-if-anlysises.

By using bookings and enabling the projection mode you can capture the progress of your project and constantly get updated project plans for the future work.

baseline disabled enabled maxpaths minslackrate projection scenario scenarios &example_scenario;

ID of the scenario that should be included in the report.

The ID of the scenario.

scenario

List of scenarios that should be included in the report.

The ID of the scenario.

scenario

This is mostly for internal use. It specifies that the task can be ignored for scheduling in the scenario.

Specifies the scheduling policy for the task. A task can be scheduled from start to end (As Soon As Possible, `asap`) or from end to start (As Late As Possible, `alap`).

A task can be scheduled from start to end (ASAP mode) when it has a hard (start) or soft (depends) criteria for the start time. A task can be scheduled from end to start (ALAP mode) when it has a hard (end) or soft (precedes) criteria for the end time.

Some task attributes set the scheduling policy implicitly. This attribute can be used to explicitly set the scheduling policy of the task to a certain direction. To avoid it being overwritten again by an implicit attribute this attribute should always be the last attribute of the task.

A random mixture of ASAP and ALAP tasks can have unexpected side effects on the scheduling of the project. It increases significantly the scheduling complexity and results in much longer scheduling times. Especially in projects with many hundreds of tasks the scheduling time of a project with a mixture of ASAP and ALAP times can be 2 to 10 times longer. When the projects contains chains of ALAP and ASAP tasks the tasks further down the dependency chain will be served much later than other non-chained task even when they have a much higher priority. This can result in situations where high priority tasks do not get their resources even though the parallel competing tasks have a much lower priority.

As a general rule, try to avoid ALAP tasks whenever possible. Have a close eye on tasks that have been switched implicitly to ALAP mode because the `end` attribute comes after the `start` attribute.

Possible values are `alap` or `asap`.

depends end precedes start period &example_scheduling;

Specifies the separator used in CSV reports between the values. The default value is a semicolon.

The select functions controls which resource is picked from an allocation and it's alternatives. The selection is re-evaluated each time the resource used in the previous time slot becomes unavailable.

Even for non-persistent allocations a change in the resource selection only happens if the resource used in the previous (or next for ASAP tasks) time slot has become unavailable.

See table below for possible values.

persistent

- `maxloaded`
- Pick the available resource that has been used the most so far.
- `minloaded`
- Pick the available resource that has been used the least so far.
- `minallocated`
- Pick the resource that has the smallest allocation factor. The allocation factor is calculated from the various allocations of the resource across the tasks. This is the default setting.
- `order`
- Pick the first available resource from the list.
- `random`
- Pick a random resource from the list.

&example_select;

When several resource have the same working hours, these working hours should be defined as shifts. Each shift must have a unique ID. Resources can be assigned to shifts for certain intervals. Shifts can also be used to limit work on certain tasks to the hours of the shift or to switch part time schedules of a resource.

shift workinghours shift_selection &example_shift;

Limits the resource working time or work on a task to a defined shift during the specified interval. Multiple shifts can be defined, but shift intervals may not overlap.

The ID of the selected shift.

If an interval is specified, no allocations will be made outside the shift intervals unless other shifts have been selected for other time intervals. If the interval is omitted, the shift is assigned for the whole project time frame.

shift &example_shift;

Specifies time format for time short specifications. This is normal just the hour and minutes.

timeformat

Specifies that calendar columns in reports should contain the project ID after the load value.

barlabels columns

Controls how strict TaskJuggler checks booking intervals for conflicts with vacation and other bookings. In case the error is suppressed the booking will not overwrite the existing bookings. It will avoid the already assigned intervals during booking.

Number between 0 and 2. See table below.

- `sloppy 0:`
- Period may not contain any off-duty hours, vacation or other task assignments. (Default)
- `sloppy 1:`
- Period may contain off-duty hours, but not vacation or other task assignments.
- `sloppy 2:`
- Period may contain off-duty hours and vacation, but no other task assignments.

&example_booking;

Puts the scenario in sloppy bookings mode. This is the default. This mode makes only sense when you also use projection mode for this scenario. In sloppy mode all task that don't have any bookings provided will be filled with bookings according to the original schedule. In strict mode, no bookings will be filled in for any task prior to the current (or now) date.

booking projection strict

Determines how the accounts are sorted in the report. Up to 3 criteria can be specified. If one criteria is not sufficient to sort a group of accounts, the next criteria will be used to sort the accounts within this group.

Possible values are fullnamedown, fullnameup, iddown, idup, indexdown, indexup, namedown, nameup, sequencedown, sequenceup, tree

Determines how the resources are sorted in the report. Up to 3 criteria can be specified. If one criteria is not sufficient to sort a group of resources, the next criteria will be used to sort the resources within this group.

Possible values are fullnamedown, fullnameup, iddown, idup, indexdown, indexup, maxeffortdown, maxeffortup, mineffortdown, mineffortup, namedown, nameup, ratedown, rateup, sequencedown, sequenceup, tree

Determines how the tasks are sorted in the report. Up to 3 criteria can be specified. If one criteria is not sufficient to sort a group of tasks, the next criteria will be used to sort the tasks within this group.

Possible values are fullnamedown, fullnameup, iddown, idup, indexdown, indexup, namedown, nameup, prioritydown, priorityup, responsibledown, responsibleup, sequencedown, sequenceup, tree

In addition the following values are supported as well. They specify scenario specific values so they can be prefixed with the ID of the scenario and a colon (e.g. `plan:startup`). If no scenario is specified, the default scenario is used. Possible values are completeddown, completedup, criticalnessdown, criticalnessup, enddown, endup, pathcriticalnessdown, pathcriticalnessup, startdown, startup, statusdown, statusup

&example_reports;

Specifies the start date of the report. In task reports only tasks that end after this end date are listed.

end_report period_report &example_export;

The start date of the task. When specified for the top-level (default) scenario this attribute also implicitly sets the scheduling policy of the task to `asap`.

end period maxstart minstart scheduling startbuffer &example_durations;

Specifies how much slack time you expect to have at the beginning of the task. This information has no impact on the scheduling of the project. It is for documentation purposes only.

Percent slack of the overall effort, duration or length of the task.

duration endbuffer effort length &example_buffer;

Specifies an amount that is credited to the account specified by the account property at the moment the tasks starts.

endcredit &example_account;

A note that describes the current status of the task.

journalentry note

Puts the scenario in strict bookings mode. This mode makes only sense when you also use projection mode for this scenario. In strict mode, no bookings will be filled in for any task prior to the current (or now) date. In sloppy mode all task that don't have any bookings provided will be filled with bookings according to the original schedule. TaskJuggler will generate a warning for each task where the booked effort excedes the specified effort.

booking sloppy projection

Specifies an alternative subtitle for a report column.

subtitleurl &example_columns;

Specifies an URL that is attached to the column subtitle of HTML reports.

subtitle &example_columns;

The supplement keyword provides a mechanism to add more attributes to already defined tasks or resources. The additional attributes must obey the same rules as in regular task or resource definitions and must be enclosed by curly braces.

This construct is primarily meant for situations where the information about a task or resource is split over several files. E. g. the vacation dates for the resources may be in a separate file that was generated by some other tool.

Possible values are `resource` or `task`.

resource task &example_supplement;

Tasks are the central elements of a project plan. Use a task to specify which resource should be allocated for how long to what task.

account_task allocate complete depends duration effort endbuffer endcredit end flags journalentry length maxend maxstart milestone minend minstart note period precedes priority projectid purge reference responsible scheduled scheduling shift_selection startbuffer startcredit start statusnote supplement task resource &example_simple;

The list of attribute names specifies which task attributes should be listed in the report in addition to the ones exported by default. The following values are supported. They correspond to the respective attributes of a task.

`complete`, `depends`, `flags`, `maxend`, `maxstart`, `minend`, `minstart`, `note`, `priority`, `responsible`

By specifying the ID of a user-defined attribute, these can be included as well.

A special case the is `all` keyword. If this is part of the list, all supported task attributes will be included in the report. This includes all user-defined task attributes.

&example_export;

Display on the `taskreport`, on the left of the task area, the data as specified int the runtime macro. The runtime macro follows same rule as `celltext`.

taskreport celltext &example_taskbarprefixpostfix;

Display on the `taskreport`, on the right of the task area, the data as specified int the runtime macro. The runtime macro follows same rule as `celltext`.

taskreport celltext &example_taskbarprefixpostfix;

All tasks in the included file are added as sub-tasks of the task specified by `taskprefix`. The `taskprefix` must be a valid absolute ID of an already defined task.

task &example_include;

This report is intended for the TaskJuggler graphical user interface. The report lists all tasks and their respective values as a HTML page. The resources that are allocated to the tasks can be listed as well.

caption columns end_report headline hideresource hidetask loadunit period_report rollupresource rolluptask scenario_report shorttimeformat showprojectids sortresources sorttasks start_report taskroot timeformat taskbarprefix taskbarpostfix csvtaskreport htmlaccountreport htmlresourcereport resourcereport &example_guireport;

Only tasks below the specified root-level tasks are exported. The exported tasks will have the id of the root-level task stripped from their ID, so that the sub-tasks of the root-level task become top-level tasks in the exported file.

ID of a task that specifies the new root level

&example_taskroot;

Sets the default timezone of the project. All times that have no time zones specified will be assumed to be in this timezone. The value must be a string just like those used for the TZ environment variable. Most Linux systems have a command line utility called `tzselect` to lookup possible values.

The project start and end time are not affected by this setting. You have to explicitly state the timezone for those dates or the system defaults are assumed.

&example_timezone;

Determines how time specifications in reports look like.

See table below for possible values.

shorttimeformat

Ordinary characters placed in the format string are copied without conversion. Conversion specifiers are introduced by a `%' character, and are replaced in s as follows:

- %a
- The abbreviated weekday name according to the current locale.
- %A
- The full weekday name according to the current locale.
- %b
- The abbreviated month name according to the current locale.
- %B
- The full month name according to the current locale.
- %c
- The preferred date and time representation for the current locale.
- %C
- The century number (year/100) as a 2-digit integer. (SU)
- %d
- The day of the month as a decimal number (range 01 to 31).
- %D
- Equivalent to %m/%d/%y. (Yecch - for Americans only. Americans should note that in other countries %d/%m/%y is rather common. This means that in international context this format is ambiguous and should not be used.) (SU)
- %e
- Like %d, the day of the month as a decimal number, but a leading zero is replaced by a space. (SU)
- %E
- Modifier: use alternative format, see below. (SU)
- %F
- Equivalent to %Y-%m-%d (the ISO 8601 date format). (C99)
- %G
- The ISO 8601 year with century as a decimal number. The 4-digit year corresponding to the ISO week number (see %V). This has the same format and value as %y, except that if the ISO week number belongs to the previous or next year, that year is used instead. (TZ)
- %g
- Like %G, but without century, i.e., with a 2-digit year (00-99). (TZ)
- %h
- Equivalent to %b. (SU)
- %H
- The hour as a decimal number using a 24-hour clock (range 00 to 23).
- %I
- The hour as a decimal number using a 12-hour clock (range 01 to 12).
- %j
- The day of the year as a decimal number (range 001 to 366).
- %k
- The hour (24-hour clock) as a decimal number (range 0 to 23); single digits are preceded by a blank. (See also %H.) (TZ)
- %l
- The hour (12-hour clock) as a decimal number (range 1 to 12); single digits are preceded by a blank. (See also %I.) (TZ)
- %m
- The month as a decimal number (range 01 to 12).
- %M
- The minute as a decimal number (range 00 to 59).
- %n
- A newline character. (SU)
- %O
- Modifier: use alternative format, see below. (SU)
- %p
- Either 'AM' or 'PM' according to the given time value, or the corresponding strings for the current locale. Noon is treated as `pm' and midnight as 'am'.
- %P
- Like %p but in lowercase: 'am' or 'pm' or %a corresponding string for the current locale. (GNU)
- %r
- The time in a.m. or p.m. notation. In the POSIX locale this is equivalent to '%I:%M:%S %p'. (SU)
- %R
- The time in 24-hour notation (%H:%M). (SU) For a version including the seconds, see %T below.
- %s
- The number of seconds since the Epoch, i.e., since 1970-01-01 00:00:00 UTC. (TZ)
- %S
- The second as a decimal number (range 00 to 61).
- %t
- A tab character. (SU)
- %T
- The time in 24-hour notation (%H:%M:%S). (SU)
- %u
- The day of the week as a decimal, range 1 to 7, Monday being 1. See also %w. (SU)
- %U
- The week number of the current year as a decimal number, range 00 to 53, starting with the first Sunday as the first day of week 01. See also %V and %W.
- %V
- The ISO 8601:1988 week number of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week. See also %U %and %W. %(SU)
- %w
- The day of the week as a decimal, range 0 to 6, Sunday being 0. See also %u.
- %W
- The week number of the current %year as a decimal number, range 00 to 53, starting with the first Monday as the first day of week 01.
- %x
- The preferred date representation for the current locale without the time.
- %X
- The preferred time representation for the current locale without the date.
- %y
- The year as a decimal number without a century (range 00 to 99).
- %Y
- The year as a decimal number including the century.
- %z
- The time zone as hour offset from GMT. Required to emit RFC822-conformant dates (using "%a, %d %%b %Y %H:%M:%S %%z"). (GNU)
- %Z
- The time zone or name or abbreviation.
- %+
- The date and time in date(1) format. (TZ)
- %%
- A literal '%' character.

Some conversion specifiers can be modified by preceding them by the E or O modifier to indicate that an alternative format should be used. If the alternative format or specification does not exist for the current locale, the behavior will be as if the unmodified conversion specification were used. (SU) The Single Unix Specification mentions %Ec, %EC, %Ex, %%EX, %Ry, %EY, %Od, %Oe, %OH, %OI, %Om, %OM, %OS, %Ou, %OU, %OV, %Ow, %OW, %Oy, where the effect of the O modifier is to use alternative numeric symbols (say, Roman numerals), and that of the E modifier is to use a locale-dependent alternative representation.

The documentation of the `timeformat` attribute has been taken from the man page of the GNU `strftime` function.

Sets the minimum timing resolution. The smaller the value, the longer the scheduling process lasts and the more memory the application needs. The maximum value is 1 hour. The smallest value is 5 min. The default value depends on the difference between the user timezone and UTC. If the difference is multiples of 1 hour, it is set to 1 hour. If it is off by 30 minutes, the default value is 30 minutes. Otherwise, it is set to 15 minutes. Other differences to UTC are not supported.

This value is a pretty fundamental setting of TaskJuggler. It has a severe impact on memory usage and scheduling performance. You should set this value to the minimum required resolution. Make sure that all values that you specify are aligned with the resolution.

The timing resolution should be set prior to any value that represents a time value like now or workinghours.

Specifies an alternative title for a report column.

titleurl &example_columns;

Specifies an URL that is attached to the column title of HTML reports.

title &example_columns;

Specify a global vacation day. This vacation is respected by all resources that are defined hereafter.

vacation_resource &example_vacation;

Specify a vacation period for the resource. It can also be used to block out the time before a resource joint or after it left. For employees changing their work schedule from full-time to part-time, or vice versa, please refer to the 'Shift' property.

vacation_global shift_selection &example_vacation;

Specifies which XML format should be generated. Currently version 2 is highly recommended.

&example_xmlreport;

This attribute specifies a list of weekdays that are shown in the report.

workinghours

Sets the weekly limit of a resource usage or a resource allocation to a task.

dailymax monthlymax &example_limits;

Specify that you want to base all week calculation on weeks starting on Monday. This is common in many European countries.

weekstartssunday

Specify that you want to base all week calculation on weeks starting on Sunday. This is common in the United States of America.

weekstartsmonday

The working hours specification limits the availability of resources to certain time slots of week days.

dailyworkinghours yearlyworkingdays &example_project;

Generates a XML report. TaskJuggler 2.x has a much improved XML format. This is not yet the default, but will be in later versions. So you should always specify which version of the XML format should be generated. The file name should have a `.tjx` extension. Version 2 files are gzip compressed XML Files. The DTD for the version 2 file format can be found on the TaskJuggler Web Site.

hideresource hidetask hideaccount rollupresource rolluptask rollupaccount scenarios taskroot version &example_xmlreport;

Specifies the number of average working days per year. This should correlate to the specified workinghours and vacation. It affects the conversion of working hours, working days, working weeks, working months and working years into each other.

When public holidays and vacations are disregarded, this value should be equal to the number of working days per week times 52.1428 (the average number of weeks per year). E. g. for a culture with 5 working days it is 260.714 (the default), for 6 working days it is 312.8568 and for 7 working days it is 365.

dailyworkinghours loadunit vacation_global workinghours &example_project;