For scheduling and tracking projects, which are estimated with efforts for each task, you need to configure project resources. Resources can be human resources as well as tools, which need to be available to complete a task.
Each resource starts with - resource: <ID>
.
When you assign a task to a resource, you always refer to the ID.
Make sure to keep each identifier unique.
resources:
- resource: MM
name: Marc Müller
- resource: R1
name: Room 1
With dailymax
you can set a limit of working hours per day.
A dailymax
value of 4h
is equivalent to set workingtime
to 4h
for each day.
resources:
- resource: MM
name: Marc Müller
dailymax: 6h
Type: String
The ID is the main identifier of a resource or worker. It should be kept short and simple, since this is the identifier you will use in the task configuration to assign resources to tasks
resources:
- resource: MM # This worker will use the ID: MM
name: Marc Müller
- resource: R1 # This resource will use the ID: R1
name: Room 1
In a leave section you can tell the scheduler when employees are on leave.
resources:
- resource: Dev
name: Developer
leave:
- 2020-08-03 # One day leave
- 2020-08-05 - 2020-08-07 # Three full days leave
- 2020-08-10 - 2020-08-12 2h # Three days where Dev is available for 2 hours per day
This resembles the full name of a worker or a resource. It has no meaning to the scheduler, but will make it easier to identify a resource.
resources:
- resource: MM # This worker will use the ID: MM
name: Marc Müller
With workingtime
you can configure when resources/workers are available for working on tasks.
By default a worker is available from Monday to Friday, 8 hours per day.
In the workingtime
property you can configure
Which days a worker will be available
You can do this by setting a comma separated list of weekdays where the worker is available (e.g. MON, TUE, WED
or MO, TU, WE
)
How many hours the worker is available each individual day by providing a duration, separated by a colon after the weekday (e.g. MON:4h, TUE:6h
). The duration is optional, with a default value of 8h
.
Omitted days in this list indicate that the resource/worker is not available on this day at all.
resources:
- resource: dev
name: Software developer
workingtime: MON, TUE, WED, THU:4h # Working from Monday to Wednesday full time, Thursday half time and Friday off
- resource: test
name: Software tester
workingtime: MO:4h, TU, WE, TH, FR:4h # Working full time, except for Monday and Friday
A resource filter can be used to limit the time a resource can spend on tasks.
Like a resource itself, a filter can handle the dailymax
or workingtime
property to artificially restrict the availability of a resource for some tasks.
To apply a filter on a resource, you append the name of the filter to the name of the resource, separated by a .
.
Filters will never show up on a resource chart or a GANTT chart. Eventually, the time booked will always be added to the underlying resource.
Once configured, a filter can be used for multiple resources, where it is treated independently for each resource.
However, if you use the same filter for the same resource multiple times on different tasks, the tasks have to share the availability of that resource. See examples.
A filter
can only be used in combination with a resource.
resources:
- resource: dev
name: Software developer
dailymax: 6h
- filter: onlyMondays
workingtime: mo
tasks:
# This task will start on Monday, 1st of June 2020.
# It will finish on Monday, 8th of June after 4 working hours this day, since
# dev is only working 6 hours per day and since it is using the `onlyMondays` filter, dev
# will only be available on Mondays
- task: T1
start: 2020-06-01
efforts: 10h
assign: dev.onlyMondays
# The second task, despite the configured start date, will commence work on
# Monday, 8th of June for 2 remaining hours this day, after T1 has been completed and
# the resource `dev1.onlyMondays` is free again.
# It will finish on Monday, 15th of June after 4 hours this day
- task: T2
start: 2020-06-01
efforts: 6h
assign: dev.onlyMondays
Filters can also be used to have a resource working on multiple projects with constrained efforts per day (or week) for each project.
In the following example we will see Worker 1
who will work 50% of his time on the First Project
, 25% of his time on the Second Project
and all of his remaining time on the Third Project
.
This works because the first project has a higher priority than the second project. In this case the priority is based on the order of the tasks in the file. Worker 1
is only allowed to work 4 hours per day on the tasks of the First Project
. The remaining time is left for the Second Project
, where he is only allowed to work 2 hours per day due to the filter.
The Third Project
has the lowest priority, and here Worker 1
has no time constraints, so he will work all of his remaining time per day.
project:
name: Multiple Filters
start: 2020-06-01
resources:
- resource: W1
name: Worker 1
- filter: half
dailymax: 4h
- filter: quarter
dailymax: 2h
tasks:
- group: P1
name: First Project (50% of time)
tasks:
- task: T1
name: First task
efforts: 2d
assign: W1.half
- task: T2
name: Second task
efforts: 2d
assign: W1.half
- group: P2
name: Second Project (25% of time)
tasks:
- task: T1
name: First task
efforts: 1d
assign: W1.quarter
- task: T2
name: Second task
efforts: 2d
assign: W1.quarter
- group: P3
name: Third Project (all remaining time)
tasks:
- task: Rest
efforts: 8d
assign: W1
Instead of time per day, a similar result could be achieved on a day-per-week basis by using the WorkingTime
setting on the filter.