TaskJuggler: Difference between revisions
This changes nothing |
revert edits to fix search where character encoding was a problem |
||
| Line 138: | Line 138: | ||
== Example Project File == | == Example Project File == | ||
http://www.taskjuggler.org/manual-svn/example.html shows this example file (presented here with syntax highlighting) | http://www.taskjuggler.org/manual-svn/example.html shows this example file (presented here with syntax highlighting) | ||
<source lang="cpp"></source> | <source lang="cpp"> | ||
/* | |||
* This file contains an example project. It is part of the | |||
* TaskJuggler project management tool. It uses a made up software | |||
* development project to demonstrate some of the basic features of | |||
* TaskJuggler. Please see the TaskJuggler manual for a more detailed | |||
* description of the various syntax elements. | |||
*/ | |||
project acso "Accounting Software" "1.0" 2002-01-16 2002-04-28 { | |||
# Pick a day during the project that will be reported as 'today' in | |||
# the project reports. If not specified, the current day will be | |||
# used, but this will likely be outside of the project range, so it | |||
# can't be seen in the reports. | |||
now 2002-03-05-13:00 | |||
# Hide the clock time. Only show the date. | |||
timeformat "%Y-%m-%d" | |||
# The currency for all money values is the Euro. | |||
currency "EUR" | |||
# We want to compare the baseline scenario to one with a slightly | |||
# delayed start. | |||
scenario plan "Plan" { | |||
# Mark all paths as critical that have less than 10% slack time. | |||
minslackrate 10.0 | |||
scenario delayed "Delayed" | |||
} | |||
} | |||
# This is not a real copyright for this file. It's just used as an example. | |||
copyright "© 2002 Crappy Software, Inc." | |||
# The daily default rate of all resources. This can be overridden for each | |||
# resource. We specify this, so that we can do a good calculation of | |||
# the costs of the project. | |||
rate 310.0 | |||
# Register Good Friday as a global holiday for all resources. | |||
vacation "Good Friday" 2002-03-29 | |||
# This is one way to form teams | |||
macro allocate_developers [ | |||
allocate dev1 | |||
allocate dev2 { limits { dailymax 4h } } | |||
allocate dev3 | |||
] | |||
flags team | |||
resource dev "Developers" { | |||
resource dev1 "Paul Smith" { rate 330.0 } | |||
resource dev2 "S�bastien Bono" | |||
resource dev3 "Klaus M�ller" { vacation 2002-02-01 - 2002-02-05 } | |||
flags team | |||
} | |||
resource misc "The Others" { | |||
resource test "Peter Murphy" { limits { dailymax 6.4h } rate 240.0 } | |||
resource doc "Dim Sung" { rate 280.0 vacation 2002-03-11 - 2002-03-16 } | |||
flags team | |||
} | |||
# In order to do a simple profit and loss analysis of the project we | |||
# specify accounts. One for the development costs, one for the | |||
# documentation costs, and one account to credit the customer payments | |||
# to. | |||
account dev "Development" cost | |||
account doc "Documentation" cost | |||
account rev "Payments" revenue | |||
# Now we specify the work packages. The whole project is described as | |||
# a task that contains subtasks. These subtasks are then broken down | |||
# into smaller tasks and so on. The innermost tasks describe the real | |||
# work and have resources allocated to them. Many attributes of tasks | |||
# are inherited from the enclosing task. This saves you a lot of typing. | |||
task AcSo "Accounting Software" { | |||
# All work-related costs will be booked to this account unless the | |||
# subtasks specify something different. | |||
account dev | |||
task spec "Specification" { | |||
# The effort to finish this task is 20 man-days. | |||
effort 20d | |||
# Now we use the macro declared above to allocate the resources | |||
# for this task. Because they can work in parallel, they may finish this | |||
# task earlier than in 20 working-days. | |||
${allocate_developers} | |||
# Each task without subtasks must have a start or an end | |||
# criterion and a duration. For this task we use a reference to a | |||
# milestone defined further below as the start criterion. So this task | |||
# can not start before the specified milestone has been reached. | |||
# References to other tasks may be relative. Each exclamation mark (!) | |||
# means 'in the scope of the enclosing task'. To descent into a task, the | |||
# fullstop (.) together with the id of the tasks have to be specified. | |||
depends !deliveries.start | |||
} | |||
task software "Software Development" { | |||
# The software is the most critical task of the project. So we set | |||
# the priority of this task (and all its subtasks) to 1000, the top | |||
# priority. The higher the priority, the more likely the task will | |||
# get the requested resources. | |||
priority 1000 | |||
# All subtasks depend on the specification task. | |||
depends !spec | |||
task database "Database coupling" { | |||
effort 20d | |||
allocate dev1, dev2 | |||
} | |||
task gui "Graphical User Interface" { | |||
effort 35d | |||
# This task has taken 5 man-days more than originally planned. | |||
# We record this as well, so that we can generate reports that | |||
# compare the delayed schedule of the project to the original plan. | |||
delayed:effort 40d | |||
depends !database, !backend | |||
allocate dev2, dev3 | |||
} | |||
task backend "Back-End Functions" { | |||
effort 30d | |||
# This task is behind schedule, because it should have been | |||
# finished already. To document this, we specify that the task | |||
# is 95% completed. If nothing is specified, TaskJuggler assumes | |||
# that the task is on schedule and computes the completion rate | |||
# according to the current day and the plan data. | |||
complete 95 | |||
depends !database | |||
allocate dev1, dev2 | |||
} | |||
} | |||
task test "Software testing" { | |||
task alpha "Alpha Test" { | |||
# Efforts can not only be specified as man-days, but also as | |||
# man-weeks, man-hours, etc. By default, TaskJuggler assumes | |||
# that a man-week is 5 man-days or 40 man-hours. These values | |||
# can be changed, of course. | |||
effort 1w | |||
# This task depends on a task in the scope of the enclosing | |||
# task's enclosing task. So we need two exclamation marks (!!) | |||
# to get there. | |||
depends !!software | |||
allocate test, dev2 | |||
note "Hopefully most bugs will be found and fixed here." | |||
} | |||
task beta "Beta Test" { | |||
effort 4w | |||
depends !alpha | |||
allocate test, dev1 | |||
} | |||
} | |||
task manual "Manual" { | |||
effort 10w | |||
depends !deliveries.start | |||
allocate doc, dev3 | |||
account doc | |||
} | |||
task deliveries "Milestones" { | |||
# Some milestones have customer payments associated with them. We | |||
# credit these payments to the 'rev' account. | |||
account rev | |||
task start "Project start" { | |||
# A task that has no duration is a milestone. It only needs a | |||
# start or end criterion. All other tasks depend on this task. | |||
milestone | |||
start 2002-01-16 | |||
# For some reason the actual start of the project got delayed. | |||
# We record this, so that we can compare the planned run to the | |||
# delayed run of the project. | |||
delayed:start 2002-01-20 | |||
# At the beginning of this task we receive a payment from the | |||
# customer. This is credited to the account associated with thhttp://www.taskjuggler.org/manual-svn/example.htmlis | |||
# task when the task starts. | |||
startcredit 33000.0 | |||
} | |||
task prev "Technology Preview" { | |||
milestone | |||
depends !!software.backend | |||
startcredit 13000.0 | |||
} | |||
task beta "Beta version" { | |||
milestone | |||
depends !!test.alpha | |||
startcredit 13000.0 | |||
} | |||
task done "Ship Product to Customer" { | |||
milestone | |||
# The next line can be uncommented to trigger a warning about | |||
# the project being late. For all tasks, limits for the start and | |||
# end values can be specified. Those limits are checked after the | |||
# project has been scheduled. For all violated limits a warning | |||
# is issued. | |||
# maxend 2002-04-17 | |||
depends !!test.beta, !!manual | |||
startcredit 14000.0 | |||
} | |||
} | |||
} | |||
# Now the project has been specified completely. Stopping here would | |||
# result in a valid TaskJuggler file that could be processed and | |||
# scheduled. But no reports would be generated to visualize the | |||
# results. | |||
# A traditional Gantt Chart for the TaskJugglerUI | |||
taskreport "Gantt Chart" { | |||
headline "Project Gantt Chart" | |||
columns hierarchindex, name, start, end, effort, duration, chart | |||
# For this report we like to have the abbreviated weekday in front | |||
# of the date. %a is the tag for this. | |||
timeformat "%a %Y-%m-%d" | |||
loadunit days | |||
hideresource 1 | |||
} | |||
# A list of tasks showing the resources assigned to each task. | |||
taskreport "Task Usage" { | |||
headline "Task Usage Report" | |||
columns hierarchindex, name, start, end, effort { title "Work" }, duration, | |||
cost, revenue | |||
timeformat "%Y-%m-%d" | |||
loadunit days | |||
hideresource ~isLeaf() | |||
sortresources nameup | |||
} | |||
# A list of all tasks with the percentage completed for each task | |||
taskreport "Tracking Gantt" { | |||
headline "Tracking Gantt Chart" | |||
columns hierarchindex, name, start, end, effort { title "Work" }, duration, | |||
completed, chart | |||
timeformat "%a %Y-%m-%d" | |||
loadunit days | |||
hideresource 1 | |||
} | |||
# A graph showing resource allocation. It identifies whether each | |||
# resource is under- or over-allocated for. | |||
resourcereport "Resource Graph" { | |||
headline "Resource Allocation Graph" | |||
columns no, name, rate, utilization, freeload, chart | |||
loadunit days | |||
hidetask 1 | |||
} | |||
# A list of all project resources, both human and material resources, | |||
# together with the associated costs. | |||
resourcereport "Resource Sheet" { | |||
headline "Resource Sheet" | |||
columns no, name, efficiency, id, maxeffort, rate | |||
loadunit days | |||
hidetask 1 | |||
} | |||
# A list of resources and each task associated with each resource. | |||
resourcereport "Resource Usage" { | |||
headline "Resource Usage Report" | |||
columns no, name, utilization, freeload, cost | |||
loadunit days | |||
hidetask 0 | |||
} | |||
# This report looks like a regular calendar that shows the tasks by | |||
# their dates. | |||
htmlweeklycalendar "Calendar.html" { | |||
# Only show work days in the calendar. | |||
weekdays mon - fri | |||
} | |||
# This report is a status report for the current week. It also | |||
# provides an outlook for the next week. | |||
htmlstatusreport "Status-Report.html" { | |||
} | |||
# A P&L report for the project. | |||
htmlaccountreport "Accounting.html" { | |||
# Besides the number of the account and the name we have a column | |||
# with the total values (at the end of the project) and the values | |||
# for each month of the project. | |||
columns no, name, scenario, total, monthly | |||
headline "P&L for the Project" | |||
caption "The table shows the profit and loss analysis as well as | |||
the cashflow situation of the Accounting Software Project." | |||
# Since this is a cashflow calculation, we show accumulated values | |||
# for each account. | |||
accumulate | |||
scenarios plan, delayed | |||
} | |||
xmlreport "XML-Report.tjx" { | |||
version 2 | |||
hidetask 0 | |||
hideresource 0 | |||
scenarios plan, delayed | |||
} | |||
</source> | |||
[[Category:Applications]] | [[Category:Applications]] | ||