Dependency between data groups is very important as it determines the sequence in which they are executed and is also used to prevent loops.
Dependencies are calculated whenever a DSD is saved or refreshed, as well as when the Designer Dependency page is displayed. The process involves checking every aspect of a DSD to discover any dependencies (see below).
If one data group is dependent on another (for example because the second uses a value from the first in the WHERE clause of a Sql query) then it is essential that the first data group is completed before starting the second.
Similarly if gathering is asynchronous it is crucial that a data group only starts when any on which it depends are ALL complete.
fData calculates these dependencies wherever possible, and the designer has a further option to specify a dependency manually if necessary.
The following checks are made:
Any data group that has a parent data group is dependent on that data group
Each data gatherer plugin includes properties that specify which of its parameters is the id of another data group, thereby creating a dependency on it.
All function definitions include a list of its parameters that specify the id of a data group. For example =Value([field],[dataGroup]) has its second parameter as a dependency.
All functions in each data group are inspected to establish these dependencies. The places checked are:
Entered manually by the designer.
If the DSD has any Abandon data groups their firebreaks are assessed and each of the plugin's Abandon Parameters is included.