File: ShiftSchedule.tjp

package info (click to toggle)
taskjuggler 2.4.3-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 13,156 kB
  • ctags: 3,713
  • sloc: cpp: 37,683; sh: 13,617; xml: 6,021; perl: 5,207; lisp: 538; makefile: 283; python: 258
file content (184 lines) | stat: -rw-r--r-- 4,289 bytes parent folder | download | duplicates (2)
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
/*
 * This is an example project for the TaskJuggler project management
 * software. It illustrates the versatility of the tool by creating a
 * load balanced shift schedule for a team of system administrators.
 */
project shifts "Duty Schedule SysAdmin Team" "$Id$" 2002-06-01 - 2002-08-01 {
	dailyworkinghours 8
	yearlyworkingdays 256
}	

flags hidden

shift phonesupport "Phone support" {
	workinghours mon 9:00 - 12:00
	workinghours tue 9:00 - 12:00
	workinghours wed off
	workinghours thu 14:00 - 17:00
	workinghours fri 9:00 - 12:00
}

shift studenthours "Student Hours" {
	workinghours mon 9:00 - 14:00
	workinghours tue off
	workinghours wed 13:00 - 18:00
	workinghours thu 8:00 - 10:00, 16:00 - 18:00
	workinghours fri 9:00 - 14:00
}

/*
 * Define the staff of the team.
 */
resource joe "Joe Bughunter" {
	vacation 2002-06-10 - 2002-06-13
}
resource khaled "Khaled Safri" {
	shift studenthours
}
resource sally "Sally MacPrinter" {
	vacation 2002-06-17 - 2002-06-20
}
resource anders "Anders Gundstrom" {
	maxeffort 0.8
}
resource paul "Paul Gutier" {
	vacation 2002-07-02 - 2002-07-08
}

/*
 * Now we define the tasks of the team.
 */
task sysadmin "System Administration" {
	
# This milestone is used so we can change the start quickly.
task start "Start of plan" {
	start 2002-06-01
	milestone
	flags hidden
}

# User support. Very important task.
task usersup "User Support" {
  depends !start
	duration 2m
	shift phonesupport
	priority 900
	allocate joe { alternative anders, khaled, sally select minloaded }
}

# Make printers happy again. Not that important.
task printers "Printer Maintenance" {
	depends !start
  duration 2m
	priority 600
	allocate khaled { alternative sally select minloaded }
}

# This is a longer running project. Low priority.
task network "Network Restructuring Project" {
  depends !start
	priority 300
  duration 2m
	allocate anders { alternative joe, sally select minloaded }
}

# Security is important. So higher priority.
task security "Firewall and User Administration" {
	depends !start
	duration 2m
	priority 800
	allocate joe { alternative anders, paul select minloaded }
}

# This is just the overhead. All folks who can work but have no other
# jobs are assiged to this task.
task t4 "Backup Team" {
	depends !start
	priority 100
	duration 2m
	allocate joe
	allocate sally
	allocate khaled
	allocate anders
	allocate paul
}

} # of task sysadmin

/*
 * To see what TaskJuggler has done for us, let's define some reports.
 */

/*
 * First, let's get a global overview of all tasks for the 2 month
 * period. We nest the resource allocations into the task list. All
 * resource loads should be in man hours.
 */
htmltaskreport "TaskCoverage-Jun.html" {
	columns name, daily, effort
	start 2002-06-01
	end 2002-07-01
	headline "Task Coverage - System Administration - Jun 2002"
  caption "All effort values are man-hours."
	hideresource 0
	loadunit hours
	hidetask hidden
}

/*
 * We also want to see the resource to task mappings. Resources are
 * sorted by name and a loads are again in man hours.
 */
htmlresourcereport "ResourceUsage-Jun.html" {
	columns name, daily, effort
	start 2002-06-01
	end 2002-07-01
	headline "Resource Usage - System Administration - Jun 2002"
	caption "All effort values are man-hours"
	hidetask hidden
	sorttasks namedown
	loadunit hours
}

macro shiftschedule [
htmlweeklycalendar "Calendar-${1}.html" {
	headline "Schedule for ${1}"
	columns schedule
	hidetask 1
	hideresource ~isresource(${1})
}
]

${shiftschedule "joe"}
${shiftschedule "khaled"}
${shiftschedule "sally"}
${shiftschedule "anders"}
${shiftschedule "paul"}

/*
 * Now we want a detailed schedule with exact start and end times for
 * a whole week. To save some typing we define a macro for this and
 * hand over the start and end times of the weeks as arguments.
 */
macro shifttimes [
htmlresourcereport "ShiftTimes-${1}.html" {
	columns name, schedule
	start 2002-${1}
	end 2002-${2}
	headline "Staff Schedule for the week ${1}-2002 - ${2}-2002"
}
]

/*
 * Now call the macro with the start and end dates of the weeks that
 * we want reports for.
 */
${shifttimes "06-03" "06-07"}
${shifttimes "06-10" "06-14"}

/*
 * Let's generate an XML file. Somebody might use other tools to view
 * the results.
 */
xmlreport "ShiftSchedule.tjx"