forked from qt-creator/qt-creator
TaskTree: Add docs for Workflow Policy
Transform it form TaskTree's description into WorkflowPolicy enum docs. Document global workflow policy elements and global workflowPolicy() function. Change-Id: I4af3f7ffa703bbb1a9370e2fd1f9242a68131295 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
This commit is contained in:
@@ -48,6 +48,114 @@ private:
|
||||
\brief The TaskItem class represents the basic element for composing nested tree structures.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\enum Tasking::WorkflowPolicy
|
||||
|
||||
This enum describes the possible behavior of the Group element when any group's child task
|
||||
finishes its execution. It's also used when the running Group is stopped.
|
||||
|
||||
\value StopOnError
|
||||
Default. Corresponds to the stopOnError global element.
|
||||
If any child task finishes with an error, the group stops and finishes with an error.
|
||||
If all child tasks finished with success, the group finishes with success.
|
||||
If a group is empty, it finishes with success.
|
||||
\value ContinueOnError
|
||||
Corresponds to the continueOnError global element.
|
||||
Similar to stopOnError, but in case any child finishes with an error,
|
||||
the execution continues until all tasks finish, and the group reports an error
|
||||
afterwards, even when some other tasks in the group finished with success.
|
||||
If all child tasks finish successfully, the group finishes with success.
|
||||
If a group is empty, it finishes with success.
|
||||
\value StopOnDone
|
||||
Corresponds to the stopOnDone global element.
|
||||
If any child task finishes with success, the group stops and finishes with success.
|
||||
If all child tasks finished with an error, the group finishes with an error.
|
||||
If a group is empty, it finishes with an error.
|
||||
\value ContinueOnDone
|
||||
Corresponds to the continueOnDone global element.
|
||||
Similar to stopOnDone, but in case any child finishes successfully,
|
||||
the execution continues until all tasks finish, and the group reports success
|
||||
afterwards, even when some other tasks in the group finished with an error.
|
||||
If all child tasks finish with an error, the group finishes with an error.
|
||||
If a group is empty, it finishes with an error.
|
||||
\value StopOnFinished
|
||||
Corresponds to the stopOnFinished global element.
|
||||
The group starts as many tasks as it can. When any task finishes,
|
||||
the group stops and reports the task's result.
|
||||
Useful only in parallel mode.
|
||||
In sequential mode, only the first task is started, and when finished,
|
||||
the group finishes too, so the other tasks are always skipped.
|
||||
If a group is empty, it finishes with an error.
|
||||
\value FinishAllAndDone
|
||||
Corresponds to the finishAllAndDone global element.
|
||||
The group executes all tasks and ignores their return results. When all
|
||||
tasks finished, the group finishes with success.
|
||||
If a group is empty, it finishes with success.
|
||||
\value FinishAllAndError
|
||||
Corresponds to the finishAllAndError global element.
|
||||
The group executes all tasks and ignores their return results. When all
|
||||
tasks finished, the group finishes with an error.
|
||||
If a group is empty, it finishes with an error.
|
||||
|
||||
Whenever a child task's result causes the Group to stop,
|
||||
i.e. in case of StopOnError, StopOnDone, or StopOnFinished policies,
|
||||
the Group stops the other running child tasks (if any - for example in parallel mode),
|
||||
and skips executing tasks it has not started yet (for example, in the sequential mode -
|
||||
those, that are placed after the failed task). Both stopping and skipping child tasks
|
||||
may happen when parallelLimit is used.
|
||||
|
||||
The table below summarizes the differences between various workflow policies:
|
||||
|
||||
\table
|
||||
\header
|
||||
\li \l WorkflowPolicy
|
||||
\li Executes all child tasks
|
||||
\li Result
|
||||
\li Result when the group is empty
|
||||
\row
|
||||
\li StopOnError
|
||||
\li Stops when any child task finished with an error and reports an error
|
||||
\li An error when at least one child task failed, success otherwise
|
||||
\li Success
|
||||
\row
|
||||
\li ContinueOnError
|
||||
\li Yes
|
||||
\li An error when at least one child task failed, success otherwise
|
||||
\li Success
|
||||
\row
|
||||
\li StopOnDone
|
||||
\li Stops when any child task finished with success and reports success
|
||||
\li Success when at least one child task succeeded, an error otherwise
|
||||
\li An error
|
||||
\row
|
||||
\li ContinueOnDone
|
||||
\li Yes
|
||||
\li Success when at least one child task succeeded, an error otherwise
|
||||
\li An error
|
||||
\row
|
||||
\li StopOnFinished
|
||||
\li Stops when any child task finished and reports child task's result
|
||||
\li Success or an error, depending on the finished child task's result
|
||||
\li An error
|
||||
\row
|
||||
\li FinishAllAndDone
|
||||
\li Yes
|
||||
\li Success
|
||||
\li Success
|
||||
\row
|
||||
\li FinishAllAndError
|
||||
\li Yes
|
||||
\li An error
|
||||
\li An error
|
||||
\endtable
|
||||
|
||||
If a child of a group is also a group, the child group runs its tasks according to its own
|
||||
workflow policy. When a parent group stops the running child group because
|
||||
of parent group's workflow policy, i.e. when the StopOnError, StopOnDone, or StopOnFinished
|
||||
policy was used for the parent, the child group's result is reported according to the
|
||||
\b Result column and to the \b {child group's workflow policy} row in the table above.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\variable sequential
|
||||
A convenient global group's element describing the sequential execution mode.
|
||||
@@ -74,6 +182,43 @@ private:
|
||||
\sa sequential, parallelLimit
|
||||
*/
|
||||
|
||||
/*!
|
||||
\variable stopOnError
|
||||
A convenient global group's element describing the StopOnError workflow policy.
|
||||
|
||||
This is the default workflow policy of the Group element.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\variable continueOnError
|
||||
A convenient global group's element describing the ContinueOnError workflow policy.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\variable stopOnDone
|
||||
A convenient global group's element describing the StopOnDone workflow policy.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\variable continueOnDone
|
||||
A convenient global group's element describing the ContinueOnDone workflow policy.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\variable stopOnFinished
|
||||
A convenient global group's element describing the StopOnFinished workflow policy.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\variable finishAllAndDone
|
||||
A convenient global group's element describing the FinishAllAndDone workflow policy.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\variable finishAllAndError
|
||||
A convenient global group's element describing the FinishAllAndError workflow policy.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\enum Tasking::TaskAction
|
||||
|
||||
@@ -244,6 +389,14 @@ TaskItem parallelLimit(int limit)
|
||||
return Group::parallelLimit(qMax(limit, 0));
|
||||
}
|
||||
|
||||
/*!
|
||||
Constructs a group's workflow policy element for a given \a policy.
|
||||
|
||||
For convenience, global elements may be used instead.
|
||||
|
||||
\sa stopOnError, continueOnError, stopOnDone, continueOnDone, stopOnFinished, finishAllAndDone,
|
||||
finishAllAndError, WorkflowPolicy
|
||||
*/
|
||||
TaskItem workflowPolicy(WorkflowPolicy policy)
|
||||
{
|
||||
return Group::workflowPolicy(policy);
|
||||
@@ -1332,77 +1485,11 @@ void TaskNode::invokeEndHandler(bool success)
|
||||
\section2 Workflow Policy
|
||||
|
||||
The workflow policy element in a Group specifies how the group should behave
|
||||
when any of its \e direct child's tasks finish:
|
||||
when any of its \e direct child's tasks finish. For a detailed description of possible
|
||||
policies, refer to WorkflowPolicy.
|
||||
|
||||
\table
|
||||
\header
|
||||
\li Workflow Policy
|
||||
\li Description
|
||||
\row
|
||||
\li stopOnError
|
||||
\li Default. If a task finishes with an error, the group:
|
||||
\list 1
|
||||
\li Stops the running tasks (if any - for example, in parallel
|
||||
mode).
|
||||
\li Skips executing tasks it has not started yet (for example, in the
|
||||
sequential mode - those, that are placed after the failed task).
|
||||
\li Immediately finishes with an error.
|
||||
\endlist
|
||||
If all child tasks finish successfully, the group finishes with success.
|
||||
\row
|
||||
\li continueOnError
|
||||
\li Similar to stopOnError, but in case any child finishes with
|
||||
an error, the execution continues until all tasks finish,
|
||||
and the group reports an error afterwards, even when some other
|
||||
tasks in group finished with success.
|
||||
If a task finishes with an error, the group:
|
||||
\list 1
|
||||
\li Continues executing the tasks that are running or have not
|
||||
started yet.
|
||||
\li Finishes with an error when all tasks finish.
|
||||
\endlist
|
||||
If all tasks finish successfully, the group finishes with success.
|
||||
\row
|
||||
\li stopOnDone
|
||||
\li If a task finishes with success, the group:
|
||||
\list 1
|
||||
\li Stops the running tasks (if any - for example, in parallel
|
||||
mode).
|
||||
\li Skips executing tasks it has not started yet (for example, in the
|
||||
sequential mode - those, that are placed after the successfully finished task).
|
||||
\li Immediately finishes with success.
|
||||
\endlist
|
||||
If all tasks finish with an error, the group finishes with an error.
|
||||
\row
|
||||
\li continueOnDone
|
||||
\li Similar to stopOnDone, but in case any child finishes
|
||||
successfully, the execution continues until all tasks finish,
|
||||
and the group reports success afterwards, even when some other
|
||||
tasks in group finished with an error.
|
||||
If a task finishes with success, the group:
|
||||
\list 1
|
||||
\li Continues executing the tasks that are running or have not
|
||||
started yet.
|
||||
\li Finishes with success when all tasks finish.
|
||||
\endlist
|
||||
If all tasks finish with an error, the group finishes with an error.
|
||||
\row
|
||||
\li stopOnFinished
|
||||
\li The group starts as many tasks as it can. When a task finishes,
|
||||
the group stops and reports the task's result.
|
||||
Useful only in parallel mode.
|
||||
In sequential mode, only the first task is started, and when finished,
|
||||
the group finishes too, so the other tasks are ignored.
|
||||
\row
|
||||
\li finishAllAndDone
|
||||
\li The group executes all tasks and ignores their return state. When all
|
||||
tasks finish, the group finishes with success.
|
||||
\endtable
|
||||
|
||||
When a Group is empty, it finishes immediately with success,
|
||||
regardless of its workflow policy.
|
||||
If a child of a group is also a group, the child group
|
||||
runs its tasks according to its own workflow policy.
|
||||
If a child of a group is also a group, the child group runs its tasks
|
||||
according to its own workflow policy.
|
||||
|
||||
\section2 Storage
|
||||
|
||||
|
||||
Reference in New Issue
Block a user