|
|
(42 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
− | == Flow States ==
| + | '''Revised on:''' {{REVISIONMONTH1}}/{{REVISIONDAY}}/{{REVISIONYEAR}} by {{REVISIONUSER}} |
| | | |
− | [[File:Tf flow state diagram.png|150px|thumb|Flow state diagram]]
| + | __TOC__ |
− | | + | The page was moved to developers documentation: http://docs.openstack.org/developer/taskflow/states.html |
− | Flow starts its life in '''PENDING''' state. Then, when it is run, it transitions to '''RUNNING''' state. When all tasks are finished successfully, flow transitions to '''SUCCESS''' state. In case of failure, flow is reverted; when it happens, flow first transitions to '''REVERTING''' state, then revert happens, then flow transitions to REVERTED state, and then to '''FAILURE'''.
| |
− | | |
− | Transition from '''REVERTED''' to '''FAILURE''' state happens immediately. The main purpose of '''REVERTED''' state is notifications.
| |
− | | |
− | In '''RUNNING''' and '''REVERTING''' state flow can be interrupted. When this happens, flow transitions to '''INTERRUPTED''' state. From that state, flow can run on (transition back to '''RUNNING''') or be reverted (and transition to '''REVERTED''' state).
| |
− | | |
− | There is also special flow state, '''RESUMING''' (not shown on diagram). Any flow is in this state when it is resumed (loaded) from storage. '''RESUMING''' state is never saved to storage and exists only for notifications.
| |
− | | |
− | <br clear=all>
| |
− | | |
− | == Task States ==
| |
− | | |
− | [[File:Tf task state diagram.png|150px|thumb|Task state diagram]]
| |
− | | |
− | When task just added to the flow, it is in '''PENDING''' state, which means it can be executed or waits for all of task it depends on to complete. Then, when task is executed, it transitions to '''RUNNING''' state, and stays in it until its <code>execute()</code> method returns. When task is finished, it transitions to '''SUCCESS''' state if it was finished successfully, or to '''FAILURE''' state if not.
| |
− | | |
− | When flow is reverted, all tasks in '''PENDING''' state are left as is; tasks from all the other states transition to '''REVERTING''' state, and their <code>revert()</code> method is called. When that method returns, task transitions to '''REVERTED''' state, and then to '''PENDING'''.
| |
− | | |
− | Transition from '''RUNNING''' to '''REVERTING''' state happens when task was interrupted while running, and then revert occurs. This may take place e.g. when daemon is killed while running the task.
| |
− | | |
− | Transition from '''REVERTED''' to '''PENDING''' state happens immediately. The main purpose of '''REVERTED''' state is notifications.
| |
− | | |
− | <br clear=all>
| |
− | | |
− | == Appendix A: Diagrams ==
| |
− | | |
− | The diagrams were drawn using [http://plantuml.sourceforge.net/ PlantUML]. You can re-create them offline or online [http://www.plantuml.com/plantuml/form here].
| |
− | | |
− | Source for task state diagram:
| |
− | [*] --> PENDING
| |
− | PENDING --> RUNNING
| |
− | RUNNING --> SUCCESS
| |
− | RUNNING --> FAILURE
| |
− | RUNNING --> REVERTING
| |
− | SUCCESS --> REVERTING
| |
− | FAILURE --> REVERTING
| |
− | REVERTING -up-> REVERTED
| |
− | REVERTING -up-> FAILURE
| |
− | REVERTED -up-> PENDING
| |
− | | |
− | Source for flow state diagram:
| |
− | [*] --> PENDING
| |
− | PENDING --> RUNNING
| |
− | RUNNING --> SUCCESS
| |
− | RUNNING --> REVERTING : failure
| |
− | RUNNING --> INTERRUPTED
| |
− | REVERTING --> INTERRUPTED
| |
− | INTERRUPTED -l-> RUNNING
| |
− | INTERRUPTED --> REVERTING
| |
− | REVERTING --> REVERTED
| |
− | REVERTED --> FAILURE
| |