Chapter 4. Tutorial: Your First Project

Table of Contents
Starting the project
Global Attributes
Declaring Resources
Declaring Accounts
Specifying the Tasks
Specifying Milestones
Generating Reports of the scheduled Project

We have mentioned already that TaskJuggler uses plain text files that describe the project to schedule it. As you will see now, the syntax of these files is easy to understand and very intuitive. This chapter will walk you step by step through your first project. You create the project plan for a made-up accounting software project. Refer to Chapter 8 for a full listing of the example. This project demonstrates some of the basic features of TaskJuggler; for more advanced features please refer to Chapter 6.

Starting the project

To start a TaskJuggler project file you need to use the project property.


project acso "Accounting Software" "1.0" 2002-01-16 - 2002-04-26 {
  now 2002-03-04
  timeformat "%Y-%m-%d"
  currency "EUR"
  scenario plan "Plan" {
    # Mark all paths as critical that have less than 10% slack time.
    minslackrate 10.0
    scenario delayed "Delayed"
  }
}

It tells TaskJuggler the default project ID, a short name for your project, a version number and a start and end date. The start and end dates don't need to be exact, but must enclose all tasks. They specify the time interval the TaskJuggler scheduler will use to fit the tasks in. So, make it large enough for all your tasks to fit in. But don't make it too large, because this will result in longer scheduling times and higher memory consumption.

All TaskJuggler properties have a certain number of fixed attributes and a set of optional attributes. Optional attributes are always enclosed in curly braces. In this example we use the optional attributes now to set the current day for the scheduler to another value than to the moment your invoke TaskJuggler. We pick a day in the specified project period and we will always get the same results of a TaskJuggler run, no matter when we process our first project. The currency attribute specifies the unit of currency values.

Because each culture has it's own way of specifying dates, the format is configurable. Use the timeformat attribute to specify the default format. This is the format used for reports. It's not the format that you use in TaskJuggler project files. This format is fixed and must be Year-Month-Day-Hours:Minutes:Seconds-Timezone. All values after day are optional.

In this tutorial we would like to compare two scenarios of the project. The first scenario is the one that we have planned. The second scenario is how it really happened. The two scenarios have the same task structure, but the start and end dates of the task may vary. In reality we assume that the project got delayed, so we call the second scenario "Delayed". The scenario property is used to specify the scenarios. The delayed scenario is nested into the plan scenario. This tells TaskJuggler to use all values from the plan scenario also for the delayed scenario unless the delay scenario has it's own values. We'll see further below, how to specify values for a scenario.

Certain attributes are scenario specific. These have to be included in the scenario definition. In this example, we use the minslackrate attribute to specify the percentage of slack time a task path must at least have before it is considered a critical path. Tasks on critical paths are mared with a red frame in the graphical user interface.