Resource configuration

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.

Resource type

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.

Example

resources:
  - resource: MM
    name: Marc Müller

  - resource: R1
    name: Room 1

DailyMax

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.

Example

resources:
  - resource: MM
    name: Marc Müller
    dailymax: 6h

ID

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

Example

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

Leave

In a leave section you can tell the scheduler when employees are on leave.

Example

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

Name

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.

Example

resources:
  - resource: MM        # This worker will use the ID: MM
    name: Marc Müller

WorkingTime

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

  1. 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)

  2. 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.

Example

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

Filter

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.

Example

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

Using filters to work on multiple tasks

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.

Filtered Resources

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.