1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311
|
/*
* 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 this
# 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, chart
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
}
icalreport "Calendar.ics"
|