Skip to content

04 Dependencies and Scheduling

zhuoguangming edited this page Oct 5, 2026 · 1 revision

Dependencies and Scheduling

The four dependency types

Type Meaning
FS (finish → start) The successor can start only after the predecessor finishes. Most common, the default
SS (start → start) Both start at the same time
FF (finish → finish) Both finish at the same time
SF (start → finish) The successor can finish only once the predecessor starts. Rarely used

How to create one: move your mouse to the edge of a task bar in the Gantt chart; a round link handle appears (left edge = start end, right edge = finish end). Drag from it onto the target bar. The ghost line while dragging shows which end you're connecting, which also determines the dependency type.

Cycles are rejected on the spot—the check happens at creation time, not when the solver later finds it can't be scheduled.

The three lag units

Lag is extra time on a dependency; it can be negative (a lead time, i.e. overlap):

Unit Meaning
Workdays Follows the project calendar, skipping weekends and holidays
Calendar days Calendar days, counted normally even across non-working days
Percent A percentage of the predecessor task's duration

The three units can be mixed within the same plan.

Automatic vs manual scheduling

Mode Behavior
Automatic The engine solves dates from dependencies and constraints. This is the default
Manual The interval is pinned down; dependencies, constraints, and resource leveling can't move it

How to enter manual: dragging task bars in the Gantt chart (panning, pulling the left handle to change the start, pulling the right handle to change the duration) makes manual mode the result—"what you see is what you get". Editing the start/finish dates in the outline has the same effect.

Conflicts are reported honestly: when a dependency runs into a manual task, Planit doesn't secretly move it—it reports it in the status bar / conflict list.

Constraints

An automatically scheduled task can carry a pair of constraints: one on the start side + one on the finish side, set in the inspector under "Scheduling":

  • Start no earlier than / Start no later than
  • Finish no earlier than / Finish no later than

Constraints are only meaningful in automatic mode. A manual task expresses its intent through the pinned-down interval.

Solving direction and ordering

  • Project direction: Forward (computed forward from the project start) or Backward (computed backward from the finish date; if the project has no finish date set, it falls back to the forward result).
  • Task order: each task can choose ASAP (as soon as possible) or ALAP (as late as possible) within its own feasible window.

CPM and the critical path

The engine solves with the Critical Path Method: a forward pass computes earliest start/finish, a backward pass computes latest start/finish, and the difference between them is the slack.

  • Total slack: how long this task can be delayed without delaying the project finish
  • Free slack: how long it can be delayed without delaying any successor task
  • Critical path = the chain with zero slack. Highlighted in the Gantt chart

A plan that can't be scheduled is reported honestly (negative slack, how many workdays short), rather than pretended to succeed.

Any change reschedules

Change any one of a task's duration, dependencies, constraints, calendar, or resource assignments, and the whole plan is recomputed immediately—critical path, slack, cost, and earned value all update along with it.

Solving runs on a Web Worker: for a project with ten thousand tasks, the interface stays at 60fps while solving, and the status bar waits 300ms before showing "Computing schedule…" (to avoid flicker).


Next: Calendars.

Clone this wiki locally