Basic PROforma Concepts: Scheduling constraints
Scheduling constraints are a way of specifying the order in which tasks are enacted.
A scheduling constraint is graphically represented by an arrow connecting two tasks. It indicates that the task at the head of the arrow cannot start until the task at the tail of the arrow (the antecedent task) has completed.
In the figure above, the enquiry’s antecedent task is the action. The action has to be completed before the enquiry can be enacted.
A task can have several antecedent tasks. In order for a task to be considered for enactment, all its scheduling constraints must be met – that is, all antecedent tasks have to be either completed or discarded. Consequently, if a task has one or more antecedent tasks that are still in progress, then its scheduling constraints are not met (yet).
Once the scheduling constraints have been met, the engine then decides whether a task should become in progress or discarded. If at least one of the antecedent tasks was completed, then the task can become in progress. However, if all the antecedent tasks were discarded, then the task is discarded.
Note: In fact, even if at least one of the antecedent tasks was completed the task might still remain dormant if it has other unmet constraints, such as a state trigger, or precondition, etc.