Controlling the Priorities¶
The Priority Manager can be opened from the Priorities tab, as explained in the dedicated section, to properly set the tasks’ priorities in a unique panel.
The dialog window of the Priority Manager is divided in two different areas:
The task list in the upper side, each one with an editable number field to modify the corresponding priority
- A filter panel which allows to filter the list searching by:
task name,
priority number.
The list present inherits the sorting criteria expressed in the Priorities tab.
At the bottom of the Priority Manager floating window two buttons allow users to make their edit operations persistent. In particular:
Apply: to save the edits and then close the manager.
Exit : to close the manager by discarding internal modifications.
Prerequisites
You need to have selected and opened a flow.
The selected flow needs to have at least one task onto the stage.
Procedure
In the Priorities tab, click on the Pencil icon to open the Priority Manager.
In the table, edit the priority values of some tasks by writing the corresponding desired priority.
You can now filter the modified task by inserting in the Filter By field the same number inserted as priority value before.
Click on Apply to save the modifications or on Exit to discard any modification performed.
Priority management in computation¶
To determine effective priorities of tasks in computation, the following steps are taken in this order:
Application of priority policies,
Modification of priorities due to the presence of Runtime Variables Tasks, if any
Modification of priorities due to the presence of Import From Task tasks, if any
Priority Policies are configured using the execution parameters pane.
Policy |
Effect |
---|---|
Parent First |
Every task with specified (i.e. not missing) priority forwards its priority recursively to every child that hasn’t a specified priority. If a task has its priority modified by more than a parent, the lowest priority among the parent ones will be set. If after this process there are still tasks with not specified priority, this will be considered as “0”. |
Priority First |
Every task forwards backwards its priority recursively to every parent that has a lower priority (not specified priority is considered as “0”). If a task has its priority modified by more than a child, the highest priority will be set. |
Runtime Variables Tasks need to be executed alone without any task in parallel to prevent unpredictable situations. Therefore, priorities of Runtime Variables Tasks and connected tasks are modified in order to compute these tasks first.
In particular, the modifications performed are:
To every Runtime Variables Task a different value of priority, greater than the maximum priority of any other task in the flow, is assigned. If multiple Runtime Variables Tasks are present, each task will have different values, according to the order between priorities originally set to them. This will ensure that Runtime Variables task with the highest original priority will be computed first, and every Runtime Variables task will be computed alone without any other task in parallel at the same time.
Every Runtime Variables task forwards backwards its new priority value to every parent recursively. If a task’s priority will be modified by more than a Runtime Variables task, the highest priority value is chosen.
If an Import From Task that has the option process set to
__this__
will have its priority modified by a Runtime Variables Tasks, it will forward backwards this new value also to task set in option task and its parents recursively.
At the end, the Import From Task that has option process set to __this__
modifies its priority in order to run after the task where it imports data from. This task is the one set in option task of the import itself.
The new value of priority for the Import from Task task will be set to (Minimum priority between task where data are imported from and all its parents recursively) - 1
.
.. this assignment takes into account the order of the previously assigned priorities.