forked from UNIZAR-30226-PROYS/taskjuggler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathP6_proySW.tjp
431 lines (387 loc) · 12.2 KB
/
P6_proySW.tjp
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
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
/*
* This file contains the practice 6 source code corresponding with the
* project planification using TaskJuggler in the "Proyecto Software" course.
* It is based on the Tutorial project offered by TaskJuggler and maintains
* some elements of it
*/
project pSix "Web Game" 2023-03-15 +12m {
# Set the default time zone for the project. If not specified, UTC
# is used.
timezone "Europe/Paris"
# Hide the clock time. Only show the date.
timeformat "%Y-%m-%d"
# Use Euroepan format for numbers
numberformat "-" "" "." "," 2
# Use Eurpean financial format for currency values. Don't show cents.
currencyformat "-" "" "." "," 2
# 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 2023-05-05-12:00
# The currency for all money values is the US Dollar.
currency "EUR"
# We want to compare the baseline scenario to one with the current one.
scenario plan "Plan" {
scenario actual "Actual"
}
}
# This is not a real copyright for this file. It's just used as an example.
copyright "Creative Commons 2023 Proyecto Software - Unizar."
# 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 145.2
# 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 cost "Project Cost" {
account manag "Management"
account mFront "Mobile Front-End"
account wFront "Web Front-End"
account back "Back-End"
}
account rev "Payments"
# The Profit&Loss analysis should be rev - cost accounts.
balance cost rev
resource boss "Liz Bullock" {
email "iiii@unizar.es"
actual:leaves project 2023-05-07 - 2023-05-12
rate 160
}
resource dev1 "Paul Smith" {
email "hhhh@unizar.es"
}
resource dev2 "Samantha Müller" {
email "jjj@unizar.es"
rate 100
actual:leaves project 2023-05-07 - 2023-05-12
}
resource dev3 "Peter Green" {
email "kkk@unizar.es"
}
shift t4h "monday - friday 4h" {
# 4h per day
workinghours mon - fri 10:00-14:00
}
resource Hector "Hector Toral" {
email "799301@unizar.es"
rate 14
shifts t4h
}
# 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 WMGame "Web & Mobile Game" {
# All work-related costs will be booked to this account unless the
# subtasks specify something different.
chargeset manag
# For the duration of the project we have running cost that are not
# included in the labor cost.
charge 60 perday
responsible boss
task tgdesign "General System Design" {
effort 2d
allocate boss
depends WMGame.deliveries.start
}
task tbackcloud "Despliegue Back end cloud" {
# It is necessary to “purge” the “chargeset” because it has been assigned previously to other variable
purge chargeset
chargeset back
responsible Hector
depends WMGame.tback
task tResearch "Research and Comparison of Alternatives" {
effort 5d
allocate Hector
}
task tupcloud "Cloud Deployment" {
effort 2d
actual:effort 1d
allocate dev1
depends WMGame.tbackcloud.tResearch
}
journalentry 2023-04-28"Cloud selection" {
author dev1
alert green
summary "AWS and Azure have been selected as the leading candidates."
}
}
task tAndroid "Front Ent Mobile" {
# It is necessary to “purge” the “chargeset” because it has been assigned previously to other variable
purge chargeset
chargeset mFront
responsible dev1
depends WMGame.tgdesign
task tMobileDisenno "Front End General Design" {
effort 2d
allocate dev3
}
task tAndroidImplementacion "Mobile Front End Construction" {
effort 7d
actual:effort 1d
allocate dev1
depends WMGame.tAndroid.tMobileDisenno
}
}
task tback "Back End" {
# It is necessary to “purge” the “chargeset” because it has been assigned previously to other variable
purge chargeset
chargeset back
responsible dev1
depends WMGame.tgdesign
task tBEd "Back End General Design" {
# The effort to finish this task is 5 man-days.
effort 5d
allocate dev1
}
task tlogic "Game logic" {
effort 12d
actual:effort 11d
allocate dev1, dev2
depends WMGame.tback.tBEd
journalentry 2023-03-28 "Game logic completed before deadline" {
author boss
alert green
summary "The team has ended the game logic before deadline."
}
}
task tbackDev "Back development" {
effort 20d
allocate dev1, dev2
depends WMGame.tback.tlogic
}
}
task twebF "Web Front End" {
purge chargeset
chargeset wFront
responsible dev3
depends WMGame.tback.tBEd
task tGUId "Web GUI Design" {
effort 9d
actual:effort 15d
allocate dev3
journalentry 2023-04-11 "Problems with the GUI design tool" {
author dev3
alert yellow
summary "The tool used for the GUI design has given me a lot of problems. I recommend to look for other one."
}
}
task tFEc "Web Front End Construction" {
effort 15d
allocate dev2, dev3
depends WMGame.twebF.tGUId
}
task tFEt "Web Front End Test" {
effort 6d
allocate dev1
depends WMGame.twebF.tFEc
}
}
task ttest "Accpetance tests" {
start 2023-06-01
effort 10d
allocate boss
allocate dev2
actual:effort 15d
journalentry 2023-04-13 "Problems with the planned dates" {
author boss
alert red
summary "The whole team asiigned to this task has a trip to visit a new client from May 7th to May 12th. Needed to check if the project can be finished on time or it is necessary to reasign efforts."
}
depends WMGame.twebF
depends WMGame.tback
}
task deliveries "Milestones" {
# Some milestones have customer payments associated with them. We
# credit these payments to the 'rev' account.
purge chargeset
chargeset 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.
# Here we use the built-in macro ${projectstart} to align the
# start of the task with the above specified project time frame.
start ${projectstart}
# 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.
charge 13000.0 onstart
}
task done "Ship Product to Customer" {
depends WMGame.ttest
charge 12000.0 onstart
}
}
}
# 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.
navigator navbar {
hidereport @none
}
macro TaskTip [
tooltip istask() -8<-
'''Start: ''' <-query attribute='start'->
'''End: ''' <-query attribute='end'->
----
'''Resources:'''
<-query attribute='resources'->
----
'''Precursors: '''
<-query attribute='precursors'->
----
'''Followers: '''
<-query attribute='followers'->
->8-
]
textreport frame "" {
header -8<-
== Accounting Project Web Game ==
<[navigator id="navbar"]>
->8-
footer "----"
textreport overvi "Overview" {
formats html
center '<[report id="overview"]>'
}
textreport infoi "informe plan" {
formats html
center '<[report id="informe"]>'
}
textreport "Status" {
formats html
center -8<-
<[report id="status.dashboard"]>
----
<[report id="status.completed"]>
----
<[report id="status.ongoing"]>
----
<[report id="status.future"]>
->8-
}
textreport development "Development" {
formats html
center '<[report id="development"]>'
}
textreport "ContactList" {
formats html
title "Contact List"
center '<[report id="contactList"]>'
}
textreport "ResourceGraph" {
formats html
title "Resource Graph"
center '<[report id="resourceGraph"]>'
}
}
# A traditional Gantt chart with a project overview.
taskreport overview "" {
scenarios actual
headline "Current Project Plan"
columns bsi { title 'WBS' },
name, start, end, effort, cost,
revenue, chart { ${TaskTip} }
# 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 @all
balance cost rev
caption 'All effort values are in man days.'
}
taskreport informe "" {
scenarios plan
headline "Informe"
columns bsi { title 'WBS' },
name, start, end, effort, cost,
revenue, chart { ${TaskTip} }
# 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 @all
balance cost rev
caption 'All effort values are in man days.'
}
# Macro to set the background color of a cell according to the alert
# level of the task.
macro AlertColor [
cellcolor plan.alert = 0 "#00D000" # green
cellcolor plan.alert = 1 "#D0D000" # yellow
cellcolor plan.alert = 2 "#D00000" # red
]
taskreport status "" {
columns bsi { width 50 title 'WBS' }, name { width 150 },
start { width 100 }, end { width 100 },
effort { width 100 },
alert { tooltip plan.journal
!= '' "<-query attribute='journal'->" width 150 },
status { width 150 }
scenarios actual
taskreport dashboard "" {
headline "Project Dashboard (<-query attribute='now'->)"
columns name { title "Task" ${AlertColor} width 200},
resources { width 200 ${AlertColor}
listtype bullets
listitem "<-query attribute='name'->"
start ${projectstart} end ${projectend} },
alerttrend { title "Trend" ${AlertColor} width 50 },
journal { width 350 ${AlertColor} }
journalmode status_up
journalattributes headline, author, date, summary, details
hidetask ~hasalert(0)
sorttasks alert.down, actual.end.up
period %{${now} - 3w} +3w
}
taskreport completed "" {
headline "Already completed tasks"
hidetask ~(actual.end <= ${now})
}
taskreport ongoing "" {
headline "Ongoing tasks"
hidetask ~((actual.start <= ${now}) & (actual.end > ${now}))
}
taskreport future "" {
headline "Future tasks"
hidetask ~(actual.start > ${now})
}
}
# A list of tasks showing the resources assigned to each task.
taskreport development "" {
scenarios actual
headline "Development - Resource Allocation Report"
columns bsi { title 'WBS' }, name, start, end, effort { title "Work" },
duration, chart { ${TaskTip} scale day width 500 }
timeformat "%Y-%m-%d"
hideresource ~(isleaf() & isleaf_())
sortresources name.up
}
# A list of all employees with their contact details.
resourcereport contactList "" {
scenarios actual
headline "Contact list and duty plan"
columns name,
email { celltext 1 "[mailto:<-email-> <-email->]" },
managers { title "Manager" },
chart { scale day }
hideresource ~isleaf()
sortresources name.up
hidetask @all
}
# A graph showing resource allocation. It identifies whether each
# resource is under- or over-allocated for.
resourcereport resourceGraph "" {
scenarios actual
headline "Current Resource Allocation Graph"
columns no, name, effort, rate, weekly { ${TaskTip} }
loadunit shortauto
# We only like to show leaf tasks for leaf resources.
hidetask ~(isleaf() & isleaf_())
sorttasks plan.start.up
}