Skip to content

Design Document: Resource days off should affect project scheduling

Oleg edited this page Apr 18, 2017 · 8 revisions

Summary

The goal is to provide a solution to issue #18 requested many times and long awaited by GanttProject users.
Introduced functionality should keep core model (tasks, resources, their relations, etc) of GanttProject unchanged and work on top of it. So no new concepts for days off are expected to appear at this level.

Instead, automatic jobs checking project for inconsistencies regarding days off should be implemented. Found inconsistencies should be presented in UI along with correction hints to user and suggested automatic fixes where possible.

User interface

This feature requires new (Project)Health (alternative names: Auditand Assistant) panel accessible as separate tab along with Gantt and Resources Chart tabs. This Health panel will also serve as a home for other project consistency checks implemented in future. Such checks, for example, could be:

  • Overdue tasks (actual progress of a task is less than expected based on current date);
  • Over-allocation (resource is allocated more than 100%);
  • etc.

Health panel consists of Tree/TreeTable component and dependent description panel. The tree is showing the found health check violations grouped by check type. Description panel is showing check description and available fix actions for a particular violation.

Program interface

Technical details

Automatic fixes

  1. Assign other resource. Replaces resource with another one chosen by user
  2. Remove day off for resource. Removes the day off affecting task from days off configured for resource
  3. Extend task duration. Task's end date is shifted by the number of days resource is not available due to days off. Weekends and holiday calendar should respected too.
  4. Split task. Task is split into 2 parts: one before days off and second after days off with corresponding constaraints set for them.
  5. Leave as is. Nothing is changed

As soon as user takes the decision by choosing one of the above options corresponding violation is marked as resolved. Resolved violations are not shown in Health panel anymore.

The state of all the relations should be a part of project model to be persisted in project file. Resolved violations go back to unresolved in case of:

I think we can only store those violations for which user chooses "Leave as is" or "Extend task duration". We can store task interval which intersects with dayoff, resource id and taken decision and make it unresolved again if the set of intersections changes for whatever reasons: task moves, days off change, etc. In this case we shall show previously taken decision and ask user if it should be reconsidered.