Dependencies

JXCirrus Diary and JXCirrus Project allows tasks to be dependant on one another. This means that one task cannot start until the task that it depends on has been completed.

In this example:

Task A

Task B (depends on Task A)

Task B can only start work once Task A has finished.

A task that depends on another (incomplete) task will show its icon as the unavailable task icon - Pending Task

It is also possible to set tasks that depend on Appointments. This means that the task cannot progress until the appointment is complete.

Setting Dependencies

The way to set dependencies is through the Entry Edit dialog - On the dependency tab.

Setting by Link

The most common way to set a task to depend on another is to select the other task. These dependencies are shown in the "Depends on these" list. This list also shows tasks that this one blocks, under "Blocks these...". They can be added using the Add button -

This will pop up a dialog showing the task tree. Select the task that you want this to depend on.

Setting by Title

Another way is to have a task depend on the nearest task (in the tree) that has a specific name. When you use the Add button here, you can type in the name of a task into a single line form. If you typed in "Mow Lawns", the system will look for another task with the title "Mow Lawns" and block if it is not finished. This has no effect if it can't find a task with the title "Mow Lawns".

Generally, you are better off using "Setting by Link". If the other task changes name, then you will have the dependency suddenly come apart.

The reason this exists is so that it can be used in Object Specs. If you set one task with a specific title, it is possible to set another task that depends on the text of that title. This is the only way to automatically set up dependencies between tasks through object specs.

You can supply modifiers to the title depend to narrow down the search.

Temporarily Disabling Dependencies

There are 2 other controls you can use on dependencies:

These are used to temporarily disable dependencies between tasks. There are a couple of reasons why you might use this:

  1. If you have set up some complex dependencies between tasks, and don't want to lose track of them by removing the dependencies. However, you want to start work on something that is blocked by a dependency.
  2. If your dependencies are set through object specs, and you cannot change them through the Entry Edit dialog.

Setting using the Link Button

There is a quick way to set dependencies between tasks from the list view (without needing to edit the task).

Open the item view for the task that you want to go first.
Press the Link button.   The button changes to Link Active.

When this symbol is shown, the next task you click on will depend on this task.   For example, if you want Task A to be done before Task B:

Effect of Dependency

We will use this example below:


Task Duration Priority Start After Due Date
Task A 1:00 10 24-Sep-2013 2:00PM
Task B (depends on Task A) 1:00 60
26-Sep-2013 5:00PM

Effect on Priority

Because Task B is blocked by Task A, Task A will get Task B's priority (plus a little bit). In this case, Task A's priority will be set to 60.0001. This makes sure that the system plans Task A before task B.

Effect on Start Date

Because Task B can only start after Task A, Task B will be set to start after Task A's start time + Task A's duration. This means that Task B's start time will be set to 24-Sep-2013 3:00PM.

Effect on Due Date

Because Task A blocks Task B, Task A's due date will be set to Task B's due date MINUS the duration of Task A. This means that Task B's due date will be 26-Sep-2013 4:00PM.